@@ -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 dual-stack support still works for cluster module |
13 | 12 | // when `ipv6Only` is not `true`. |
@@ -18,35 +17,37 @@ if (cluster.isMaster) { |
18 | 17 | const workers = []; |
19 | 18 | let address; |
20 | 19 |
|
21 | | - const countdown = new Countdown(WORKER_COUNT, () => { |
| 20 | + for (let i = 0; i < WORKER_COUNT; 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 | + if (!address) { |
| 26 | + address = workerAddress; |
| 27 | + } else { |
| 28 | + assert.strictEqual(address.addressType, workerAddress.addressType); |
| 29 | + assert.strictEqual(address.host, workerAddress.host); |
| 30 | + assert.strictEqual(address.port, workerAddress.port); |
| 31 | + } |
| 32 | + resolve(worker); |
| 33 | + })); |
| 34 | + }); |
| 35 | + |
| 36 | + workers.push(myWorker); |
| 37 | + } |
| 38 | + |
| 39 | + Promise.all(workers).then(common.mustCall((resolvedWorkers) => { |
22 | 40 | const socket = net.connect({ |
23 | 41 | port: address.port, |
24 | 42 | host: '0.0.0.0', |
25 | 43 | }, common.mustCall(() => { |
26 | 44 | socket.destroy(); |
27 | | - workers.forEach((worker) => { |
28 | | - worker.disconnect(); |
| 45 | + resolvedWorkers.forEach((resolvedWorker) => { |
| 46 | + resolvedWorker.disconnect(); |
29 | 47 | }); |
30 | 48 | })); |
31 | 49 | socket.on('error', common.mustNotCall()); |
32 | | - }); |
33 | | - |
34 | | - for (let i = 0; i < WORKER_COUNT; i += 1) { |
35 | | - const worker = cluster.fork().on('exit', common.mustCall((statusCode) => { |
36 | | - assert.strictEqual(statusCode, 0); |
37 | | - })).on('listening', common.mustCall((workerAddress) => { |
38 | | - if (!address) { |
39 | | - address = workerAddress; |
40 | | - } else { |
41 | | - assert.strictEqual(address.addressType, workerAddress.addressType); |
42 | | - assert.strictEqual(address.host, workerAddress.host); |
43 | | - assert.strictEqual(address.port, workerAddress.port); |
44 | | - } |
45 | | - countdown.dec(); |
46 | | - })); |
47 | | - |
48 | | - workers[i] = worker; |
49 | | - } |
| 50 | + })); |
50 | 51 | } else { |
51 | 52 | net.createServer().listen({ |
52 | 53 | host, |
|