|
|
|
'use strict';
|
|
|
|
const common = require('../common');
|
|
|
|
const cluster = require('cluster');
|
|
|
|
const assert = require('assert');
|
|
|
|
|
|
|
|
if (cluster.isMaster) {
|
|
|
|
const worker = cluster.fork();
|
|
|
|
|
|
|
|
assert.strictEqual(worker.isConnected(), true);
|
|
|
|
|
|
|
|
worker.on('disconnect', common.mustCall(() => {
|
|
|
|
assert.strictEqual(worker.isConnected(), false);
|
|
|
|
}));
|
|
|
|
|
|
|
|
worker.on('message', function(msg) {
|
|
|
|
if (msg === 'readyToDisconnect') {
|
|
|
|
worker.disconnect();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
function assertNotConnected() {
|
|
|
|
assert.strictEqual(cluster.worker.isConnected(), false);
|
|
|
|
}
|
|
|
|
|
|
|
|
assert.strictEqual(cluster.worker.isConnected(), true);
|
|
|
|
cluster.worker.on('disconnect', common.mustCall(assertNotConnected));
|
|
|
|
cluster.worker.process.on('disconnect', common.mustCall(assertNotConnected));
|
|
|
|
|
|
|
|
process.send('readyToDisconnect');
|
|
|
|
}
|