diff --git a/benchmark/tls-connect.js b/benchmark/tls-connect.js deleted file mode 100644 index 512adca142..0000000000 --- a/benchmark/tls-connect.js +++ /dev/null @@ -1,86 +0,0 @@ - -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); -} diff --git a/benchmark/tls/tls-connect.js b/benchmark/tls/tls-connect.js new file mode 100644 index 0000000000..b3bd3e3c7a --- /dev/null +++ b/benchmark/tls/tls-connect.js @@ -0,0 +1,63 @@ +var assert = require('assert'), + fs = require('fs'), + path = require('path'), + tls = require('tls'); + +var common = require('../common.js'); +var bench = common.createBenchmark(main, { + concurrency: [1, 10], + dur: [1, 3] +}); + +var clientConn = 0; +var serverConn = 0; +var server; +var dur; +var concurrency; +var running = true; + +function main(conf) { + dur = +conf.dur; + concurrency = +conf.concurrency; + + 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') ] }; + + server = tls.createServer(options, onConnection); + server.listen(common.PORT, onListening); +} + +function onListening() { + setTimeout(done, dur * 1000); + bench.start(); + for (var i = 0; i < concurrency; i++) + makeConnection(); +} + +function onConnection(conn) { + serverConn++; +} + +function makeConnection() { + var conn = tls.connect({ port: common.PORT, + rejectUnauthorized: false }, function() { + clientConn++; + conn.on('error', function(er) { + console.error('client error', er); + throw er; + }); + conn.end(); + if (running) makeConnection(); + }); +} + +function done() { + running = false; + // it's only an established connection if they both saw it. + // because we destroy the server somewhat abruptly, these + // don't always match. Generally, serverConn will be + // the smaller number, but take the min just to be sure. + bench.end(Math.min(serverConn, clientConn)); +}