Skip to content

Instantly share code, notes, and snippets.

@piscisaureus
Created July 13, 2012 15:22
Show Gist options
  • Save piscisaureus/3105452 to your computer and use it in GitHub Desktop.
Save piscisaureus/3105452 to your computer and use it in GitHub Desktop.
var assert = require('assert'),
fs = require('fs'),
path = require('path'),
tls = require('tls'),
CERT_DIR = path.resolve(__dirname, '../test/fixtures');
var target_connections = 10000,
concurrency = 10,
initiated_connections = 0,
server_connections = 0,
client_connections = 0,
start = Date.now();
var 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, function(conn) {
server_connections++;
if (server_connections === target_connections)
server.close();
});
server.listen(8000);
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);
conn.end();
makeConnection();
});
}
for (var i = 0; i < concurrency; i++)
makeConnection();
process.on('exit', function() {
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);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment