Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CXX-3208 update SDAM monitoring tests following mongo-c-driver a91d6f6a #1332

Merged
merged 2 commits into from
Feb 13, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions src/mongocxx/test/sdam-monitoring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
SECTION("Server Events") {
int server_opening_events = 0;
int server_changed_events = 0;
int server_closed_events = 0;

///////////////////////////////////////////////////////////////////////
// Begin server description listener lambdas
Expand Down Expand Up @@ -117,7 +118,10 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
BSONCXX_TEST_EXCEPTION_GUARD_END(eguard);
});

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

///////////////////////////////////////////////////////////////////////
// End server description listener lambdas
Expand All @@ -127,6 +131,7 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
BSONCXX_TEST_EXCEPTION_GUARD_CHECK(eguard);
REQUIRE(server_opening_events > 0);
REQUIRE(server_changed_events > 0);
REQUIRE(server_closed_events > 0);
}

SECTION("Topology Events") {
Expand Down Expand Up @@ -171,14 +176,18 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
REQUIRE_FALSE(old_td.has_writable_server());
}

if (topology_type == "replicaset") {
if (new_td.has_writable_server()) {
REQUIRE(new_type == "ReplicaSetWithPrimary");
// A topology_changed_event may also be triggered when server monitoring closes,
// which transitions the topology description into an "Unknown" state.
CHECKED_IF(new_type != "Unknown") {
if (topology_type == "replicaset") {
if (new_td.has_writable_server()) {
REQUIRE(new_type == "ReplicaSetWithPrimary");
} else {
REQUIRE(new_type == "ReplicaSetNoPrimary");
}
} else {
REQUIRE(new_type == "ReplicaSetNoPrimary");
REQUIRE(new_type == "Single");
}
} else {
REQUIRE(new_type == "Single");
}

for (auto&& new_sd : new_servers) {
Expand Down