1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/testing/xpcshell/node-spdy/test/benchmarks/syn.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,48 @@ 1.4 +var tls = require('tls'), 1.5 + frames = require('../fixtures/frames'); 1.6 + 1.7 +var uri = require('url').parse(process.argv[2]), 1.8 + host = uri.hostname, 1.9 + port = +uri.port, 1.10 + url = uri.path; 1.11 + 1.12 +frames.createSynStream(host, url, function(syn_stream) { 1.13 + var start = +new Date, 1.14 + num = 3000; 1.15 + 1.16 + batch(port, host, syn_stream, 100, num, function() { 1.17 + var end = +new Date; 1.18 + console.log('requests/sec : %d', 1000 * num / (end - start)); 1.19 + }); 1.20 +}); 1.21 + 1.22 +function request(port, host, data, callback) { 1.23 + var socket = tls.connect(port, host, {NPNProtocols: ['spdy/2']}, function() { 1.24 + socket.write(data); 1.25 + socket.once('data', function() { 1.26 + socket.destroy(); 1.27 + callback(); 1.28 + }); 1.29 + }); 1.30 + 1.31 + return socket; 1.32 +}; 1.33 + 1.34 +function batch(port, host, data, parallel, num, callback) { 1.35 + var left = num, 1.36 + done = 0; 1.37 + 1.38 + for (var i = 0; i < parallel; i++) { 1.39 + run(i); 1.40 + } 1.41 + 1.42 + function run(i) { 1.43 + left--; 1.44 + if (left < 0) return; 1.45 + 1.46 + request(port, host, data, function() { 1.47 + if (++done === num) return callback(); 1.48 + run(i); 1.49 + }); 1.50 + } 1.51 +};