1'use strict'; 2const common = require('../common'); 3 4// Check that cluster works perfectly for both `kill` and `disconnect` cases. 5// Also take into account that the `disconnect` event may be received after the 6// `exit` event. 7// https://github.com/nodejs/node/issues/3238 8 9const assert = require('assert'); 10const cluster = require('cluster'); 11 12if (cluster.isMaster) { 13 function forkWorker(action) { 14 const worker = cluster.fork({ action }); 15 worker.on('disconnect', common.mustCall(() => { 16 assert.strictEqual(worker.exitedAfterDisconnect, true); 17 })); 18 19 worker.on('exit', common.mustCall(() => { 20 assert.strictEqual(worker.exitedAfterDisconnect, true); 21 })); 22 } 23 24 forkWorker('disconnect'); 25 forkWorker('kill'); 26} else { 27 cluster.worker[process.env.action](); 28} 29