node/test/parallel/test-cluster-disconnect-race.js
Brian White fd551c3f29 test: fix flaky cluster-disconnect-race
On single core Windows systems, process.send() would cause an
EPIPE because of the ordering of the IPC channel disconnect and
the process.send().

The test was originally only relevant for non-Windows platforms,
so this commit merely skips the test on Windows.

Fixes: https://github.com/nodejs/node/issues/4450
PR-URL: https://github.com/nodejs/node/pull/4457
Reviewed-By: Rich Trott <rtrott@gmail.com>
2015-12-29 00:47:24 -05:00

40 lines
949 B
JavaScript

'use strict';
// This code triggers an AssertionError on Linux in Node.js 5.3.0 and earlier.
// Ref: https://github.com/nodejs/node/issues/4205
const common = require('../common');
const assert = require('assert');
const net = require('net');
const cluster = require('cluster');
if (common.isWindows) {
console.log('1..0 # Skipped: This test does not apply to Windows.');
return;
}
cluster.schedulingPolicy = cluster.SCHED_NONE;
if (cluster.isMaster) {
var worker1, worker2;
worker1 = cluster.fork();
worker1.on('message', common.mustCall(function() {
worker2 = cluster.fork();
worker1.disconnect();
worker2.on('online', common.mustCall(worker2.disconnect));
}));
cluster.on('exit', common.mustCall(function(worker, code) {
assert.strictEqual(code, 0, 'worker exited with error');
}, 2));
return;
}
var server = net.createServer();
server.listen(common.PORT, function() {
process.send('listening');
});