node/test/parallel/test-http-end-throw-socket-handling.js
Roman Reiss 7049d7b474 test: increase timeouts on ARM
This commit introduces platform-specific test timeouts for the ARM
architectures. ARMv6 is notoriously slow so gets very large timeouts on
both the timeout value for each test, as well as certain problematic
individual tests. ARMv7 and ARMv8 also get slightly increased headroom.

PR-URL: https://github.com/iojs/io.js/pull/1366
Fixes: https://github.com/iojs/io.js/issues/1343
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2015-04-09 15:10:34 +02:00

47 lines
1.0 KiB
JavaScript

var common = require('../common');
var assert = require('assert');
// Make sure that throwing in 'end' handler doesn't lock
// up the socket forever.
//
// This is NOT a good way to handle errors in general, but all
// the same, we should not be so brittle and easily broken.
var http = require('http');
var n = 0;
var server = http.createServer(function(req, res) {
if (++n === 10) server.close();
res.end('ok');
});
server.listen(common.PORT, function() {
for (var i = 0; i < 10; i++) {
var options = { port: common.PORT };
var req = http.request(options, function (res) {
res.resume()
res.on('end', function() {
throw new Error('gleep glorp');
});
});
req.end();
}
});
setTimeout(function() {
process.removeListener('uncaughtException', catcher);
throw new Error('Taking too long!');
}, common.platformTimeout(1000)).unref();
process.on('uncaughtException', catcher);
var errors = 0;
function catcher() {
errors++;
}
process.on('exit', function() {
assert.equal(errors, 10);
console.log('ok');
});