summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian White <mscdex@mscdex.net>2015-12-18 01:35:23 -0500
committerBrian White <mscdex@mscdex.net>2015-12-19 14:09:36 -0500
commit4b0b991bf5bbb41e204a7b98f62a8afd00faf855 (patch)
tree8932bc50ee5226226f917616233cefd7e199a6db
parenta2c1799a5b68dbf411785606345e166ad8acd607 (diff)
downloadandroid-node-v8-4b0b991bf5bbb41e204a7b98f62a8afd00faf855.tar.gz
android-node-v8-4b0b991bf5bbb41e204a7b98f62a8afd00faf855.tar.bz2
android-node-v8-4b0b991bf5bbb41e204a7b98f62a8afd00faf855.zip
test: fix flaky test-net-error-twice
On Windows there can exist some race condition where the notification of the client's `socket.destroy()` isn't received before the server writes to the socket. This race condition was more evident/reproducible on a single core system. This commit fixes the flakiness by waiting until the server's connection event handler has been called to destroy the client socket and perform the server socket write. Fixes: https://github.com/nodejs/node/issues/4057 PR-URL: https://github.com/nodejs/node/pull/4342 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: João Reis <reis@janeasystems.com>
-rw-r--r--test/parallel/test-net-error-twice.js25
1 files changed, 18 insertions, 7 deletions
diff --git a/test/parallel/test-net-error-twice.js b/test/parallel/test-net-error-twice.js
index af92ca9320..28e90ddd61 100644
--- a/test/parallel/test-net-error-twice.js
+++ b/test/parallel/test-net-error-twice.js
@@ -1,16 +1,24 @@
'use strict';
-var common = require('../common');
-var assert = require('assert');
-var net = require('net');
+const common = require('../common');
+const assert = require('assert');
+const net = require('net');
-var buf = new Buffer(10 * 1024 * 1024);
+const buf = new Buffer(10 * 1024 * 1024);
buf.fill(0x62);
-var errs = [];
+const errs = [];
+var clientSocket;
+var serverSocket;
+
+function ready() {
+ if (clientSocket && serverSocket) {
+ clientSocket.destroy();
+ serverSocket.write(buf);
+ }
+}
var srv = net.createServer(function onConnection(conn) {
- conn.write(buf);
conn.on('error', function(err) {
errs.push(err);
if (errs.length > 1 && errs[0] === errs[1])
@@ -19,11 +27,14 @@ var srv = net.createServer(function onConnection(conn) {
conn.on('close', function() {
srv.unref();
});
+ serverSocket = conn;
+ ready();
}).listen(common.PORT, function() {
var client = net.connect({ port: common.PORT });
client.on('connect', function() {
- client.destroy();
+ clientSocket = client;
+ ready();
});
});