diff options
author | koichik <koichik@improvement.jp> | 2012-01-22 23:23:04 +0900 |
---|---|---|
committer | koichik <koichik@improvement.jp> | 2012-01-22 23:23:04 +0900 |
commit | 827180097c45d2ce84d798ca141bb3a170a20df9 (patch) | |
tree | 81b6f65f6fc3204dfe1195c0fac844f9037b4d03 | |
parent | 93298afc4e2835e5b526ab871922018999e98bcb (diff) | |
download | node-new-827180097c45d2ce84d798ca141bb3a170a20df9.tar.gz |
test: fix test/simple/test-net-server-max-connections.js is racey
Fixes #1333.
-rw-r--r-- | test/simple/test-net-server-max-connections.js | 94 |
1 files changed, 48 insertions, 46 deletions
diff --git a/test/simple/test-net-server-max-connections.js b/test/simple/test-net-server-max-connections.js index f45c1e53d3..43bc2fee17 100644 --- a/test/simple/test-net-server-max-connections.js +++ b/test/simple/test-net-server-max-connections.js @@ -42,9 +42,7 @@ var server = net.createServer(function(connection) { }); server.listen(common.PORT, function() { - for (var i = 0; i < N; i++) { - makeConnection(i); - } + makeConnection(0); }); server.maxConnections = N / 2; @@ -53,50 +51,54 @@ console.error('server.maxConnections = %d', server.maxConnections); function makeConnection(index) { - setTimeout(function() { - var c = net.createConnection(common.PORT); - var gotData = false; - - c.on('end', function() { c.end(); }); - - c.on('data', function(b) { - gotData = true; - assert.ok(0 < b.length); - }); - - c.on('error', function(e) { - console.error('error %d: %s', index, e); - }); - - c.on('close', function() { - console.error('closed %d', index); - closes++; - - if (closes < N / 2) { - assert.ok(server.maxConnections <= index, - index + - ' was one of the first closed connections ' + - 'but shouldnt have been'); + var c = net.createConnection(common.PORT); + var gotData = false; + + c.on('connect', function() { + if (index + 1 < N) { + makeConnection(index + 1); + } + }); + + c.on('end', function() { c.end(); }); + + c.on('data', function(b) { + gotData = true; + assert.ok(0 < b.length); + }); + + c.on('error', function(e) { + console.error('error %d: %s', index, e); + }); + + c.on('close', function() { + console.error('closed %d', index); + closes++; + + if (closes < N / 2) { + assert.ok(server.maxConnections <= index, + index + + ' was one of the first closed connections ' + + 'but shouldnt have been'); + } + + if (closes === N / 2) { + var cb; + console.error('calling wait callback.'); + while (cb = waits.shift()) { + cb(); } - - if (closes === N / 2) { - var cb; - console.error('calling wait callback.'); - while (cb = waits.shift()) { - cb(); - } - server.close(); - } - - if (index < server.maxConnections) { - assert.equal(true, gotData, - index + ' didn\'t get data, but should have'); - } else { - assert.equal(false, gotData, - index + ' got data, but shouldn\'t have'); - } - }); - }, index); + server.close(); + } + + if (index < server.maxConnections) { + assert.equal(true, gotData, + index + ' didn\'t get data, but should have'); + } else { + assert.equal(false, gotData, + index + ' got data, but shouldn\'t have'); + } + }); } |