You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

70 lines
1.6 KiB

require("../common");
var 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) {
intentionally_not_defined();
res.writeHead(200, {"Content-Type": "text/plain"});
res.write(server_response);
res.end();
});
function check_reqs() {
var done_reqs = 0;
client_requests.forEach(function (v) {
if (v.done) {
done_reqs += 1;
}
});
if (done_reqs === 4) {
sys.puts("Got all requests, which is bad.");
clearTimeout(timer);
}
}
function add_client(num) {
var req = http.createClient(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(PORT, function () {
for (req_num = 0; req_num < 4 ; req_num += 1) {
client_requests.push(add_client(req_num));
}
timer = setTimeout(function () {
process.removeListener("uncaughtException", exception_handler);
server.close();
assert.strictEqual(4, exception_count);
process.exit(0);
}, 300);
});
function exception_handler(err) {
sys.puts("Caught an exception: " + err);
if (err.name === "AssertionError") {
throw(err);
}
exception_count += 1;
}
process.addListener("uncaughtException", exception_handler);