blob: 30fa5c970c1206f1b4b1c75731b90b3a8398eceb (
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
/**
* @tags: [requires_fcv_63]
*
* Tests that when the max number of connections mongod will accept has been reached (i.e.
* maxConns), serverStatus labels subsequent connection attempts as rejected connections.
*/
(function() {
'use strict';
// This value must be equivalent to the value specified in the config yaml file.
const configuredMaxConns = 5;
let conn = MongoRunner.runMongod({
config: "jstests/noPassthrough/libs/net.max_incoming_connections.yaml",
});
let db = conn.getDB("test");
function getStats() {
return assert.commandWorked(conn.getDB("admin").runCommand({serverStatus: 1}));
}
function verifyStats({expectedCurrentCount, expectedRejectedCount}) {
// Verify that we have updated serverStatus.
jsTestLog(`calling verifyStats with expectedCurrentCount: ${
expectedCurrentCount}, expectedRejectedCount: ${expectedRejectedCount}`);
let serverStatus = getStats();
assert.soon(
() => {
const actualCurrentCount = serverStatus.connections.current;
const actualRejectedCount = serverStatus.connections.rejected;
jsTestLog(`expectedCurrentCount: ${expectedCurrentCount}, expectedRejectedCount: ${
expectedRejectedCount}, actualCurrentCount: ${
actualCurrentCount}, actualRejectedCount: ${actualRejectedCount}`);
return expectedCurrentCount == actualCurrentCount &&
expectedRejectedCount == actualRejectedCount;
},
"Failed to verify initial conditions. serverStatus.connections: " +
tojson(serverStatus.connections),
10000);
assert.eq(serverStatus.connections["available"], configuredMaxConns - expectedCurrentCount);
}
let conns = [];
let expectedCurrentCount = 1;
let expectedRejectedCount = 0;
for (var i = 0; i < configuredMaxConns * 2; i++) {
try {
conns.push(new Mongo(db.getMongo().host));
++expectedCurrentCount;
} catch (e) {
jsTestLog(e);
assert(i + 1 >= configuredMaxConns);
++expectedRejectedCount;
}
verifyStats(
{expectedCurrentCount: expectedCurrentCount, expectedRejectedCount: expectedRejectedCount});
}
MongoRunner.stopMongod(conn);
})();
|