mirror of
https://github.com/nodejs/node.git
synced 2025-05-06 13:09:42 +00:00

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 <rtrott@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
40 lines
871 B
JavaScript
40 lines
871 B
JavaScript
'use strict';
|
|
var common = require('../common');
|
|
var assert = require('assert');
|
|
var net = require('net');
|
|
|
|
var server = net.createServer(function(c) {
|
|
c.write('hello');
|
|
c.unref();
|
|
});
|
|
server.listen(common.PORT);
|
|
server.unref();
|
|
|
|
var timedout = false;
|
|
var connections = 0;
|
|
var sockets = [];
|
|
var delays = [8, 5, 3, 6, 2, 4];
|
|
|
|
delays.forEach(function(T) {
|
|
var socket = net.createConnection(common.PORT, 'localhost');
|
|
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();
|
|
});
|
|
}
|
|
});
|
|
|
|
sockets.push([socket, T]);
|
|
});
|
|
|
|
process.on('exit', function() {
|
|
assert.strictEqual(timedout, false,
|
|
'Socket timeout should not hold loop open');
|
|
});
|