summaryrefslogtreecommitdiff
path: root/test/simple/test-http-set-timeout-server.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/simple/test-http-set-timeout-server.js')
-rw-r--r--test/simple/test-http-set-timeout-server.js86
1 files changed, 85 insertions, 1 deletions
diff --git a/test/simple/test-http-set-timeout-server.js b/test/simple/test-http-set-timeout-server.js
index 21be505b70..ff4144963a 100644
--- a/test/simple/test-http-set-timeout-server.js
+++ b/test/simple/test-http-set-timeout-server.js
@@ -22,6 +22,7 @@
var common = require('../common.js');
var assert = require('assert');
var http = require('http');
+var net = require('net');
var tests = [];
@@ -73,7 +74,10 @@ test(function serverRequestTimeout(cb) {
});
});
server.listen(common.PORT);
- http.get({ port: common.PORT }).on('error', function() {});
+ var req = http.request({ port: common.PORT, method: 'POST' });
+ req.on('error', function() {});
+ req.write('Hello');
+ // req is in progress
});
test(function serverResponseTimeout(cb) {
@@ -93,3 +97,83 @@ test(function serverResponseTimeout(cb) {
server.listen(common.PORT);
http.get({ port: common.PORT }).on('error', function() {});
});
+
+test(function serverRequestNotTimeoutAfterEnd(cb) {
+ var caughtTimeoutOnRequest = false;
+ var caughtTimeoutOnResponse = false;
+ process.on('exit', function() {
+ assert(!caughtTimeoutOnRequest);
+ assert(caughtTimeoutOnResponse);
+ });
+ var server = http.createServer(function(req, res) {
+ // just do nothing, we should get a timeout event.
+ req.setTimeout(50, function(socket) {
+ caughtTimeoutOnRequest = true;
+ });
+ res.on('timeout', function(socket) {
+ caughtTimeoutOnResponse = true;
+ });
+ });
+ server.on('timeout', function(socket) {
+ socket.destroy();
+ server.close();
+ cb();
+ });
+ server.listen(common.PORT);
+ http.get({ port: common.PORT }).on('error', function() {});
+});
+
+test(function serverResponseTimeoutWithPipeline(cb) {
+ var caughtTimeout = '';
+ process.on('exit', function() {
+ assert.equal(caughtTimeout, '/2');
+ });
+ var server = http.createServer(function(req, res) {
+ res.setTimeout(50, function() {
+ caughtTimeout += req.url;
+ });
+ if (req.url === '/1') res.end();
+ });
+ server.on('timeout', function(socket) {
+ socket.destroy();
+ server.close();
+ cb();
+ });
+ server.listen(common.PORT);
+ var c = net.connect({ port: common.PORT, allowHalfOpen: true }, function() {
+ 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 idleTimeout(cb) {
+ var caughtTimeoutOnRequest = false;
+ var caughtTimeoutOnResponse = false;
+ var caughtTimeoutOnServer = false;
+ process.on('exit', function() {
+ assert(!caughtTimeoutOnRequest);
+ assert(!caughtTimeoutOnResponse);
+ assert(caughtTimeoutOnServer);
+ });
+ var server = http.createServer(function(req, res) {
+ req.on('timeout', function(socket) {
+ caughtTimeoutOnRequest = true;
+ });
+ res.on('timeout', function(socket) {
+ caughtTimeoutOnResponse = true;
+ });
+ res.end();
+ });
+ server.setTimeout(50, function(socket) {
+ caughtTimeoutOnServer = true;
+ socket.destroy();
+ server.close();
+ cb();
+ });
+ server.listen(common.PORT);
+ var c = net.connect({ port: common.PORT, allowHalfOpen: true }, function() {
+ c.write('GET /1 HTTP/1.1\r\nHost: localhost\r\n\r\n');
+ // Keep-Alive
+ });
+});