test: fix http-many-ended-pipelines flakiness
authorSantiago Gimeno <santiago.gimeno@gmail.com>
Thu, 26 Nov 2015 21:34:11 +0000 (22:34 +0100)
committerMyles Borins <mborins@us.ibm.com>
Tue, 19 Jan 2016 19:52:16 +0000 (11:52 -0800)
It can happen that the HTTP connection is closed before the server has received
all the requests, thus the server close condition is never reached. To solve
this, close the server when the socket is fully closed.

PR-URL: https://github.com/nodejs/node/pull/4041
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Minwoo Jung <jmwsoft@gmail.com>
Reviewed-By: Evan Lucas <evanlucas@me.com>
test/parallel/test-http-many-ended-pipelines.js

index 4e0bc7e..604dab7 100644 (file)
@@ -13,15 +13,19 @@ var http = require('http');
 var net = require('net');
 
 var numRequests = 20;
-var done = 0;
+var first = false;
 
 var server = http.createServer(function(req, res) {
-  res.end('ok');
+  if (!first) {
+    first = true;
+    req.socket.on('close', function() {
+      server.close();
+    });
+  }
 
+  res.end('ok');
   // Oh no!  The connection died!
   req.socket.destroy();
-  if (++done == numRequests)
-    server.close();
 });
 
 server.listen(common.PORT);