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 <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
santigimeno authored and jasnell committed Feb 4, 2016
1 parent ac0d92e commit 538813c
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 538813c

Please sign in to comment.