| 'use strict'; |
| const common = require('../common.js'); |
| const PORT = common.PORT; |
| |
| const cluster = require('cluster'); |
| let bench; |
| if (cluster.isMaster) { |
| bench = common.createBenchmark(main, { |
| // Unicode confuses ab on os x. |
| type: ['bytes', 'buffer'], |
| len: [4, 1024, 102400], |
| c: [50, 500], |
| duration: 5, |
| }); |
| } else { |
| const port = parseInt(process.env.PORT || PORT); |
| require('../fixtures/simple-http-server.js').listen(port); |
| } |
| |
| function main({ type, len, c, duration }) { |
| process.env.PORT = PORT; |
| let workers = 0; |
| const w1 = cluster.fork(); |
| const w2 = cluster.fork(); |
| |
| cluster.on('listening', () => { |
| workers++; |
| if (workers < 2) |
| return; |
| |
| setImmediate(() => { |
| const path = `/${type}/${len}`; |
| |
| bench.http({ |
| path: path, |
| connections: c, |
| duration |
| }, () => { |
| w1.destroy(); |
| w2.destroy(); |
| }); |
| }); |
| }); |
| } |