testing/xpcshell/node-spdy/test/benchmarks/syn.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 var tls = require('tls'),
     2     frames = require('../fixtures/frames');
     4 var uri = require('url').parse(process.argv[2]),
     5     host = uri.hostname,
     6     port = +uri.port,
     7     url = uri.path;
     9 frames.createSynStream(host, url, function(syn_stream) {
    10   var start = +new Date,
    11       num = 3000;
    13   batch(port, host, syn_stream, 100, num, function() {
    14     var end = +new Date;
    15     console.log('requests/sec : %d', 1000 * num / (end - start));
    16   });
    17 });
    19 function request(port, host, data, callback) {
    20   var socket = tls.connect(port, host, {NPNProtocols: ['spdy/2']}, function() {
    21     socket.write(data);
    22     socket.once('data', function() {
    23       socket.destroy();
    24       callback();
    25     });
    26   });
    28   return socket;
    29 };
    31 function batch(port, host, data, parallel, num, callback) {
    32   var left = num,
    33       done = 0;
    35   for (var i = 0; i < parallel; i++) {
    36     run(i);
    37   }
    39   function run(i) {
    40     left--;
    41     if (left < 0) return;
    43     request(port, host, data, function() {
    44       if (++done ===  num) return callback();
    45       run(i);
    46     });
    47   }
    48 };

mercurial