| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -7,7 +7,6 @@ if (!common.hasIPv6) | |||
| 7 | 7 | const assert = require('assert'); | |
| 8 | 8 | const cluster = require('cluster'); | |
| 9 | 9 | const net = require('net'); | |
| 10 | - const Countdown = require('../common/countdown'); | ||
| 11 | 10 | ||
| 12 | 11 | // This test ensures that the `ipv6Only` option in `net.Server.listen()` | |
| 13 | 12 | // works as expected when we use cluster with `SCHED_NONE` schedulingPolicy. | |
@@ -18,7 +17,22 @@ const WORKER_ACCOUNT = 3; | |||
| 18 | 17 | if (cluster.isMaster) { | |
| 19 | 18 | const workers = []; | |
| 20 | 19 | ||
| 21 | - const countdown = new Countdown(WORKER_ACCOUNT, () => { | ||
| 20 | + for (let i = 0; i < WORKER_ACCOUNT; i += 1) { | ||
| 21 | + const myWorker = new Promise((resolve) => { | ||
| 22 | + const worker = cluster.fork().on('exit', common.mustCall((statusCode) => { | ||
| 23 | + assert.strictEqual(statusCode, 0); | ||
| 24 | + })).on('listening', common.mustCall((workerAddress) => { | ||
| 25 | + assert.strictEqual(workerAddress.addressType, 6); | ||
| 26 | + assert.strictEqual(workerAddress.address, host); | ||
| 27 | + assert.strictEqual(workerAddress.port, common.PORT); | ||
| 28 | + resolve(worker); | ||
| 29 | + })); | ||
| 30 | + }); | ||
| 31 | + | ||
| 32 | + workers.push(myWorker); | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + Promise.all(workers).then(common.mustCall((resolvedWorkers) => { | ||
| 22 | 36 | // Make sure the `ipv6Only` option works. This is the part of the test that | |
| 23 | 37 | // requires the whole test to use `common.PORT` rather than port `0`. If it | |
| 24 | 38 | // used port `0` instead, then the operating system can supply a port that | |
@@ -30,24 +44,11 @@ if (cluster.isMaster) { | |||
| 30 | 44 | }, common.mustCall(() => { | |
| 31 | 45 | // Exit. | |
| 32 | 46 | server.close(); | |
| 33 | - workers.forEach((worker) => { | ||
| 34 | - worker.disconnect(); | ||
| 47 | + resolvedWorkers.forEach((resolvedWorker) => { | ||
| 48 | + resolvedWorker.disconnect(); | ||
| 35 | 49 | }); | |
| 36 | 50 | })); | |
| 37 | - }); | ||
| 38 | - | ||
| 39 | - for (let i = 0; i < WORKER_ACCOUNT; i += 1) { | ||
| 40 | - const worker = cluster.fork().on('exit', common.mustCall((statusCode) => { | ||
| 41 | - assert.strictEqual(statusCode, 0); | ||
| 42 | - })).on('listening', common.mustCall((workerAddress) => { | ||
| 43 | - assert.strictEqual(workerAddress.addressType, 6); | ||
| 44 | - assert.strictEqual(workerAddress.address, host); | ||
| 45 | - assert.strictEqual(workerAddress.port, common.PORT); | ||
| 46 | - countdown.dec(); | ||
| 47 | - })); | ||
| 48 | - | ||
| 49 | - workers[i] = worker; | ||
| 50 | - } | ||
| 51 | + })); | ||
| 51 | 52 | } else { | |
| 52 | 53 | net.createServer().listen({ | |
| 53 | 54 | host, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -7,7 +7,6 @@ if (!common.hasIPv6) | |||
| 7 | 7 | const assert = require('assert'); | |
| 8 | 8 | const cluster = require('cluster'); | |
| 9 | 9 | const net = require('net'); | |
| 10 | - const Countdown = require('../common/countdown'); | ||
| 11 | 10 | ||
| 12 | 11 | // This test ensures that the `ipv6Only` option in `net.Server.listen()` | |
| 13 | 12 | // works as expected when we use cluster with `SCHED_RR` schedulingPolicy. | |
@@ -19,34 +18,37 @@ if (cluster.isMaster) { | |||
| 19 | 18 | const workers = []; | |
| 20 | 19 | let address; | |
| 21 | 20 | ||
| 22 | - const countdown = new Countdown(WORKER_ACCOUNT, () => { | ||
| 23 | - // Make sure the `ipv6Only` option works. | ||
| 21 | + for (let i = 0; i < WORKER_ACCOUNT; i += 1) { | ||
| 22 | + const myWorker = new Promise((resolve) => { | ||
| 23 | + const worker = cluster.fork().on('exit', common.mustCall((statusCode) => { | ||
| 24 | + assert.strictEqual(statusCode, 0); | ||
| 25 | + })).on('listening', common.mustCall((workerAddress) => { | ||
| 26 | + if (!address) { | ||
| 27 | + address = workerAddress; | ||
| 28 | + } else { | ||
| 29 | + assert.deepStrictEqual(workerAddress, address); | ||
| 30 | + } | ||
| 31 | + resolve(worker); | ||
| 32 | + })); | ||
| 33 | + }); | ||
| 34 | + | ||
| 35 | + workers.push(myWorker); | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + Promise.all(workers).then(common.mustCall((resolvedWorkers) => { | ||
| 39 | + // Make sure the `ipv6Only` option works. Should be able to use the port on | ||
| 40 | + // IPv4. | ||
| 24 | 41 | const server = net.createServer().listen({ | |
| 25 | 42 | host: '0.0.0.0', | |
| 26 | 43 | port: address.port, | |
| 27 | 44 | }, common.mustCall(() => { | |
| 28 | 45 | // Exit. | |
| 29 | 46 | server.close(); | |
| 30 | - workers.forEach((worker) => { | ||
| 31 | - worker.disconnect(); | ||
| 47 | + resolvedWorkers.forEach((resolvedWorker) => { | ||
| 48 | + resolvedWorker.disconnect(); | ||
| 32 | 49 | }); | |
| 33 | 50 | })); | |
| 34 | - }); | ||
| 35 | - | ||
| 36 | - for (let i = 0; i < WORKER_ACCOUNT; i += 1) { | ||
| 37 | - const worker = cluster.fork().on('exit', common.mustCall((statusCode) => { | ||
| 38 | - assert.strictEqual(statusCode, 0); | ||
| 39 | - })).on('listening', common.mustCall((workerAddress) => { | ||
| 40 | - if (!address) { | ||
| 41 | - address = workerAddress; | ||
| 42 | - } else { | ||
| 43 | - assert.deepStrictEqual(workerAddress, address); | ||
| 44 | - } | ||
| 45 | - countdown.dec(); | ||
| 46 | - })); | ||
| 47 | - | ||
| 48 | - workers[i] = worker; | ||
| 49 | - } | ||
| 51 | + })); | ||
| 50 | 52 | } else { | |
| 51 | 53 | // As the cluster member has the potential to grab any port | |
| 52 | 54 | // from the environment, this can cause collision when master | |
| Back | FazBrowse Home | New Git URL |
0 commit comments