mirror of https://github.com/lukechilds/node.git
Bert Belder
13 years ago
1 changed files with 86 additions and 0 deletions
@ -0,0 +1,86 @@ |
|||||
|
|
||||
|
var assert = require('assert'), |
||||
|
fs = require('fs'), |
||||
|
path = require('path'), |
||||
|
tls = require('tls'); |
||||
|
|
||||
|
|
||||
|
var target_connections = 10000, |
||||
|
concurrency = 10; |
||||
|
|
||||
|
for (var i = 2; i < process.argv.length; i++) { |
||||
|
switch (process.argv[i]) { |
||||
|
case '-c': |
||||
|
concurrency = ~~process.argv[++i]; |
||||
|
break; |
||||
|
|
||||
|
case '-n': |
||||
|
target_connections = ~~process.argv[++i]; |
||||
|
break; |
||||
|
|
||||
|
default: |
||||
|
throw new Error('Invalid flag: ' + process.argv[i]); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
var cert_dir = path.resolve(__dirname, '../test/fixtures'), |
||||
|
options = { key: fs.readFileSync(cert_dir + '/test_key.pem'), |
||||
|
cert: fs.readFileSync(cert_dir + '/test_cert.pem'), |
||||
|
ca: [ fs.readFileSync(cert_dir + '/test_ca.pem') ] }; |
||||
|
|
||||
|
var server = tls.createServer(options, onConnection); |
||||
|
server.listen(8000); |
||||
|
|
||||
|
|
||||
|
var initiated_connections = 0, |
||||
|
server_connections = 0, |
||||
|
client_connections = 0, |
||||
|
start = Date.now(); |
||||
|
|
||||
|
for (var i = 0; i < concurrency; i++) |
||||
|
makeConnection(); |
||||
|
|
||||
|
|
||||
|
process.on('exit', onExit); |
||||
|
|
||||
|
|
||||
|
function makeConnection() { |
||||
|
if (initiated_connections >= target_connections) |
||||
|
return; |
||||
|
|
||||
|
initiated_connections++; |
||||
|
|
||||
|
var conn = tls.connect(8000, function() { |
||||
|
client_connections++; |
||||
|
|
||||
|
if (client_connections % 100 === 0) |
||||
|
console.log(client_connections + ' of ' + target_connections + |
||||
|
' connections made'); |
||||
|
|
||||
|
conn.end(); |
||||
|
makeConnection(); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
function onConnection(conn) { |
||||
|
server_connections++; |
||||
|
|
||||
|
if (server_connections === target_connections) |
||||
|
server.close(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
function onExit() { |
||||
|
var end = Date.now(), |
||||
|
s = (end - start) / 1000, |
||||
|
persec = Math.round(target_connections / s); |
||||
|
|
||||
|
assert.equal(initiated_connections, target_connections); |
||||
|
assert.equal(client_connections, target_connections); |
||||
|
assert.equal(server_connections, target_connections); |
||||
|
|
||||
|
console.log('%d connections in %d s', target_connections, s); |
||||
|
console.log('%d connections per second', persec); |
||||
|
} |
Loading…
Reference in new issue