test: fix flaky SmartOS test
SmartOS has an issue where it will trigger ECONNREFUSED when it should not. See https://smartos.org/bugview/OS-2767. This change adds logic to test-net-server-max-connections.js to work around the issue. Fixes: https://github.com/nodejs/node/issues/2663 PR-URL: https://github.com/nodejs/node/pull/3830 Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
3f6b9214bd
commit
5b80ca9339
@ -36,6 +36,35 @@ function makeConnection(index) {
|
|||||||
if (index + 1 < N) {
|
if (index + 1 < N) {
|
||||||
makeConnection(index + 1);
|
makeConnection(index + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
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');
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
c.on('end', function() { c.end(); });
|
c.on('end', function() { c.end(); });
|
||||||
@ -46,37 +75,13 @@ function makeConnection(index) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
c.on('error', function(e) {
|
c.on('error', function(e) {
|
||||||
|
// Retry if SmartOS and ECONNREFUSED. See
|
||||||
|
// https://github.com/nodejs/node/issues/2663.
|
||||||
|
if (common.isSunOS && (e.code === 'ECONNREFUSED')) {
|
||||||
|
c.connect(common.PORT);
|
||||||
|
}
|
||||||
console.error('error %d: %s', index, 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();
|
|
||||||
}
|
|
||||||
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');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user