summaryrefslogtreecommitdiff
path: root/test/parallel/test-http-agent-maxsockets.js
blob: 267f820e0435ebe080e65271210aebe0766ef6e3 (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
40
41
42
43
44
45
46
47
48
49
50
'use strict';
const common = require('../common');
const assert = require('assert');
const http = require('http');
const Countdown = require('../common/countdown');

const agent = new http.Agent({
  keepAlive: true,
  keepAliveMsecs: 1000,
  maxSockets: 2,
  maxFreeSockets: 2
});

const server = http.createServer(common.mustCall((req, res) => {
  res.end('hello world');
}, 2));

server.keepAliveTimeout = 0;

function get(path, callback) {
  return http.get({
    host: 'localhost',
    port: server.address().port,
    agent: agent,
    path: path
  }, callback);
}

const countdown = new Countdown(2, () => {
  const freepool = agent.freeSockets[Object.keys(agent.freeSockets)[0]];
  assert.strictEqual(freepool.length, 2,
                     `expect keep 2 free sockets, but got ${freepool.length}`);
  agent.destroy();
  server.close();
});

function dec() {
  process.nextTick(() => countdown.dec());
}

function onGet(res) {
  assert.strictEqual(res.statusCode, 200);
  res.resume();
  res.on('end', common.mustCall(dec));
}

server.listen(0, common.mustCall(() => {
  get('/1', common.mustCall(onGet));
  get('/2', common.mustCall(onGet));
}));