0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-29 23:16:30 +01:00

test: add test for missing close/finish event

See next commit for the actual fix.

PR-URL: https://github.com/iojs/io.js/pull/1373
Reviewed-By: Fedor Indutny <fedor@indutny.com>
This commit is contained in:
Mark Plomer 2015-04-13 16:28:47 +02:00 committed by Fedor Indutny
parent 3754920ffd
commit 9436a860cb

View File

@ -0,0 +1,90 @@
var common = require('../common');
var assert = require('assert');
var http = require('http');
var clientRequest = null;
var eventCount = 0;
var testTickCount = 3;
var server = http.createServer(function(req, res) {
console.log('server: request');
res.on('finish', function() {
console.log('server: response finish');
eventCount++;
});
res.on('close', function() {
console.log('server: response close');
eventCount++;
});
console.log('client: aborting request');
clientRequest.abort();
var ticks = 0;
function tick() {
console.log('server: tick ' + ticks +
(req.connection.destroyed ? ' (connection destroyed!)' : ''));
if (ticks < testTickCount) {
ticks++;
setImmediate(tick);
} else {
sendResponse();
}
}
tick();
function sendResponse() {
console.log('server: sending response');
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Response\n');
console.log('server: res.end() returned');
handleResponseEnd();
}
});
server.on('listening', function() {
console.log('server: listening on port ' + common.PORT);
console.log('-----------------------------------------------------');
startRequest();
});
server.on('connection', function(connection) {
console.log('server: connection');
connection.on('close', function() {
console.log('server: connection close');
});
});
server.on('close', function() {
console.log('server: close');
});
server.listen(common.PORT);
function startRequest() {
console.log('client: starting request - testing with %d ticks after abort()',
testTickCount);
eventCount = 0;
var options = {port: common.PORT, path: '/'};
clientRequest = http.get(options, function() {});
clientRequest.on('error', function() {});
}
function handleResponseEnd() {
setImmediate(function() {
setImmediate(function() {
assert.equal(eventCount, 1);
if (testTickCount > 0) {
testTickCount--;
startRequest();
} else {
server.close();
}
});
});
}