diff options
Diffstat (limited to 'test/simple/test-http-set-timeout-server.js')
-rw-r--r-- | test/simple/test-http-set-timeout-server.js | 86 |
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 21be505b7..ff4144963 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 + }); +}); |