aboutsummaryrefslogtreecommitdiff
path: root/benchmark/http2/write.js
blob: 91b9c8f0c5c073e15887f5367af5b4a7a35c1bc5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'use strict';

const common = require('../common.js');
const PORT = common.PORT;

const bench = common.createBenchmark(main, {
  streams: [100, 200, 1000],
  length: [64 * 1024, 128 * 1024, 256 * 1024, 1024 * 1024],
  size: [100000],
  benchmarker: ['h2load']
}, { flags: ['--no-warnings', '--expose-http2'] });

function main(conf) {
  const m = +conf.streams;
  const l = +conf.length;
  const s = +conf.size;
  const http2 = require('http2');
  const server = http2.createServer();
  server.on('stream', (stream) => {
    stream.respond();
    let written = 0;
    function write() {
      stream.write('ü'.repeat(s));
      written += s;
      if (written < l)
        setImmediate(write);
      else
        stream.end();
    }
    write();
  });
  server.listen(PORT, () => {
    bench.http({
      path: '/',
      requests: 10000,
      maxConcurrentStreams: m,
    }, () => { server.close(); });
  });
}