mirror of https://github.com/lukechilds/node.git
Russell Haering
14 years ago
committed by
Ryan Dahl
2 changed files with 75 additions and 0 deletions
@ -0,0 +1,73 @@ |
|||||
|
var common = require('../common'); |
||||
|
var assert = require('assert'); |
||||
|
var fs = require('fs'); |
||||
|
var http = require('http'); |
||||
|
var path = require('path'); |
||||
|
var cp = require('child_process'); |
||||
|
|
||||
|
var filename = path.join(common.tmpDir || '/tmp', 'big'); |
||||
|
var clientReqComplete = false; |
||||
|
var count = 0; |
||||
|
|
||||
|
var server = http.createServer(function(req, res) { |
||||
|
var timeoutId; |
||||
|
assert.equal('POST', req.method); |
||||
|
req.pause(); |
||||
|
common.error('request paused'); |
||||
|
|
||||
|
setTimeout(function() { |
||||
|
req.resume(); |
||||
|
common.error('request resumed'); |
||||
|
}, 1000); |
||||
|
|
||||
|
req.on('data', function(chunk) { |
||||
|
common.error('recv data! nchars = ' + chunk.length); |
||||
|
count += chunk.length; |
||||
|
}); |
||||
|
|
||||
|
req.on('end', function() { |
||||
|
if (timeoutId) { |
||||
|
clearTimeout(timeoutId); |
||||
|
} |
||||
|
console.log('request complete from server'); |
||||
|
res.writeHead(200, {'Content-Type': 'text/plain'}); |
||||
|
res.end(); |
||||
|
}); |
||||
|
}); |
||||
|
server.listen(common.PORT); |
||||
|
|
||||
|
server.on('listening', function() { |
||||
|
var cmd = 'dd if=/dev/zero of="' + filename + '" bs=1024 count=10240'; |
||||
|
cp.exec(cmd, function(err, stdout, stderr) { |
||||
|
if (err) throw err; |
||||
|
makeRequest(); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
function makeRequest() { |
||||
|
var req = http.request({ |
||||
|
port: common.PORT, |
||||
|
path: '/', |
||||
|
method: 'POST' |
||||
|
}); |
||||
|
|
||||
|
common.error('pipe!'); |
||||
|
var s = fs.ReadStream(filename); |
||||
|
s.pipe(req); |
||||
|
s.on('close', function(err) { |
||||
|
if (err) throw err; |
||||
|
clientReqComplete = true; |
||||
|
common.error('client finished sending request'); |
||||
|
}); |
||||
|
|
||||
|
req.on('response', function(res) { |
||||
|
res.on('end', function() { |
||||
|
server.close(); |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
process.on('exit', function() { |
||||
|
assert.equal(1024 * 10240, count); |
||||
|
assert.ok(clientReqComplete); |
||||
|
}); |
Loading…
Reference in new issue