Browse Source

test: refactor test-http-destroyed-socket-write2

Remove the limit of requests to be sent (128) as in some conditions it
was reached without the `error` event being fired, causing the test to
fail.

Remove the initial timeout.

Remove some variables used to check the validity of the test and replace
them with `common.mustCall` and `common.fail` calls.

PR-URL: https://github.com/nodejs/node/pull/4970
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Roman Klauke <romaaan.git@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
v5.x
Santiago Gimeno 9 years ago
committed by Rod Vagg
parent
commit
138ee983b0
  1. 58
      test/parallel/test-http-destroyed-socket-write2.js

58
test/parallel/test-http-destroyed-socket-write2.js

@ -19,28 +19,13 @@ server.listen(common.PORT, function() {
method: 'POST' method: 'POST'
}); });
var timer = setTimeout(write, 50);
var writes = 0;
function write() { function write() {
if (++writes === 128) { req.write('hello', function() {
clearTimeout(timer); setImmediate(write);
req.end(); });
test();
} else {
req.write('hello', function() {
timer = setImmediate(write);
});
}
} }
var gotError = false; req.on('error', common.mustCall(function(er) {
var sawData = false;
var sawEnd = false;
req.on('error', function(er) {
assert(!gotError);
gotError = true;
switch (er.code) { switch (er.code) {
// This is the expected case // This is the expected case
case 'ECONNRESET': case 'ECONNRESET':
@ -56,39 +41,20 @@ server.listen(common.PORT, function() {
'Writing to a torn down client should RESET or ABORT'); 'Writing to a torn down client should RESET or ABORT');
break; break;
} }
clearTimeout(timer);
console.log('ECONNRESET was raised after %d writes', writes); assert.equal(req.output.length, 0);
test(); assert.equal(req.outputEncodings.length, 0);
}); server.close();
}));
req.on('response', function(res) { req.on('response', function(res) {
res.on('data', function(chunk) { res.on('data', function(chunk) {
console.error('saw data: ' + chunk); common.fail('Should not receive response data');
sawData = true;
}); });
res.on('end', function() { res.on('end', function() {
console.error('saw end'); common.fail('Should not receive response end');
sawEnd = true;
}); });
}); });
var closed = false; write();
function test() {
if (closed)
return;
server.close();
closed = true;
if (req.output.length || req.outputEncodings.length)
console.error('bad happened', req.output, req.outputEncodings);
assert.equal(req.output.length, 0);
assert.equal(req.outputEncodings, 0);
assert(gotError);
assert(!sawData);
assert(!sawEnd);
console.log('ok');
}
}); });

Loading…
Cancel
Save