test: retry on known SmartOS bug
There is a known issue with SmartOS that is generally worked around in `tools/test.py`. However, a more robust workaround is required for some tests that open many network connections. `test-http-regr-gh-2928` is one such test. Fixes: https://github.com/nodejs/node/issues/5445 Refs: https://github.com/nodejs/node/pull/3941 PR-URL: https://github.com/nodejs/node/pull/5454 Reviewed-By: Fedor Indutny <fedor@indutny.com>
This commit is contained in:
parent
32719950df
commit
859269724c
@ -18,13 +18,26 @@ var gotRequests = 0;
|
|||||||
var gotResponses = 0;
|
var gotResponses = 0;
|
||||||
|
|
||||||
function execAndClose() {
|
function execAndClose() {
|
||||||
process.stdout.write('.');
|
|
||||||
if (parsers.length === 0)
|
if (parsers.length === 0)
|
||||||
return;
|
return;
|
||||||
|
process.stdout.write('.');
|
||||||
|
|
||||||
const parser = parsers.pop();
|
const parser = parsers.pop();
|
||||||
parser.reinitialize(HTTPParser.RESPONSE);
|
parser.reinitialize(HTTPParser.RESPONSE);
|
||||||
|
|
||||||
const socket = net.connect(common.PORT);
|
const socket = net.connect(common.PORT);
|
||||||
|
socket.on('error', (e) => {
|
||||||
|
// If SmartOS and ECONNREFUSED, then retry. See
|
||||||
|
// https://github.com/nodejs/node/issues/2663.
|
||||||
|
if (common.isSunOS && e.code === 'ECONNREFUSED') {
|
||||||
|
parsers.push(parser);
|
||||||
|
socket.destroy();
|
||||||
|
setImmediate(execAndClose);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
throw e;
|
||||||
|
});
|
||||||
|
|
||||||
parser.consume(socket._handle._externalStream);
|
parser.consume(socket._handle._externalStream);
|
||||||
|
|
||||||
parser.onIncoming = function onIncoming() {
|
parser.onIncoming = function onIncoming() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user