aboutsummaryrefslogtreecommitdiff
path: root/test/sequential/test-http-server-keep-alive-timeout-slow-client-headers.js
diff options
context:
space:
mode:
authorAlexey Orlenko <eaglexrlnk@gmail.com>2017-07-19 22:47:09 +0300
committerAlexey Orlenko <eaglexrlnk@gmail.com>2017-07-22 07:53:27 +0300
commit239ebf02440412df56b18b8d9e973ad6ab7af2f8 (patch)
tree3d4bc869fc7027e9da387c5a3e254a7357386fe2 /test/sequential/test-http-server-keep-alive-timeout-slow-client-headers.js
parentac8126749cc643cf4ec73a41fddd8e10b55fd77c (diff)
downloadandroid-node-v8-239ebf02440412df56b18b8d9e973ad6ab7af2f8.tar.gz
android-node-v8-239ebf02440412df56b18b8d9e973ad6ab7af2f8.tar.bz2
android-node-v8-239ebf02440412df56b18b8d9e973ad6ab7af2f8.zip
test: move timing-dependent tests to sequential
Move test-http-server-keep-alive-timeout-slow-server and test-http-server-keep-alive-timeout-slow-client-headers from parallel to sequential to resolve test flakiness on freebsd10-64. Fixes: https://github.com/nodejs/node/issues/14033 Refs: https://github.com/nodejs/node/pull/9317 PR-URL: https://github.com/nodejs/node/pull/14377 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Diffstat (limited to 'test/sequential/test-http-server-keep-alive-timeout-slow-client-headers.js')
-rw-r--r--test/sequential/test-http-server-keep-alive-timeout-slow-client-headers.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/test/sequential/test-http-server-keep-alive-timeout-slow-client-headers.js b/test/sequential/test-http-server-keep-alive-timeout-slow-client-headers.js
new file mode 100644
index 0000000000..453831ecba
--- /dev/null
+++ b/test/sequential/test-http-server-keep-alive-timeout-slow-client-headers.js
@@ -0,0 +1,57 @@
+'use strict';
+
+const common = require('../common');
+const assert = require('assert');
+const http = require('http');
+const net = require('net');
+
+const server = http.createServer(common.mustCall((req, res) => {
+ res.end();
+}, 2));
+
+server.keepAliveTimeout = common.platformTimeout(100);
+
+server.listen(0, common.mustCall(() => {
+ const port = server.address().port;
+ const socket = net.connect({ port }, common.mustCall(() => {
+ request(common.mustCall(() => {
+ // Make a second request on the same socket, after the keep-alive timeout
+ // has been set on the server side.
+ request(common.mustCall());
+ }));
+ }));
+
+ server.on('timeout', common.mustCall(() => {
+ socket.end();
+ server.close();
+ }));
+
+ function request(callback) {
+ socket.setEncoding('utf8');
+ socket.on('data', onData);
+ let response = '';
+
+ // Simulate a client that sends headers slowly (with a period of inactivity
+ // that is longer than the keep-alive timeout).
+ socket.write('GET / HTTP/1.1\r\n' +
+ `Host: localhost:${port}\r\n`);
+ setTimeout(() => {
+ socket.write('Connection: keep-alive\r\n' +
+ '\r\n');
+ }, common.platformTimeout(300));
+
+ function onData(chunk) {
+ response += chunk;
+ if (chunk.includes('\r\n')) {
+ socket.removeListener('data', onData);
+ onHeaders();
+ }
+ }
+
+ function onHeaders() {
+ assert.ok(response.includes('HTTP/1.1 200 OK\r\n'));
+ assert.ok(response.includes('Connection: keep-alive\r\n'));
+ callback();
+ }
+ }
+}));