@@ -63,6 +63,7 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
63
63
SECTION (" Server Events" ) {
64
64
int server_opening_events = 0 ;
65
65
int server_changed_events = 0 ;
66
+ int server_closed_events = 0 ;
66
67
67
68
// /////////////////////////////////////////////////////////////////////
68
69
// Begin server description listener lambdas
@@ -117,7 +118,10 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
117
118
BSONCXX_TEST_EXCEPTION_GUARD_END (eguard);
118
119
});
119
120
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
+ });
121
125
122
126
// /////////////////////////////////////////////////////////////////////
123
127
// End server description listener lambdas
@@ -127,6 +131,7 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
127
131
BSONCXX_TEST_EXCEPTION_GUARD_CHECK (eguard);
128
132
REQUIRE (server_opening_events > 0 );
129
133
REQUIRE (server_changed_events > 0 );
134
+ REQUIRE (server_closed_events > 0 );
130
135
}
131
136
132
137
SECTION (" Topology Events" ) {
@@ -171,14 +176,18 @@ TEST_CASE("SDAM Monitoring", "[sdam_monitoring]") {
171
176
REQUIRE_FALSE (old_td.has_writable_server ());
172
177
}
173
178
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
+ }
177
188
} else {
178
- REQUIRE (new_type == " ReplicaSetNoPrimary " );
189
+ REQUIRE (new_type == " Single " );
179
190
}
180
- } else {
181
- REQUIRE (new_type == " Single" );
182
191
}
183
192
184
193
for (auto && new_sd : new_servers) {
0 commit comments