• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common');
3const assert = require('assert');
4const http = require('http');
5const Countdown = require('../common/countdown');
6
7const agent = new http.Agent({
8  keepAlive: true,
9  keepAliveMsecs: 1000,
10  maxSockets: 2,
11  maxFreeSockets: 2
12});
13
14const server = http.createServer(common.mustCall((req, res) => {
15  res.end('hello world');
16}, 2));
17
18server.keepAliveTimeout = 0;
19
20function get(path, callback) {
21  return http.get({
22    host: 'localhost',
23    port: server.address().port,
24    agent: agent,
25    path: path
26  }, callback);
27}
28
29const countdown = new Countdown(2, () => {
30  const freepool = agent.freeSockets[Object.keys(agent.freeSockets)[0]];
31  assert.strictEqual(freepool.length, 2,
32                     `expect keep 2 free sockets, but got ${freepool.length}`);
33  agent.destroy();
34  server.close();
35});
36
37function dec() {
38  process.nextTick(() => countdown.dec());
39}
40
41function onGet(res) {
42  assert.strictEqual(res.statusCode, 200);
43  res.resume();
44  res.on('end', common.mustCall(dec));
45}
46
47server.listen(0, common.mustCall(() => {
48  get('/1', common.mustCall(onGet));
49  get('/2', common.mustCall(onGet));
50}));
51