summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlexis Campailla <alexis@janeasystems.com>2014-01-22 08:28:24 -0800
committerTimothy J Fontaine <tjfontaine@gmail.com>2014-01-23 12:42:56 -0800
commit42cd468901b8e5b0411761c43ab8fed06d241d51 (patch)
treee61861c2e05a27eee30c13aa5b736ad24db485ad /test
parent5d4f4ee310eab1f82d99caefee4c4c60a48620ff (diff)
downloadnode-new-42cd468901b8e5b0411761c43ab8fed06d241d51.tar.gz
test: fix http-incoming-pipelined-socket-destroy
The test was calling server.close() after write on the socket had completed. However the fact that the write had completed was not valid indication that the server had received the data. This would result in a premutaure closing of the server and an ECONNRESET event on the client.
Diffstat (limited to 'test')
-rw-r--r--test/simple/test-http-incoming-pipelined-socket-destroy.js22
1 files changed, 15 insertions, 7 deletions
diff --git a/test/simple/test-http-incoming-pipelined-socket-destroy.js b/test/simple/test-http-incoming-pipelined-socket-destroy.js
index 679ab468e7..3a2f531a75 100644
--- a/test/simple/test-http-incoming-pipelined-socket-destroy.js
+++ b/test/simple/test-http-incoming-pipelined-socket-destroy.js
@@ -33,11 +33,13 @@ var server = http.createServer(function(req, res) {
case '/1':
return setTimeout(function() {
req.socket.destroy();
+ server.emit('requestDone');
});
case '/2':
return process.nextTick(function() {
res.destroy();
+ server.emit('requestDone');
});
// in one case, actually send a response in 2 chunks
@@ -45,18 +47,19 @@ var server = http.createServer(function(req, res) {
res.write('hello ');
return setTimeout(function() {
res.end('world!');
+ server.emit('requestDone');
});
default:
- return res.destroy();
+ res.destroy();
+ server.emit('requestDone');
}
});
// Make a bunch of requests pipelined on the same socket
-function generator() {
- var reqs = [ 3, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4 ];
- return reqs.map(function(r) {
+function generator(seeds) {
+ return seeds.map(function(r) {
return 'GET /' + r + ' HTTP/1.1\r\n' +
'Host: localhost:' + common.PORT + '\r\n' +
'\r\n' +
@@ -66,13 +69,18 @@ function generator() {
server.listen(common.PORT, function() {
+ var seeds = [ 3, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4 ];
var client = net.connect({ port: common.PORT });
+ var done = 0;
+ server.on('requestDone', function() {
+ if (++done == seeds.length) {
+ server.close();
+ }
+ });
// immediately write the pipelined requests.
// Some of these will not have a socket to destroy!
- client.write(generator(), function() {
- server.close();
- });
+ client.write(generator(seeds));
});
process.on('exit', function(c) {