Browse Source

Remove race conditions and simplify test-http-exceptions.js

v0.7.4-release
Ryan Dahl 15 years ago
parent
commit
8921bf454d
  1. 70
      test/simple/test-http-exceptions.js

70
test/simple/test-http-exceptions.js

@ -1,71 +1,27 @@
common = require("../common"); common = require("../common");
assert = common.assert assert = common.assert;
var http = require("http"), http = require("http");
sys = require("sys"),
server,
server_response = "Thank you, come again.",
client_requests = [],
cur, timer, req_num, exception_count = 0;
server = http.createServer(function (req, res) { server = http.createServer(function (req, res) {
intentionally_not_defined(); intentionally_not_defined();
res.writeHead(200, {"Content-Type": "text/plain"}); res.writeHead(200, {"Content-Type": "text/plain"});
res.write(server_response); res.write("Thank you, come again.");
res.end(); res.end();
}); });
function check_reqs() {
var done_reqs = 0;
client_requests.forEach(function (v) {
if (v.done) {
done_reqs += 1;
}
});
if (done_reqs === 4) {
console.log("Got all requests, which is bad.");
clearTimeout(timer);
}
}
function add_client(num) {
var req = http.createClient(common.PORT).request('GET', '/busy/' + num);
req.end();
req.addListener('response', function(res) {
var response_body = "";
res.setEncoding("utf8");
res.addListener('data', function(chunk) {
response_body += chunk;
});
res.addListener('end', function() {
assert.strictEqual(response_body, server_response);
req.done = true;
check_reqs();
});
});
return req;
}
server.listen(common.PORT, function () { server.listen(common.PORT, function () {
for (req_num = 0; req_num < 4 ; req_num += 1) { var req;
client_requests.push(add_client(req_num)); for (var i = 0; i < 4 ; i += 1) {
req = http.createClient(common.PORT).request('GET', '/busy/' + i);
req.end();
} }
timer = setTimeout(function () {
process.removeListener("uncaughtException", exception_handler);
server.close();
assert.strictEqual(4, exception_count);
process.exit(0);
}, 300);
}); });
function exception_handler(err) { exception_count = 0;
process.addListener("uncaughtException", function (err) {
console.log("Caught an exception: " + err); console.log("Caught an exception: " + err);
if (err.name === "AssertionError") { if (err.name === "AssertionError") throw err;
throw(err); if (++exception_count == 4) process.exit(0);
} });
exception_count += 1;
}
process.addListener("uncaughtException", exception_handler);

Loading…
Cancel
Save