test: fix flaky test-net-write-after-close

Replace 250ms timer with event-based logic to make test robust.

PR-URL: https://github.com/nodejs/node/pull/14361
Fixes: https://github.com/nodejs/node/issues/13597
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Rich Trott 2017-07-18 23:00:33 -07:00
parent 27343cc051
commit 43bd47c352

View File

@ -21,24 +21,31 @@
'use strict';
const common = require('../common');
const net = require('net');
let serverSocket;
const server = net.createServer(common.mustCall(function(socket) {
serverSocket = socket;
socket.resume();
socket.on('error', common.mustCall(function(error) {
console.error('got error, closing server', error);
console.error('received error as expected, closing server', error);
server.close();
}));
setTimeout(common.mustCall(function() {
console.error('about to try to write');
socket.write('test', common.mustCall());
}), 250);
}));
server.listen(0, function() {
const client = net.connect(this.address().port, function() {
// cliend.end() will close both the readable and writable side
// of the duplex because allowHalfOpen defaults to false.
// Then 'end' will be emitted when it receives a FIN packet from
// the other side.
client.on('end', common.mustCall(() => {
serverSocket.write('test', common.mustCall());
}));
client.end();
});
});