+++ /dev/null
-// first start node http_simple.js
-var http = require('http');
-
-var latency = [];
-
-var numRequests = parseInt(process.argv[2], 10) || 100;
-var maxSockets = parseInt(process.argv[3], 10) || 100;
-var runs = parseInt(process.argv[4], 10) || 100;
-var prefix = process.argv[5] || '';
-if (prefix) prefix += '_';
-var r = 0;
-
-var port = parseInt(process.env.PORT, 10) || 8000;
-var host = process.env.HOST || '127.0.0.1';
-
-http.globalAgent.maxSockets = maxSockets;
-
-run();
-
-function run() {
- if (r++ === runs) {
- return finish();
- }
-
- // make numRequests in parallel
- // retain the order in which they are *made*. This requires trapping
- // each one in a closure, since otherwise, we'll of course end
- // up mostly sorting them in ascending order, since the cb from a
- // fast request will almost always be called before the cb from a
- // slow one.
- var c = numRequests;
- var lat = [];
- latency.push(lat);
- for (var i = 0; i < numRequests; i++) (function (i) {
- makeRequest(function(l) {
- lat[i] = l;
- c--;
- if (c === 0) run();
- });
- })(i);
-}
-
-function makeRequest(cb) {
- var opts = { host: host,
- port: port,
- uri: 'http://'+host+':'+port+'/bytes/12',
- forever: true,
- path: '/bytes/12' };
- var pre = Date.now();
- var req = http.get(opts, function(res) {
- return cb(Date.now() - pre);
- });
-}
-
-function finish() {
- var data = [];
- latency.forEach(function(run, i) {
- run.forEach(function(l, j) {
- data[j] = data[j] || [];
- data[j][i] = l;
- });
- });
-
- data = data.map(function (l, i) {
- return l.join('\t')
- }).join('\n') + '\n';
-
- var fname = prefix +
- 'client_latency_' +
- numRequests + '_' +
- maxSockets + '_' +
- runs + '.tab';
- var path = require('path');
- fname = path.resolve(__dirname, '..', 'out', fname);
- fname = path.relative(process.cwd(), fname);
- require('fs').writeFile(fname, data, function(er) {
- if (er) throw er;
- console.log('written: %s', fname);
- });
-}