mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
f29762f4dd
Enable linting for the test directory. A number of changes was made so all tests conform the current rules used by lib and src directories. The only exception for tests is that unreachable (dead) code is allowed. test-fs-non-number-arguments-throw had to be excluded from the changes because of a weird issue on Windows CI. PR-URL: https://github.com/nodejs/io.js/pull/1721 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
78 lines
1.6 KiB
JavaScript
78 lines
1.6 KiB
JavaScript
'use strict';
|
|
var common = require('../common');
|
|
var assert = require('assert');
|
|
var cluster = require('cluster');
|
|
|
|
if (cluster.isWorker) {
|
|
|
|
// keep the worker alive
|
|
var http = require('http');
|
|
http.Server().listen(common.PORT, '127.0.0.1');
|
|
|
|
} else if (process.argv[2] === 'cluster') {
|
|
|
|
var worker = cluster.fork();
|
|
|
|
// send PID info to testcase process
|
|
process.send({
|
|
pid: worker.process.pid
|
|
});
|
|
|
|
// terminate the cluster process
|
|
worker.once('listening', function() {
|
|
setTimeout(function() {
|
|
process.exit(0);
|
|
}, 1000);
|
|
});
|
|
|
|
} else {
|
|
|
|
// This is the testcase
|
|
var fork = require('child_process').fork;
|
|
|
|
// is process alive helper
|
|
var isAlive = function(pid) {
|
|
try {
|
|
//this will throw an error if the process is dead
|
|
process.kill(pid, 0);
|
|
|
|
return true;
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
};
|
|
|
|
// Spawn a cluster process
|
|
var master = fork(process.argv[1], ['cluster']);
|
|
|
|
// get pid info
|
|
var pid = null;
|
|
master.once('message', function(data) {
|
|
pid = data.pid;
|
|
});
|
|
|
|
// When master is dead
|
|
var alive = true;
|
|
master.on('exit', function(code) {
|
|
|
|
// make sure that the master died by purpose
|
|
assert.equal(code, 0);
|
|
|
|
// check worker process status
|
|
setTimeout(function() {
|
|
alive = isAlive(pid);
|
|
}, 200);
|
|
});
|
|
|
|
process.once('exit', function() {
|
|
// cleanup: kill the worker if alive
|
|
if (alive) {
|
|
process.kill(pid);
|
|
}
|
|
|
|
assert.equal(typeof pid, 'number', 'did not get worker pid info');
|
|
assert.equal(alive, false, 'worker was alive after master died');
|
|
});
|
|
|
|
}
|