Skip to content

Commit 751e1f6

Browse files
RUST-1018 Update max staleness tests to report a 3.6+ wire version (#496)
1 parent d1e7f6f commit 751e1f6

File tree

76 files changed

+346
-517
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+346
-517
lines changed

src/sdam/description/topology/server_selection/test/mod.rs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::time::Duration;
1+
use std::{collections::HashMap, time::Duration};
22

33
use serde::Deserialize;
44

@@ -30,20 +30,15 @@ impl TestTopologyDescription {
3030
self,
3131
heartbeat_frequency: Option<Duration>,
3232
) -> Option<TopologyDescription> {
33-
let servers: Option<Vec<ServerDescription>> = self
33+
let servers: HashMap<ServerAddress, ServerDescription> = self
3434
.servers
3535
.into_iter()
36-
// The driver doesn't support server versions low enough not to support max staleness, so we
37-
// just manually filter them out here.
38-
.filter(|server| server.max_wire_version.map(|version| version >= 5).unwrap_or(true))
39-
.map(|sd| sd.into_server_description())
36+
.filter_map(|sd| {
37+
sd.into_server_description()
38+
.map(|sd| (sd.address.clone(), sd))
39+
})
4040
.collect();
4141

42-
let servers = match servers {
43-
Some(servers) => servers,
44-
None => return None,
45-
};
46-
4742
TopologyDescription {
4843
single_seed: servers.len() == 1,
4944
topology_type: self.topology_type,
@@ -56,10 +51,7 @@ impl TestTopologyDescription {
5651
cluster_time: None,
5752
local_threshold: None,
5853
heartbeat_freq: heartbeat_frequency,
59-
servers: servers
60-
.into_iter()
61-
.map(|server| (server.address.clone(), server))
62-
.collect(),
54+
servers,
6355
}
6456
.into()
6557
}

src/test/spec/json/max-staleness/README.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ Each test specifies that it expects an error, or specifies two sets of servers:
6161
tests pass or fail deterministically.
6262

6363
If the file contains ``error: true``, drivers MUST test that they throw an
64-
error during server selection, due to an invalid read preference or
65-
incompatible wire versions. For other files, drivers MUST test that they
66-
correctly select the set of servers in ``in_latency_window``.
64+
error during server selection due to an invalid read preference. For other
65+
files, drivers MUST test that they correctly select the set of servers in
66+
``in_latency_window``.
6767

6868
Drivers MAY also test that before filtration by latency, they select the
6969
specified set of "suitable" servers.

src/test/spec/json/max-staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"type": "RSSecondary",
88
"avg_rtt_ms": 50,
99
"lastUpdateTime": 0,
10-
"maxWireVersion": 5,
10+
"maxWireVersion": 6,
1111
"lastWrite": {
1212
"lastWriteDate": {
1313
"$numberLong": "1000001"
@@ -19,7 +19,7 @@
1919
"type": "RSSecondary",
2020
"avg_rtt_ms": 5,
2121
"lastUpdateTime": 0,
22-
"maxWireVersion": 5,
22+
"maxWireVersion": 6,
2323
"lastWrite": {
2424
"lastWriteDate": {
2525
"$numberLong": "1"
@@ -37,7 +37,7 @@
3737
"type": "RSSecondary",
3838
"avg_rtt_ms": 50,
3939
"lastUpdateTime": 0,
40-
"maxWireVersion": 5,
40+
"maxWireVersion": 6,
4141
"lastWrite": {
4242
"lastWriteDate": {
4343
"$numberLong": "1000001"
@@ -49,7 +49,7 @@
4949
"type": "RSSecondary",
5050
"avg_rtt_ms": 5,
5151
"lastUpdateTime": 0,
52-
"maxWireVersion": 5,
52+
"maxWireVersion": 6,
5353
"lastWrite": {
5454
"lastWriteDate": {
5555
"$numberLong": "1"
@@ -63,7 +63,7 @@
6363
"type": "RSSecondary",
6464
"avg_rtt_ms": 5,
6565
"lastUpdateTime": 0,
66-
"maxWireVersion": 5,
66+
"maxWireVersion": 6,
6767
"lastWrite": {
6868
"lastWriteDate": {
6969
"$numberLong": "1"

src/test/spec/json/max-staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ topology_description:
88
type: RSSecondary
99
avg_rtt_ms: 50 # Too far.
1010
lastUpdateTime: 0
11-
maxWireVersion: 5
11+
maxWireVersion: 6
1212
lastWrite: {lastWriteDate: {$numberLong: "1000001"}}
1313
- &2
1414
address: b:27017
1515
type: RSSecondary
1616
avg_rtt_ms: 5
1717
lastUpdateTime: 0
18-
maxWireVersion: 5
18+
maxWireVersion: 6
1919
lastWrite: {lastWriteDate: {$numberLong: "1"}} # Very stale.
2020
read_preference:
2121
mode: Nearest

src/test/spec/json/max-staleness/ReplicaSetNoPrimary/Incompatible.json

Lines changed: 0 additions & 36 deletions
This file was deleted.

src/test/spec/json/max-staleness/ReplicaSetNoPrimary/Incompatible.yml

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/test/spec/json/max-staleness/ReplicaSetNoPrimary/LastUpdateTime.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"$numberLong": "125002"
1414
}
1515
},
16-
"maxWireVersion": 5
16+
"maxWireVersion": 6
1717
},
1818
{
1919
"address": "b:27017",
@@ -25,7 +25,7 @@
2525
"$numberLong": "2"
2626
}
2727
},
28-
"maxWireVersion": 5
28+
"maxWireVersion": 6
2929
},
3030
{
3131
"address": "c:27017",
@@ -37,7 +37,7 @@
3737
"$numberLong": "1"
3838
}
3939
},
40-
"maxWireVersion": 5
40+
"maxWireVersion": 6
4141
}
4242
]
4343
},
@@ -56,7 +56,7 @@
5656
"$numberLong": "125002"
5757
}
5858
},
59-
"maxWireVersion": 5
59+
"maxWireVersion": 6
6060
},
6161
{
6262
"address": "b:27017",
@@ -68,7 +68,7 @@
6868
"$numberLong": "2"
6969
}
7070
},
71-
"maxWireVersion": 5
71+
"maxWireVersion": 6
7272
}
7373
],
7474
"in_latency_window": [
@@ -82,7 +82,7 @@
8282
"$numberLong": "125002"
8383
}
8484
},
85-
"maxWireVersion": 5
85+
"maxWireVersion": 6
8686
}
8787
]
8888
}

src/test/spec/json/max-staleness/ReplicaSetNoPrimary/LastUpdateTime.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,21 @@ topology_description:
88
avg_rtt_ms: 5
99
lastUpdateTime: 1
1010
lastWrite: {lastWriteDate: {$numberLong: "125002"}}
11-
maxWireVersion: 5
11+
maxWireVersion: 6
1212
- &2
1313
address: b:27017
1414
type: RSSecondary
1515
avg_rtt_ms: 50 # Too far.
1616
lastUpdateTime: 25002 # Not used when there's no primary.
1717
lastWrite: {lastWriteDate: {$numberLong: "2"}} # 125 sec stale + 25 sec heartbeat <= 150 sec maxStaleness.
18-
maxWireVersion: 5
18+
maxWireVersion: 6
1919
- &3
2020
address: c:27017
2121
type: RSSecondary
2222
avg_rtt_ms: 5
2323
lastUpdateTime: 25001
2424
lastWrite: {lastWriteDate: {$numberLong: "1"}} # Too stale.
25-
maxWireVersion: 5
25+
maxWireVersion: 6
2626
read_preference:
2727
mode: Nearest
2828
maxStalenessSeconds: 150
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"topology_description": {
3+
"type": "ReplicaSetNoPrimary",
4+
"servers": [
5+
{
6+
"address": "a:27017",
7+
"type": "Unknown"
8+
},
9+
{
10+
"address": "b:27017",
11+
"type": "Unknown"
12+
}
13+
]
14+
},
15+
"read_preference": {
16+
"mode": "Nearest",
17+
"maxStalenessSeconds": 1
18+
},
19+
"error": true
20+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# maxStalenessSeconds must be at least 90 seconds, even with no known servers.
2+
---
3+
topology_description:
4+
type: ReplicaSetNoPrimary
5+
servers:
6+
- &1
7+
address: a:27017
8+
type: Unknown
9+
- &2
10+
address: b:27017
11+
type: Unknown
12+
read_preference:
13+
mode: Nearest
14+
maxStalenessSeconds: 1 # Too small.
15+
error: true

0 commit comments

Comments
 (0)