aboutsummaryrefslogtreecommitdiff
path: root/benchmark/tls
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2013-02-11 14:38:00 -0800
committerisaacs <i@izs.me>2013-02-19 14:14:37 -0800
commitbafc51c0f9bbd178e347ff2ea9d110e2f1a4202e (patch)
tree228100de5629c92c4c6ffc2ee8a39fb1d1f73442 /benchmark/tls
parent8c719f7c71ed415d7c5e2952782d1352d14a9389 (diff)
downloadandroid-node-v8-bafc51c0f9bbd178e347ff2ea9d110e2f1a4202e.tar.gz
android-node-v8-bafc51c0f9bbd178e347ff2ea9d110e2f1a4202e.tar.bz2
android-node-v8-bafc51c0f9bbd178e347ff2ea9d110e2f1a4202e.zip
bench: Move tls-connect into benchmark/tls
Also, make it work properly with current node.
Diffstat (limited to 'benchmark/tls')
-rw-r--r--benchmark/tls/tls-connect.js63
1 files changed, 63 insertions, 0 deletions
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));
+}