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 Mar 2, 2016
1 parent c490464 commit 962c0e4
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 962c0e4

Please sign in to comment.