From 64794ddc5bc93bc8c83a5ea4cdf6bc85bec42748 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Tue, 18 Jul 2017 23:00:33 -0700 Subject: [PATCH] test: fix flaky test-net-write-after-close Replace 250ms timer with event-based logic to make test robust. Fixes: https://github.com/nodejs/node/issues/13597 --- test/parallel/test-net-write-after-close.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/test/parallel/test-net-write-after-close.js b/test/parallel/test-net-write-after-close.js index cc96cb3a4cda97..05669e476c7670 100644 --- a/test/parallel/test-net-write-after-close.js +++ b/test/parallel/test-net-write-after-close.js @@ -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(); }); });