mirror of https://github.com/lukechilds/node.git
Ryan Dahl
15 years ago
1 changed files with 63 additions and 0 deletions
@ -0,0 +1,63 @@ |
|||||
|
require('../common'); |
||||
|
var sys = require("sys"), |
||||
|
fs = require("fs"), |
||||
|
http = require("http"), |
||||
|
url = require("url"); |
||||
|
|
||||
|
// Produce a very large response.
|
||||
|
var chargen = http.createServer(function (req, res) { |
||||
|
var chunk = '01234567890123456789'; |
||||
|
var len = req.headers['x-len']; |
||||
|
res.writeHead(200, {"transfer-encoding":"chunked"}); |
||||
|
for (var i=0; i<len; i++) { |
||||
|
res.write(chunk); |
||||
|
} |
||||
|
res.end(); |
||||
|
}); |
||||
|
chargen.listen(9000); |
||||
|
|
||||
|
// Proxy to the chargen server.
|
||||
|
var proxy = http.createServer(function (req, res) { |
||||
|
var proxy_req = http.createClient(9000, 'localhost') |
||||
|
.request(req.method, req.url, req.headers); |
||||
|
proxy_req.addListener('response', function(proxy_res) { |
||||
|
res.writeHead(proxy_res.statusCode, proxy_res.headers); |
||||
|
proxy_res.addListener('data', function(chunk) { |
||||
|
res.write(chunk); |
||||
|
}); |
||||
|
proxy_res.addListener('end', function() { |
||||
|
res.end(); |
||||
|
}); |
||||
|
}); |
||||
|
proxy_req.end(); |
||||
|
}); |
||||
|
proxy.listen(9001); |
||||
|
|
||||
|
var done = false; |
||||
|
|
||||
|
function call_chargen(list) { |
||||
|
if (list.length > 0) { |
||||
|
sys.debug("calling chargen for " + list[0] + " chunks."); |
||||
|
var req = http.createClient(9001, 'localhost').request('/', {'x-len': list[0]}); |
||||
|
req.addListener('response', function(res) { |
||||
|
res.addListener('end', function() { |
||||
|
sys.debug("end for " + list[0] + " chunks."); |
||||
|
list.shift(); |
||||
|
call_chargen(list); |
||||
|
}); |
||||
|
}); |
||||
|
req.end(); |
||||
|
} |
||||
|
else { |
||||
|
sys.puts("End of list."); |
||||
|
proxy.end(); |
||||
|
chargen.end(); |
||||
|
done = true; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
call_chargen([ 100, 1000, 10000, 100000, 1000000 ]); |
||||
|
|
||||
|
process.addListener('exit', function () { |
||||
|
assert.ok(done); |
||||
|
}); |
Loading…
Reference in new issue