diff options
author | isaacs <i@izs.me> | 2013-02-12 02:38:00 +0400 |
---|---|---|
committer | isaacs <i@izs.me> | 2013-02-20 02:14:37 +0400 |
commit | bafc51c0f9bbd178e347ff2ea9d110e2f1a4202e (patch) | |
tree | 228100de5629c92c4c6ffc2ee8a39fb1d1f73442 /benchmark | |
parent | 8c719f7c71ed415d7c5e2952782d1352d14a9389 (diff) |
bench: Move tls-connect into benchmark/tls
Also, make it work properly with current node.
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/tls-connect.js | 86 | ||||
-rw-r--r-- | benchmark/tls/tls-connect.js | 63 |
2 files changed, 63 insertions, 86 deletions
diff --git a/benchmark/tls-connect.js b/benchmark/tls-connect.js deleted file mode 100644 index 512adca1421..00000000000 --- 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 00000000000..b3bd3e3c7ae --- /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)); +} |