Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
benchmark: add single process tls connection benchmark
  • Loading branch information
piscisaureus committed Jul 13, 2012
1 parent 8721667 commit 23dc099
Showing 1 changed file with 86 additions and 0 deletions.
86 changes: 86 additions & 0 deletions benchmark/tls-connect.js
@@ -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);
}

0 comments on commit 23dc099

Please sign in to comment.