From 09917c99d87ee547e8e4d3e7ada55a008ac3a48c Mon Sep 17 00:00:00 2001 From: Santiago Gimeno Date: Sat, 16 Jan 2016 01:54:44 +0100 Subject: [PATCH] test: fix `net-socket-timeout-unref` flakiness 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: https://github.com/nodejs/node/pull/4772 Reviewed-By: Rich Trott Reviewed-By: Colin Ihrig Reviewed-By: James M Snell --- .../parallel/test-net-socket-timeout-unref.js | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/test/parallel/test-net-socket-timeout-unref.js b/test/parallel/test-net-socket-timeout-unref.js index c7e651afef015f..b7ed0ec344a996 100644 --- a/test/parallel/test-net-socket-timeout-unref.js +++ b/test/parallel/test-net-socket-timeout-unref.js @@ -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() {