ESLint 4.x has stricter linting than previous versions. We are currently using the legacy indentation rules in the test directory. This commit changes the indentation of files to comply with the stricter 4.x linting and enable stricter linting in the test directory. Backport-PR-URL: https://github.com/nodejs/node/pull/14835 PR-URL: https://github.com/nodejs/node/pull/14431 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com> Reviewed-By: Trevor Norris <trev.norris@gmail.com>
61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
'use strict';
|
|
// Test that errors propagated from cluster workers are properly
|
|
// received in their master. Creates an EADDRINUSE condition by forking
|
|
// a process in child cluster and propagates the error to the master.
|
|
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const cluster = require('cluster');
|
|
const fork = require('child_process').fork;
|
|
const fs = require('fs');
|
|
const net = require('net');
|
|
|
|
if (cluster.isMaster) {
|
|
const worker = cluster.fork();
|
|
|
|
// makes sure master is able to fork the worker
|
|
cluster.on('fork', common.mustCall());
|
|
|
|
// makes sure the worker is ready
|
|
worker.on('online', common.mustCall());
|
|
|
|
worker.on('message', common.mustCall(function(err) {
|
|
// disconnect first, so that we will not leave zombies
|
|
worker.disconnect();
|
|
|
|
console.log(err);
|
|
assert.strictEqual('EADDRINUSE', err.code);
|
|
}));
|
|
|
|
process.on('exit', function() {
|
|
console.log('master exited');
|
|
try {
|
|
fs.unlinkSync(common.PIPE);
|
|
} catch (e) {
|
|
}
|
|
});
|
|
|
|
} else {
|
|
common.refreshTmpDir();
|
|
const cp = fork(`${common.fixturesDir}/listen-on-socket-and-exit.js`,
|
|
{ stdio: 'inherit' });
|
|
|
|
// message from the child indicates it's ready and listening
|
|
cp.on('message', common.mustCall(function() {
|
|
const server = net.createServer().listen(common.PIPE, function() {
|
|
// message child process so that it can exit
|
|
cp.send('end');
|
|
// inform master about the unexpected situation
|
|
process.send('PIPE should have been in use.');
|
|
});
|
|
|
|
server.on('error', function(err) {
|
|
console.log('parent error, ending');
|
|
// message to child process tells it to exit
|
|
cp.send('end');
|
|
// propagate error to parent
|
|
process.send(err);
|
|
});
|
|
|
|
}));
|
|
}
|