diff --git a/test/parallel/test-http-server-keep-alive-timeout.js b/test/parallel/test-http-server-keep-alive-timeout.js index 767963fbdc2f38..048291613fde94 100644 --- a/test/parallel/test-http-server-keep-alive-timeout.js +++ b/test/parallel/test-http-server-keep-alive-timeout.js @@ -18,15 +18,28 @@ function run() { if (fn) fn(run); } -test(function serverEndKeepAliveTimeoutWithPipeline(cb) { +function done(server, socket, cb) { + socket.destroy(); + server.close(cb); +} + +function serverTest(with_pipeline, cb) { + let got_all = false; + let timedout = false; const server = http.createServer(common.mustCall((req, res) => { - res.end(); + if (with_pipeline) + res.end(); + if (req.url === '/3') { + got_all = true; + if (timedout) + done(server, req.socket, cb); + } }, 3)); - server.setTimeout(500, common.mustCall((socket) => { + server.setTimeout(500, common.mustCallAtLeast((socket) => { // End this test and call `run()` for the next test (if any). - socket.destroy(); - server.close(); - cb(); + timedout = true; + if (got_all) + done(server, socket, cb); })); server.keepAliveTimeout = 50; server.listen(0, common.mustCall(() => { @@ -40,26 +53,12 @@ test(function serverEndKeepAliveTimeoutWithPipeline(cb) { c.write('GET /3 HTTP/1.1\r\nHost: localhost\r\n\r\n'); }); })); +} + +test(function serverEndKeepAliveTimeoutWithPipeline(cb) { + serverTest(true, cb); }); test(function serverNoEndKeepAliveTimeoutWithPipeline(cb) { - const server = http.createServer(common.mustCall(3)); - server.setTimeout(500, common.mustCall((socket) => { - // End this test and call `run()` for the next test (if any). - socket.destroy(); - server.close(); - cb(); - })); - server.keepAliveTimeout = 50; - server.listen(0, common.mustCall(() => { - const options = { - port: server.address().port, - allowHalfOpen: true - }; - const c = net.connect(options, () => { - c.write('GET /1 HTTP/1.1\r\nHost: localhost\r\n\r\n'); - c.write('GET /2 HTTP/1.1\r\nHost: localhost\r\n\r\n'); - c.write('GET /3 HTTP/1.1\r\nHost: localhost\r\n\r\n'); - }); - })); + serverTest(false, cb); });