From 05a73c0f259fd903622445b07bf9ce3f0d7a73a3 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Fri, 26 Jun 2015 22:11:30 -0700 Subject: [PATCH] benchmark: make concurrent requests configurable In http_bench.js, allow the concurrent requests per client to be configurable. This also changes the launch of clients to wait until all forked servers are online. This eliminates spurious error messages at the start of the run. PR-URL: https://github.com/nodejs/io.js/pull/2068 Reviewed-By: Ben Noordhuis --- benchmark/http_bench.js | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/benchmark/http_bench.js b/benchmark/http_bench.js index 0541667760a774..a8f99e2f0e7978 100644 --- a/benchmark/http_bench.js +++ b/benchmark/http_bench.js @@ -8,7 +8,8 @@ var options = { port: 22344, path: '/', servers: 1, - clients: 1 + clients: 1, + clientConcurrentRequests: 2 }; for (var i = 2; i < process.argv.length; ++i) { @@ -44,13 +45,25 @@ function patch(fun) { function startMaster() { if (!cluster.isMaster) return startServer(); - for (var i = ~~options.servers; i > 0; --i) cluster.fork(); + var forkCount = 0; + + cluster.on('online', function () { + forkCount = forkCount + 1; + if (forkCount === ~~options.servers) { + var args = [ + __filename, + 'mode=client', + 'clientConcurrentRequests=' + options.clientConcurrentRequests + ]; + for (var i = ~~options.clients; i > 0; --i) { + var cp = spawn(process.execPath, args); + cp.stdout.pipe(process.stdout); + cp.stderr.pipe(process.stderr); + } + } + }); - for (var i = ~~options.clients; i > 0; --i) { - var cp = spawn(process.execPath, [__filename, 'mode=client']); - cp.stdout.pipe(process.stdout); - cp.stderr.pipe(process.stderr); - } + for (var i = ~~options.servers; i > 0; --i) cluster.fork(); } function startServer() { @@ -73,9 +86,9 @@ function startServer() { function startClient() { // send off a bunch of concurrent requests - // TODO make configurable - sendRequest(); - sendRequest(); + for (var i = ~~options.clientConcurrentRequests; i > 0; --i) { + sendRequest(); + } function sendRequest() { var req = http.request(options, onConnection);