summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Seyster <justin.seyster@mongodb.com>2021-10-04 13:22:04 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-10-04 18:31:26 +0000
commit150fe2c61dc165aff3b9fadea1e092dba71da97b (patch)
tree153612746514e7d9baa818dfb27c0359472cf617
parent0ccb53fc557ecab4cf5bf3b5df3a52ffa1911f89 (diff)
downloadmongo-150fe2c61dc165aff3b9fadea1e092dba71da97b.tar.gz
SERVER-60227 Make change_stream_basic_match_pushdown_rewrite.js more robust
-rw-r--r--jstests/change_streams/oplog_rewrite/change_stream_basic_match_pushdown_rewrite.js22
1 files changed, 15 insertions, 7 deletions
diff --git a/jstests/change_streams/oplog_rewrite/change_stream_basic_match_pushdown_rewrite.js b/jstests/change_streams/oplog_rewrite/change_stream_basic_match_pushdown_rewrite.js
index 76c4ed2d1f2..ec45e81871a 100644
--- a/jstests/change_streams/oplog_rewrite/change_stream_basic_match_pushdown_rewrite.js
+++ b/jstests/change_streams/oplog_rewrite/change_stream_basic_match_pushdown_rewrite.js
@@ -113,12 +113,14 @@ const txnChangeStream = coll.aggregate(
assert.soon(() => txnChangeStream.hasNext());
const event3 = txnChangeStream.next();
assert.eq(event3.operationType, "insert", event3);
-assert.eq(event3.documentKey._id, 1, event3);
assert.soon(() => txnChangeStream.hasNext());
const event4 = txnChangeStream.next();
assert.eq(event4.operationType, "insert", event4);
-assert.eq(event4.documentKey._id, 2, event4);
+
+// Note that the stream may output the two inserts in either order. Because they are within a
+// transaction, they effectively occur at exactly the same time.
+assert.sameMembers([1, 2], [event3.documentKey._id, event4.documentKey._id], [event3, event4]);
assert(!txnChangeStream.hasNext());
txnChangeStream.close();
@@ -167,13 +169,19 @@ const collationChangeStream = coll.aggregate(
[{$changeStream: {resumeAfter: resumeAfterToken}}, {$match: {"fullDocument.string": "value"}}],
{collation: {locale: "en_US", strength: 2}});
-["Value", "vAlue", "vaLue", "valUe"].forEach(val => {
+let stringValues = [];
+for (let i = 0; i < 4; ++i) {
assert.soon(() => collationChangeStream.hasNext());
- const fullDocumentEvent = collationChangeStream.next();
- assert.eq(fullDocumentEvent.fullDocument.string, val, fullDocumentEvent);
-});
-
+ stringValues.push(collationChangeStream.next().fullDocument.string);
+}
assert(!collationChangeStream.hasNext());
collationChangeStream.close();
+
+assert.eq(stringValues.slice(0, 2), ["Value", "vAlue"]);
+
+// Again, the stream may output these two inserts in either order. Because they are within a
+// transaction, they effectively occur at exactly the same time.
+assert.sameMembers(stringValues.slice(2, 4), ["vaLue", "valUe"]);
+
st.stop();
})();