Skip to content

Commit

Permalink
test: fix child-process-fork-regr-nodejsgh-2847
Browse files Browse the repository at this point in the history
The test would sometimes time out on some platforms. Take the initial
version of the test and instead of sending 100 handles, just send 2.
It still fails when run with the code before the change was introduced
and passes afterwards.

Remove test from parallel.status.

PR-URL: nodejs#5121
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Fixes: nodejs#3635
  • Loading branch information
santigimeno authored and Trott committed Feb 10, 2016
1 parent 1693349 commit 4e4b260
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 33 deletions.
1 change: 0 additions & 1 deletion test/parallel/parallel.status
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ test-tick-processor : PASS,FLAKY

[$system==linux]
test-tick-processor : PASS,FLAKY
test-child-process-fork-regr-gh-2847 : PASS,FLAKY

[$system==macos]

Expand Down
35 changes: 3 additions & 32 deletions test/parallel/test-child-process-fork-regr-gh-2847.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ const assert = require('assert');
const cluster = require('cluster');
const net = require('net');

var connectcount = 0;
var sendcount = 0;

if (!cluster.isMaster) {
// Exit on first received handle to leave the queue non-empty in master
process.on('message', function() {
Expand All @@ -18,13 +15,6 @@ if (!cluster.isMaster) {
}

var server = net.createServer(function(s) {
if (common.isWindows) {
s.on('error', function(err) {
// Prevent possible ECONNRESET errors from popping up
if (err.code !== 'ECONNRESET' || sendcount === 0)
throw err;
});
}
setTimeout(function() {
s.destroy();
}, 100);
Expand All @@ -34,21 +24,6 @@ var server = net.createServer(function(s) {
function send(callback) {
var s = net.connect(common.PORT, function() {
worker.send({}, s, callback);
connectcount++;
});

// Errors can happen if the connections
// are still happening while the server has been closed.
// This can happen depending on how the messages are
// bundled into packets. If they all make it into the first
// one then no errors will occur, otherwise the server
// may have been closed by the time the later ones make
// it to the server side.
// We ignore any errors that occur after some connections
// get through
s.on('error', function(err) {
if (connectcount < 3)
console.log(err);
});
}

Expand All @@ -58,11 +33,7 @@ var server = net.createServer(function(s) {
server.close();
}));

// Queue up several handles, to make `process.disconnect()` wait
for (var i = 0; i < 100; i++)
send(function(err) {
if (err && sendcount < 3)
console.log(err);
sendcount++;
});
// Send 2 handles to make `process.disconnect()` wait
send();
send();
});

0 comments on commit 4e4b260

Please sign in to comment.