Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2013-02-12 02:38:00 +0400
committerisaacs <i@izs.me>2013-02-20 02:14:37 +0400
commitbafc51c0f9bbd178e347ff2ea9d110e2f1a4202e (patch)
tree228100de5629c92c4c6ffc2ee8a39fb1d1f73442 /benchmark
parent8c719f7c71ed415d7c5e2952782d1352d14a9389 (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.js86
-rw-r--r--benchmark/tls/tls-connect.js63
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));
+}