summaryrefslogtreecommitdiff
path: root/test/sequential/test-https-server-keep-alive-timeout.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/sequential/test-https-server-keep-alive-timeout.js')
-rw-r--r--test/sequential/test-https-server-keep-alive-timeout.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/test/sequential/test-https-server-keep-alive-timeout.js b/test/sequential/test-https-server-keep-alive-timeout.js
new file mode 100644
index 0000000000..3c18d325c1
--- /dev/null
+++ b/test/sequential/test-https-server-keep-alive-timeout.js
@@ -0,0 +1,79 @@
+'use strict';
+
+const common = require('../common');
+
+if (!common.hasCrypto)
+ common.skip('missing crypto');
+
+const fixtures = require('../common/fixtures');
+const https = require('https');
+const tls = require('tls');
+
+const tests = [];
+
+const serverOptions = {
+ key: fixtures.readKey('agent1-key.pem'),
+ cert: fixtures.readKey('agent1-cert.pem')
+};
+
+function test(fn) {
+ if (!tests.length) {
+ process.nextTick(run);
+ }
+ tests.push(fn);
+}
+
+function run() {
+ const fn = tests.shift();
+ if (fn) fn(run);
+}
+
+test(function serverKeepAliveTimeoutWithPipeline(cb) {
+ const server = https.createServer(
+ serverOptions,
+ common.mustCall((req, res) => {
+ res.end();
+ }, 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,
+ rejectUnauthorized: false
+ };
+ const c = tls.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');
+ });
+ }));
+});
+
+test(function serverNoEndKeepAliveTimeoutWithPipeline(cb) {
+ const server = https.createServer(serverOptions, 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,
+ rejectUnauthorized: false
+ };
+ const c = tls.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');
+ });
+ }));
+});