michael@0: var tls = require('tls'), michael@0: frames = require('../fixtures/frames'); michael@0: michael@0: var uri = require('url').parse(process.argv[2]), michael@0: host = uri.hostname, michael@0: port = +uri.port, michael@0: url = uri.path; michael@0: michael@0: frames.createSynStream(host, url, function(syn_stream) { michael@0: var start = +new Date, michael@0: num = 3000; michael@0: michael@0: batch(port, host, syn_stream, 100, num, function() { michael@0: var end = +new Date; michael@0: console.log('requests/sec : %d', 1000 * num / (end - start)); michael@0: }); michael@0: }); michael@0: michael@0: function request(port, host, data, callback) { michael@0: var socket = tls.connect(port, host, {NPNProtocols: ['spdy/2']}, function() { michael@0: socket.write(data); michael@0: socket.once('data', function() { michael@0: socket.destroy(); michael@0: callback(); michael@0: }); michael@0: }); michael@0: michael@0: return socket; michael@0: }; michael@0: michael@0: function batch(port, host, data, parallel, num, callback) { michael@0: var left = num, michael@0: done = 0; michael@0: michael@0: for (var i = 0; i < parallel; i++) { michael@0: run(i); michael@0: } michael@0: michael@0: function run(i) { michael@0: left--; michael@0: if (left < 0) return; michael@0: michael@0: request(port, host, data, function() { michael@0: if (++done === num) return callback(); michael@0: run(i); michael@0: }); michael@0: } michael@0: };