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

changeset 0
6474c204b198
     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 +};

mercurial