Browse Source

test: fix flaky test-tls-socket-close

Add error listener to ignore `ECONNRESET`. Makes test reliable while it
still segfaults (as expected) on Node.js 7.7.3. It might not be possible
to eliminate the probable race causing `ECONNRESET` without also
eliminating the required segfault-inducing part of the test. (Or maybe
it's totally possible. If you figure it out, hey cool, submit a pull
request.)

PR-URL: https://github.com/nodejs/node/pull/13529
Fixes: https://github.com/nodejs/node/issues/13184
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
v6.x
Rich Trott 8 years ago
committed by Myles Borins
parent
commit
53b345c506
No known key found for this signature in database GPG Key ID: 933B01F40B5CA946
  1. 21
      test/parallel/test-tls-socket-close.js

21
test/parallel/test-tls-socket-close.js

@ -32,12 +32,17 @@ const netServer = net.createServer((socket) => {
netSocket = socket; netSocket = socket;
}).listen(0, common.mustCall(function() { }).listen(0, common.mustCall(function() {
// connect client connectClient(netServer);
tls.connect({ }));
function connectClient(server) {
const tlsConnection = tls.connect({
host: 'localhost', host: 'localhost',
port: this.address().port, port: server.address().port,
rejectUnauthorized: false rejectUnauthorized: false
}).write('foo', 'utf8', common.mustCall(() => { });
tlsConnection.write('foo', 'utf8', common.mustCall(() => {
assert(netSocket); assert(netSocket);
netSocket.setTimeout(1, common.mustCall(() => { netSocket.setTimeout(1, common.mustCall(() => {
assert(tlsSocket); assert(tlsSocket);
@ -55,4 +60,10 @@ const netServer = net.createServer((socket) => {
}, 1); }, 1);
})); }));
})); }));
})); tlsConnection.on('error', (e) => {
// Tolerate the occasional ECONNRESET.
// Ref: https://github.com/nodejs/node/issues/13184
if (e.code !== 'ECONNRESET')
throw e;
});
}

Loading…
Cancel
Save