Skip to content

Commit

Permalink
test: harden test-child-process-fork-regr-gh-2847
Browse files Browse the repository at this point in the history
test-child-process-fork-regr-gh-2847 could fail depending
on timing and how messages were packed into tcp packets.
If all of the requests fit into one packet then the test
worked otherwise, otherwise errors could occur.  This PR
modifies the test to be tolerant while still validating that
some of the connection can be made succesfully

Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: #3459
  • Loading branch information
mhdawson authored and jasnell committed Oct 29, 2015
1 parent 3bb4437 commit c162303
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion test/parallel/test-child-process-fork-regr-gh-2847.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ const cluster = require('cluster');
const net = require('net');
const util = require('util');

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 @@ -25,6 +28,21 @@ 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 @@ -36,5 +54,9 @@ var server = net.createServer(function(s) {

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

0 comments on commit c162303

Please sign in to comment.