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;
|
||||
|
||||
function execAndClose() {
|
||||
process.stdout.write('.');
|
||||
if (parsers.length === 0)
|
||||
return;
|
||||
process.stdout.write('.');
|
||||
|
||||
const parser = parsers.pop();
|
||||
parser.reinitialize(HTTPParser.RESPONSE);
|
||||
|
||||
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.onIncoming = function onIncoming() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user