test: fix flaky test-net-socket-local-address
authorcjihrig <cjihrig@gmail.com>
Tue, 12 Jan 2016 17:18:40 +0000 (12:18 -0500)
committerMyles Borins <mborins@us.ibm.com>
Mon, 15 Feb 2016 19:30:23 +0000 (11:30 -0800)
Prior to this commit, the test was flaky because it was
executing the majority of its logic in a function called from
the client and multiple events on the server. This commit
simplifies the test by separating the server's connection and
listening events, and isolating the client logic.

Refs: https://github.com/nodejs/node/pull/4476
Refs: https://github.com/nodejs/node/pull/4644
PR-URL: https://github.com/nodejs/node/pull/4650
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
test/parallel/test-net-socket-local-address.js

index 7e90bd2..e0ef1ee 100644 (file)
@@ -12,35 +12,29 @@ if (common.inFreeBSDJail) {
 var conns = 0;
 var clientLocalPorts = [];
 var serverRemotePorts = [];
-
-const server = net.createServer(function(socket) {
+const client = new net.Socket();
+const server = net.createServer(socket => {
   serverRemotePorts.push(socket.remotePort);
-  testConnect();
+  socket.end();
 });
 
-const client = new net.Socket();
-
-server.on('close', common.mustCall(function() {
+server.on('close', common.mustCall(() => {
   assert.deepEqual(clientLocalPorts, serverRemotePorts,
                    'client and server should agree on the ports used');
-  assert.equal(2, conns);
+  assert.strictEqual(2, conns);
 }));
 
-server.listen(common.PORT, common.localhostIPv4, testConnect);
+server.listen(common.PORT, common.localhostIPv4, connect);
 
-function testConnect() {
-  if (conns > serverRemotePorts.length || conns > clientLocalPorts.length) {
-    // We're waiting for a callback to fire.
+function connect() {
+  if (conns === 2) {
+    server.close();
     return;
   }
 
-  if (conns === 2) {
-    return server.close();
-  }
-  client.connect(common.PORT, common.localhostIPv4, function() {
-    clientLocalPorts.push(this.localPort);
-    this.once('close', testConnect);
-    this.destroy();
-  });
   conns++;
+  client.once('close', connect);
+  client.connect(common.PORT, common.localhostIPv4, () => {
+    clientLocalPorts.push(client.localPort);
+  });
 }