diff --git a/test/parallel/test-cluster-worker-disconnect-on-error.js b/test/parallel/test-cluster-worker-disconnect-on-error.js index e52f7ddee60993..70d6a4df2a950c 100644 --- a/test/parallel/test-cluster-worker-disconnect-on-error.js +++ b/test/parallel/test-cluster-worker-disconnect-on-error.js @@ -2,19 +2,32 @@ const common = require('../common'); const http = require('http'); const cluster = require('cluster'); +const assert = require('assert'); cluster.schedulingPolicy = cluster.SCHED_NONE; const server = http.createServer(); if (cluster.isMaster) { - server.listen(common.PORT); - const worker = cluster.fork(); + let worker; + + server.listen(0, common.mustCall((error) => { + assert.ifError(error); + assert(worker); + + worker.send({port: server.address().port}); + })); + + worker = cluster.fork(); worker.on('exit', common.mustCall(() => { server.close(); })); } else { - server.listen(common.PORT); - server.on('error', common.mustCall((e) => { - cluster.worker.disconnect(); + process.on('message', common.mustCall((msg) => { + assert(msg.port); + + server.listen(msg.port); + server.on('error', common.mustCall((e) => { + cluster.worker.disconnect(); + })); })); }