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