Skip to content

Commit fff2d40

Browse files
committed
GODRIVER-1825 Select the server with fewer in-use connections.
1 parent a2b9ada commit fff2d40

20 files changed

+1079
-13
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
{
2+
"description": "When in equilibrium selection is evenly distributed",
3+
"topology_description": {
4+
"type": "Sharded",
5+
"servers": [
6+
{
7+
"address": "a:27017",
8+
"avg_rtt_ms": 35,
9+
"type": "Mongos"
10+
},
11+
{
12+
"address": "b:27017",
13+
"avg_rtt_ms": 35,
14+
"type": "Mongos"
15+
},
16+
{
17+
"address": "c:27017",
18+
"avg_rtt_ms": 35,
19+
"type": "Mongos"
20+
}
21+
]
22+
},
23+
"mocked_topology_state": [
24+
{
25+
"address": "a:27017",
26+
"operation_count": 5
27+
},
28+
{
29+
"address": "b:27017",
30+
"operation_count": 5
31+
},
32+
{
33+
"address": "c:27017",
34+
"operation_count": 5
35+
}
36+
],
37+
"iterations": 2000,
38+
"outcome": {
39+
"tolerance": 0.05,
40+
"expected_frequencies": {
41+
"a:27017": 0.33,
42+
"b:27017": 0.33,
43+
"c:27017": 0.33
44+
}
45+
}
46+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
description: When in equilibrium selection is evenly distributed
2+
topology_description:
3+
type: Sharded
4+
servers:
5+
- address: a:27017
6+
avg_rtt_ms: 35
7+
type: Mongos
8+
- address: b:27017
9+
avg_rtt_ms: 35
10+
type: Mongos
11+
- address: c:27017
12+
avg_rtt_ms: 35
13+
type: Mongos
14+
mocked_topology_state:
15+
- address: a:27017
16+
operation_count: 5
17+
- address: b:27017
18+
operation_count: 5
19+
- address: c:27017
20+
operation_count: 5
21+
iterations: 2000
22+
outcome:
23+
tolerance: 0.05
24+
expected_frequencies:
25+
a:27017: 0.33
26+
b:27017: 0.33
27+
c:27017: 0.33
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
{
2+
"description": "Selections from many choices occur at correct frequencies",
3+
"topology_description": {
4+
"type": "Sharded",
5+
"servers": [
6+
{
7+
"address": "a:27017",
8+
"avg_rtt_ms": 35,
9+
"type": "Mongos"
10+
},
11+
{
12+
"address": "b:27017",
13+
"avg_rtt_ms": 35,
14+
"type": "Mongos"
15+
},
16+
{
17+
"address": "c:27017",
18+
"avg_rtt_ms": 35,
19+
"type": "Mongos"
20+
},
21+
{
22+
"address": "d:27017",
23+
"avg_rtt_ms": 35,
24+
"type": "Mongos"
25+
},
26+
{
27+
"address": "e:27017",
28+
"avg_rtt_ms": 35,
29+
"type": "Mongos"
30+
},
31+
{
32+
"address": "f:27017",
33+
"avg_rtt_ms": 35,
34+
"type": "Mongos"
35+
},
36+
{
37+
"address": "g:27017",
38+
"avg_rtt_ms": 35,
39+
"type": "Mongos"
40+
},
41+
{
42+
"address": "h:27017",
43+
"avg_rtt_ms": 35,
44+
"type": "Mongos"
45+
},
46+
{
47+
"address": "i:27017",
48+
"avg_rtt_ms": 35,
49+
"type": "Mongos"
50+
}
51+
]
52+
},
53+
"mocked_topology_state": [
54+
{
55+
"address": "a:27017",
56+
"operation_count": 0
57+
},
58+
{
59+
"address": "b:27017",
60+
"operation_count": 5
61+
},
62+
{
63+
"address": "c:27017",
64+
"operation_count": 5
65+
},
66+
{
67+
"address": "d:27017",
68+
"operation_count": 10
69+
},
70+
{
71+
"address": "e:27017",
72+
"operation_count": 10
73+
},
74+
{
75+
"address": "f:27017",
76+
"operation_count": 20
77+
},
78+
{
79+
"address": "g:27017",
80+
"operation_count": 20
81+
},
82+
{
83+
"address": "h:27017",
84+
"operation_count": 50
85+
},
86+
{
87+
"address": "i:27017",
88+
"operation_count": 60
89+
}
90+
],
91+
"iterations": 10000,
92+
"outcome": {
93+
"tolerance": 0.03,
94+
"expected_frequencies": {
95+
"a:27017": 0.22,
96+
"b:27017": 0.18,
97+
"c:27017": 0.18,
98+
"d:27017": 0.125,
99+
"e:27017": 0.125,
100+
"f:27017": 0.074,
101+
"g:27017": 0.074,
102+
"h:27017": 0.0277,
103+
"i:27017": 0
104+
}
105+
}
106+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
description: Selections from many choices occur at correct frequencies
2+
topology_description:
3+
type: Sharded
4+
servers:
5+
- address: a:27017
6+
avg_rtt_ms: 35
7+
type: Mongos
8+
- address: b:27017
9+
avg_rtt_ms: 35
10+
type: Mongos
11+
- address: c:27017
12+
avg_rtt_ms: 35
13+
type: Mongos
14+
- address: d:27017
15+
avg_rtt_ms: 35
16+
type: Mongos
17+
- address: e:27017
18+
avg_rtt_ms: 35
19+
type: Mongos
20+
- address: f:27017
21+
avg_rtt_ms: 35
22+
type: Mongos
23+
- address: g:27017
24+
avg_rtt_ms: 35
25+
type: Mongos
26+
- address: h:27017
27+
avg_rtt_ms: 35
28+
type: Mongos
29+
- address: i:27017
30+
avg_rtt_ms: 35
31+
type: Mongos
32+
mocked_topology_state:
33+
- address: a:27017
34+
operation_count: 0
35+
- address: b:27017
36+
operation_count: 5
37+
- address: c:27017
38+
operation_count: 5
39+
- address: d:27017
40+
operation_count: 10
41+
- address: e:27017
42+
operation_count: 10
43+
- address: f:27017
44+
operation_count: 20
45+
- address: g:27017
46+
operation_count: 20
47+
- address: h:27017
48+
operation_count: 50
49+
- address: i:27017
50+
operation_count: 60
51+
iterations: 10000
52+
outcome:
53+
tolerance: 0.03
54+
expected_frequencies:
55+
a:27017: 0.22
56+
b:27017: 0.18
57+
c:27017: 0.18
58+
d:27017: 0.125
59+
e:27017: 0.125
60+
f:27017: 0.074
61+
g:27017: 0.074
62+
h:27017: 0.0277
63+
i:27017: 0
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
{
2+
"description": "Least operations gets most selections, two tied share the rest",
3+
"topology_description": {
4+
"type": "Sharded",
5+
"servers": [
6+
{
7+
"address": "a:27017",
8+
"avg_rtt_ms": 35,
9+
"type": "Mongos"
10+
},
11+
{
12+
"address": "b:27017",
13+
"avg_rtt_ms": 35,
14+
"type": "Mongos"
15+
},
16+
{
17+
"address": "c:27017",
18+
"avg_rtt_ms": 35,
19+
"type": "Mongos"
20+
}
21+
]
22+
},
23+
"mocked_topology_state": [
24+
{
25+
"address": "a:27017",
26+
"operation_count": 16
27+
},
28+
{
29+
"address": "b:27017",
30+
"operation_count": 10
31+
},
32+
{
33+
"address": "c:27017",
34+
"operation_count": 16
35+
}
36+
],
37+
"iterations": 2000,
38+
"outcome": {
39+
"tolerance": 0.05,
40+
"expected_frequencies": {
41+
"a:27017": 0.165,
42+
"b:27017": 0.66,
43+
"c:27017": 0.165
44+
}
45+
}
46+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
description: Least operations gets most selections, two tied share the rest
2+
topology_description:
3+
type: Sharded
4+
servers:
5+
- address: a:27017
6+
avg_rtt_ms: 35
7+
type: Mongos
8+
- address: b:27017
9+
avg_rtt_ms: 35
10+
type: Mongos
11+
- address: c:27017
12+
avg_rtt_ms: 35
13+
type: Mongos
14+
mocked_topology_state:
15+
- address: a:27017
16+
operation_count: 16
17+
- address: b:27017
18+
operation_count: 10
19+
- address: c:27017
20+
operation_count: 16
21+
iterations: 2000
22+
outcome:
23+
tolerance: 0.05
24+
expected_frequencies:
25+
a:27017: 0.165
26+
b:27017: 0.66
27+
c:27017: 0.165
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
{
2+
"description": "When in equilibrium selection is evenly distributed (replica set)",
3+
"topology_description": {
4+
"type": "ReplicaSetWithPrimary",
5+
"servers": [
6+
{
7+
"address": "a:27017",
8+
"avg_rtt_ms": 35,
9+
"type": "RSPrimary"
10+
},
11+
{
12+
"address": "b:27017",
13+
"avg_rtt_ms": 35,
14+
"type": "RSSecondary"
15+
},
16+
{
17+
"address": "c:27017",
18+
"avg_rtt_ms": 35,
19+
"type": "RSSecondary"
20+
}
21+
]
22+
},
23+
"mocked_topology_state": [
24+
{
25+
"address": "a:27017",
26+
"operation_count": 6
27+
},
28+
{
29+
"address": "b:27017",
30+
"operation_count": 6
31+
},
32+
{
33+
"address": "c:27017",
34+
"operation_count": 6
35+
}
36+
],
37+
"iterations": 2000,
38+
"outcome": {
39+
"tolerance": 0.05,
40+
"expected_frequencies": {
41+
"a:27017": 0.33,
42+
"b:27017": 0.33,
43+
"c:27017": 0.33
44+
}
45+
}
46+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
description: When in equilibrium selection is evenly distributed (replica set)
2+
topology_description:
3+
type: ReplicaSetWithPrimary
4+
servers:
5+
- address: a:27017
6+
avg_rtt_ms: 35
7+
type: RSPrimary
8+
- address: b:27017
9+
avg_rtt_ms: 35
10+
type: RSSecondary
11+
- address: c:27017
12+
avg_rtt_ms: 35
13+
type: RSSecondary
14+
mocked_topology_state:
15+
- address: a:27017
16+
operation_count: 6
17+
- address: b:27017
18+
operation_count: 6
19+
- address: c:27017
20+
operation_count: 6
21+
iterations: 2000
22+
outcome:
23+
tolerance: 0.05
24+
expected_frequencies:
25+
a:27017: 0.33
26+
b:27017: 0.33
27+
c:27017: 0.33

0 commit comments

Comments
 (0)