summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkoichik <koichik@improvement.jp>2012-01-22 23:23:04 +0900
committerkoichik <koichik@improvement.jp>2012-01-22 23:23:04 +0900
commit827180097c45d2ce84d798ca141bb3a170a20df9 (patch)
tree81b6f65f6fc3204dfe1195c0fac844f9037b4d03
parent93298afc4e2835e5b526ab871922018999e98bcb (diff)
downloadnode-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.js94
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');
+ }
+ });
}