| 'use strict'; |
| |
| const common = require('../common'); |
| const assert = require('assert'); |
| const http = require('http'); |
| |
| const server = http.createServer(common.mustCall((req, res) => { |
| if (req.url === '/first') { |
| res.end('ok'); |
| return; |
| } |
| setTimeout(() => { |
| res.end('ok'); |
| }, common.platformTimeout(500)); |
| }, 2)); |
| |
| server.keepAliveTimeout = common.platformTimeout(200); |
| |
| const agent = new http.Agent({ |
| keepAlive: true, |
| maxSockets: 1 |
| }); |
| |
| function request(path, callback) { |
| const port = server.address().port; |
| const req = http.request({ agent, path, port }, common.mustCall((res) => { |
| assert.strictEqual(res.statusCode, 200); |
| |
| res.setEncoding('utf8'); |
| |
| let result = ''; |
| res.on('data', (chunk) => { |
| result += chunk; |
| }); |
| |
| res.on('end', common.mustCall(() => { |
| assert.strictEqual(result, 'ok'); |
| callback(); |
| })); |
| })); |
| req.end(); |
| } |
| |
| server.listen(0, common.mustCall(() => { |
| request('/first', () => { |
| request('/second', () => { |
| server.close(); |
| }); |
| }); |
| })); |