1'use strict'; 2 3const common = require('../common.js'); 4const PORT = common.PORT; 5 6const bench = common.createBenchmark(main, { 7 n: [1e3], 8 nheaders: [0, 10, 100, 1000] 9}, { flags: ['--no-warnings'] }); 10 11function main({ n, nheaders }) { 12 const http2 = require('http2'); 13 const server = http2.createServer({ 14 maxHeaderListPairs: 20000 15 }); 16 17 const headersObject = { 18 ':path': '/', 19 ':scheme': 'http', 20 'accept-encoding': 'gzip, deflate', 21 'accept-language': 'en', 22 'content-type': 'text/plain', 23 'referer': 'https://example.org/', 24 'user-agent': 'SuperBenchmarker 3000' 25 }; 26 27 for (let i = 0; i < nheaders; i++) { 28 headersObject[`foo${i}`] = `some header value ${i}`; 29 } 30 31 server.on('stream', (stream) => { 32 stream.respond(); 33 stream.end('Hi!'); 34 }); 35 server.listen(PORT, () => { 36 const client = http2.connect(`http://localhost:${PORT}/`, { 37 maxHeaderListPairs: 20000 38 }); 39 40 function doRequest(remaining) { 41 const req = client.request(headersObject); 42 req.resume(); 43 req.on('end', () => { 44 if (remaining > 0) { 45 doRequest(remaining - 1); 46 } else { 47 bench.end(n); 48 server.close(); 49 client.destroy(); 50 } 51 }); 52 } 53 54 bench.start(); 55 doRequest(n); 56 }); 57} 58