Browse Source

test: fix child-process-fork-regr-gh-2847

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: https://github.com/nodejs/node/pull/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: https://github.com/nodejs/node/issues/3635
v4.x
Santiago Gimeno 9 years ago
committed by Myles Borins
parent
commit
c3c9dbee75
  1. 1
      test/parallel/parallel.status
  2. 35
      test/parallel/test-child-process-fork-regr-gh-2847.js

1
test/parallel/parallel.status

@ -13,7 +13,6 @@ test-tick-processor : PASS,FLAKY
[$system==linux] [$system==linux]
test-tick-processor : PASS,FLAKY test-tick-processor : PASS,FLAKY
test-child-process-fork-regr-gh-2847 : PASS,FLAKY
[$system==macos] [$system==macos]

35
test/parallel/test-child-process-fork-regr-gh-2847.js

@ -6,9 +6,6 @@ const assert = require('assert');
const cluster = require('cluster'); const cluster = require('cluster');
const net = require('net'); const net = require('net');
var connectcount = 0;
var sendcount = 0;
if (!cluster.isMaster) { if (!cluster.isMaster) {
// Exit on first received handle to leave the queue non-empty in master // Exit on first received handle to leave the queue non-empty in master
process.on('message', function() { process.on('message', function() {
@ -18,13 +15,6 @@ if (!cluster.isMaster) {
} }
var server = net.createServer(function(s) { 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() { setTimeout(function() {
s.destroy(); s.destroy();
}, 100); }, 100);
@ -34,21 +24,6 @@ var server = net.createServer(function(s) {
function send(callback) { function send(callback) {
var s = net.connect(common.PORT, function() { var s = net.connect(common.PORT, function() {
worker.send({}, s, callback); 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);
}); });
} }
@ -58,11 +33,7 @@ var server = net.createServer(function(s) {
server.close(); server.close();
})); }));
// Queue up several handles, to make `process.disconnect()` wait // Send 2 handles to make `process.disconnect()` wait
for (var i = 0; i < 100; i++) send();
send(function(err) { send();
if (err && sendcount < 3)
console.log(err);
sendcount++;
});
}); });

Loading…
Cancel
Save