Skip to content

Commit 1c1eb71

Browse files
CDRIVER-3973: Support the ignoreExtraEvents property (#1012)
This doesn't fully complete the tasks of CDRIVER-3973, but finishes a single isolated subtask thereof: Supprt for the `ignoreExtraEvents` property on `expectedEventsForClient`, which is a prereq for enabling the new changestreams tests. In this case, if `ignoreExtraEvents` is specified as `true`, we won't generate an error if the "actual events" contains more events than "expected events." Each expected event is still searched for within the "actual events" list, and anything additional is ignored.
1 parent 8bc2fd7 commit 1c1eb71

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/libmongoc/tests/unified/runner.c

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1185,6 +1185,8 @@ test_check_expected_events_for_client (test_t *test,
11851185
bson_parser_t *bp = NULL;
11861186
char *client_id = NULL;
11871187
bson_t *expected_events = NULL;
1188+
bool just_false = false;
1189+
bool *ignore_extra_events = &just_false;
11881190
entity_t *entity = NULL;
11891191
bson_iter_t iter;
11901192
event_t *eiter = NULL;
@@ -1195,6 +1197,7 @@ test_check_expected_events_for_client (test_t *test,
11951197
bp = bson_parser_new ();
11961198
bson_parser_utf8 (bp, "client", &client_id);
11971199
bson_parser_array (bp, "events", &expected_events);
1200+
bson_parser_bool_optional (bp, "ignoreExtraEvents", &ignore_extra_events);
11981201
bson_parser_utf8_optional (bp, "eventType", &event_type);
11991202
if (!bson_parser_parse (bp, expected_events_for_client, error)) {
12001203
goto done;
@@ -1224,11 +1227,19 @@ test_check_expected_events_for_client (test_t *test,
12241227
expected_num_events = bson_count_keys (expected_events);
12251228
LL_COUNT (entity->events, eiter, actual_num_events);
12261229
if (expected_num_events != actual_num_events) {
1227-
test_set_error (error,
1228-
"expected: %" PRIu32 " events but got %" PRIu32,
1229-
expected_num_events,
1230-
actual_num_events);
1231-
goto done;
1230+
bool too_many_events = actual_num_events > expected_num_events;
1231+
if (*ignore_extra_events) {
1232+
// We can never have too many events
1233+
too_many_events = false;
1234+
}
1235+
bool too_few_events = actual_num_events < expected_num_events;
1236+
if (too_few_events || too_many_events) {
1237+
test_set_error (error,
1238+
"expected: %" PRIu32 " events but got %" PRIu32,
1239+
expected_num_events,
1240+
actual_num_events);
1241+
goto done;
1242+
}
12321243
}
12331244

12341245
eiter = entity->events;

0 commit comments

Comments
 (0)