Skip to content

Commit 9a9a014

Browse files
authored
CXX-3208 update SDAM monitoring tests following mongo-c-driver a91d6f6a (#1332)
1 parent 1bb451c commit 9a9a014

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

src/mongocxx/test/sdam-monitoring.cpp

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
6363
SECTION("Server Events") {
6464
int server_opening_events = 0;
6565
int server_changed_events = 0;
66+
int server_closed_events = 0;
6667

6768
///////////////////////////////////////////////////////////////////////
6869
// Begin server description listener lambdas
@@ -117,7 +118,10 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
117118
BSONCXX_TEST_EXCEPTION_GUARD_END(eguard);
118119
});
119120

120-
// We don't expect a ServerClosedEvent unless a replica set member is removed.
121+
apm_opts.on_server_closed([&](events::server_closed_event const& event) {
122+
server_closed_events++;
123+
CHECK(topology_id.value() == event.topology_id());
124+
});
121125

122126
///////////////////////////////////////////////////////////////////////
123127
// End server description listener lambdas
@@ -127,6 +131,7 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
127131
BSONCXX_TEST_EXCEPTION_GUARD_CHECK(eguard);
128132
REQUIRE(server_opening_events > 0);
129133
REQUIRE(server_changed_events > 0);
134+
REQUIRE(server_closed_events > 0);
130135
}
131136

132137
SECTION("Topology Events") {
@@ -171,14 +176,18 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
171176
REQUIRE_FALSE(old_td.has_writable_server());
172177
}
173178

174-
if (topology_type == "replicaset") {
175-
if (new_td.has_writable_server()) {
176-
REQUIRE(new_type == "ReplicaSetWithPrimary");
179+
// A topology_changed_event may also be triggered when server monitoring closes,
180+
// which transitions the topology description into an "Unknown" state.
181+
CHECKED_IF(new_type != "Unknown") {
182+
if (topology_type == "replicaset") {
183+
if (new_td.has_writable_server()) {
184+
REQUIRE(new_type == "ReplicaSetWithPrimary");
185+
} else {
186+
REQUIRE(new_type == "ReplicaSetNoPrimary");
187+
}
177188
} else {
178-
REQUIRE(new_type == "ReplicaSetNoPrimary");
189+
REQUIRE(new_type == "Single");
179190
}
180-
} else {
181-
REQUIRE(new_type == "Single");
182191
}
183192

184193
for (auto&& new_sd : new_servers) {

0 commit comments

Comments
 (0)