test: fix flaky test-http2-session-timeout
Increase server timeout, reduce frequency of calls and unbind timeout after runs are done in order to avoid race conditions. Temporarily moved to sequential. Fixes: https://github.com/nodejs/node/issues/15326 PR-URL: https://github.com/nodejs/node/pull/15338 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
This commit is contained in:
parent
a4e923f5c1
commit
de51717c3e
@ -7,20 +7,22 @@ if (!common.hasCrypto)
|
|||||||
const h2 = require('http2');
|
const h2 = require('http2');
|
||||||
|
|
||||||
const serverTimeout = common.platformTimeout(200);
|
const serverTimeout = common.platformTimeout(200);
|
||||||
const callTimeout = common.platformTimeout(10);
|
const callTimeout = common.platformTimeout(20);
|
||||||
|
const minRuns = Math.ceil(serverTimeout / callTimeout) * 2;
|
||||||
|
const mustNotCall = common.mustNotCall();
|
||||||
|
|
||||||
const server = h2.createServer();
|
const server = h2.createServer();
|
||||||
server.timeout = serverTimeout;
|
server.timeout = serverTimeout;
|
||||||
|
|
||||||
server.on('request', (req, res) => res.end());
|
server.on('request', (req, res) => res.end());
|
||||||
server.on('timeout', common.mustNotCall());
|
server.on('timeout', mustNotCall);
|
||||||
|
|
||||||
server.listen(0, common.mustCall(() => {
|
server.listen(0, common.mustCall(() => {
|
||||||
const port = server.address().port;
|
const port = server.address().port;
|
||||||
|
|
||||||
const url = `http://localhost:${port}`;
|
const url = `http://localhost:${port}`;
|
||||||
const client = h2.connect(url);
|
const client = h2.connect(url);
|
||||||
makeReq(40);
|
makeReq(minRuns);
|
||||||
|
|
||||||
function makeReq(attempts) {
|
function makeReq(attempts) {
|
||||||
const request = client.request({
|
const request = client.request({
|
||||||
@ -29,13 +31,17 @@ server.listen(0, common.mustCall(() => {
|
|||||||
':scheme': 'http',
|
':scheme': 'http',
|
||||||
':authority': `localhost:${port}`,
|
':authority': `localhost:${port}`,
|
||||||
});
|
});
|
||||||
|
request.resume();
|
||||||
request.end();
|
request.end();
|
||||||
|
|
||||||
if (attempts) {
|
request.on('end', () => {
|
||||||
setTimeout(() => makeReq(attempts - 1), callTimeout);
|
if (attempts) {
|
||||||
} else {
|
setTimeout(() => makeReq(attempts - 1), callTimeout);
|
||||||
server.close();
|
} else {
|
||||||
client.destroy();
|
server.removeListener('timeout', mustNotCall);
|
||||||
}
|
client.destroy();
|
||||||
|
server.close();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}));
|
}));
|
Loading…
x
Reference in New Issue
Block a user