test: fix flaky http2-session-unref

It's possible for the connections to take too long and since the server
is already unrefed, the process will just exit. Instead adjust the test
so that server unref only happens after all sessions have been
successfuly established and unrefed. That still tests the same condition
but will not fail under load.

PR-URL: https://github.com/nodejs/node/pull/20772
Fixes: https://github.com/nodejs/node/issues/20705
Fixes: https://github.com/nodejs/node/issues/20750
Fixes: https://github.com/nodejs/node/issues/20850
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Anatoli Papirovski 2018-05-21 11:42:32 +04:00
parent b11e19e8ee
commit ef9d0ae6f2
No known key found for this signature in database
GPG Key ID: 614E2E1ABEB4B2C0

View File

@ -9,16 +9,20 @@ const common = require('../common');
if (!common.hasCrypto)
common.skip('missing crypto');
const http2 = require('http2');
const Countdown = require('../common/countdown');
const makeDuplexPair = require('../common/duplexpair');
const server = http2.createServer();
const { clientSide, serverSide } = makeDuplexPair();
const counter = new Countdown(3, () => server.unref());
// 'session' event should be emitted 3 times:
// - the vanilla client
// - the destroyed client
// - manual 'connection' event emission with generic Duplex stream
server.on('session', common.mustCallAtLeast((session) => {
counter.dec();
session.unref();
}, 3));
@ -54,4 +58,3 @@ server.listen(0, common.mustCall(() => {
}
}));
server.emit('connection', serverSide);
server.unref();