diff options
author | Rich Trott <rtrott@gmail.com> | 2019-09-24 23:00:23 -0700 |
---|---|---|
committer | Michaƫl Zasso <targos@protonmail.com> | 2019-10-01 14:41:30 +0200 |
commit | 2a6b7b0476692f11f5732384b7e952b9b6dc424e (patch) | |
tree | 8e96eac3f6673d84ddb3ce4e73664ba1ea17c5d2 | |
parent | 298d92785c9363a01d42374a6de65fc02558653c (diff) | |
download | node-new-2a6b7b0476692f11f5732384b7e952b9b6dc424e.tar.gz |
test: fix flaky test-cluster-net-listen-ipv6only-none
test-cluster-net-listen-ipv6only-none was using port `0` for an
IPv6-only operation and assuming that the operating system would supply
a port that was also available in IPv4. However, CI results seem to
indicate that a port can be supplied that is in use by IPv4 but
available to IPv6, resulting in the test failing. Use `common.PORT` to
avoid this issue.
Fixes: https://github.com/nodejs/node/issues/29679
PR-URL: https://github.com/nodejs/node/pull/29681
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
-rw-r--r-- | test/sequential/test-cluster-net-listen-ipv6only-none.js (renamed from test/parallel/test-cluster-net-listen-ipv6only-none.js) | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/test/parallel/test-cluster-net-listen-ipv6only-none.js b/test/sequential/test-cluster-net-listen-ipv6only-none.js index 401afbc035..d520b7f25c 100644 --- a/test/parallel/test-cluster-net-listen-ipv6only-none.js +++ b/test/sequential/test-cluster-net-listen-ipv6only-none.js @@ -17,13 +17,16 @@ const WORKER_ACCOUNT = 3; if (cluster.isMaster) { const workers = new Map(); - let address; const countdown = new Countdown(WORKER_ACCOUNT, () => { - // Make sure the `ipv6Only` option works. + // Make sure the `ipv6Only` option works. This is the part of the test that + // requires the whole test to use `common.PORT` rather than port `0`. If it + // used port `0` instead, then the operating system can supply a port that + // is available for the IPv6 interface but in use by the IPv4 interface. + // Refs: https://github.com/nodejs/node/issues/29679 const server = net.createServer().listen({ host: '0.0.0.0', - port: address.port, + port: common.PORT, }, common.mustCall(() => { // Exit. server.close(); @@ -37,13 +40,9 @@ if (cluster.isMaster) { const worker = cluster.fork().on('exit', common.mustCall((statusCode) => { assert.strictEqual(statusCode, 0); })).on('listening', common.mustCall((workerAddress) => { - if (!address) { - address = workerAddress; - } else { - assert.strictEqual(address.addressType, workerAddress.addressType); - assert.strictEqual(address.host, workerAddress.host); - assert.strictEqual(address.port, workerAddress.port); - } + assert.strictEqual(workerAddress.addressType, 6); + assert.strictEqual(workerAddress.address, host); + assert.strictEqual(workerAddress.port, common.PORT); countdown.dec(); })); @@ -52,7 +51,7 @@ if (cluster.isMaster) { } else { net.createServer().listen({ host, - port: 0, + port: common.PORT, ipv6Only: true, }, common.mustCall()); } |