Skip to content

Commit

Permalink
test: fix net-socket-timeout-unref flakiness
Browse files Browse the repository at this point in the history
From time to time this test is failing in OS X because at least one of
the connections takes quite a long time (around 5 seconds) causing some
of the timers may fire before the test exited. To solve this, wait for
all the connections to be established before setting the timeouts and
unrefing the sockets.

PR-URL: #4772
Reviewed-By: Rich Trott <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: James M Snell <[email protected]>
  • Loading branch information
santigimeno authored and Myles Borins committed Feb 18, 2016
1 parent 9e6f363 commit 2a3a431
Showing 1 changed file with 17 additions and 6 deletions.
23 changes: 17 additions & 6 deletions test/parallel/test-net-socket-timeout-unref.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,26 @@ server.listen(common.PORT);
server.unref();

var timedout = false;
var connections = 0;
var sockets = [];
var delays = [8, 5, 3, 6, 2, 4];

[8, 5, 3, 6, 2, 4].forEach(function(T) {
delays.forEach(function(T) {
var socket = net.createConnection(common.PORT, 'localhost');
socket.setTimeout(T * 1000, function() {
console.log(process._getActiveHandles());
timedout = true;
socket.destroy();
socket.on('connect', function() {
if (++connections === delays.length) {
sockets.forEach(function(s) {
s[0].setTimeout(s[1] * 1000, function() {
timedout = true;
s[0].destroy();
});

s[0].unref();
});
}
});
socket.unref();

sockets.push([socket, T]);
});

process.on('exit', function() {
Expand Down

0 comments on commit 2a3a431

Please sign in to comment.