diff options
author | Justin Seyster <justin.seyster@mongodb.com> | 2021-10-04 13:22:04 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-10-04 18:31:26 +0000 |
commit | 150fe2c61dc165aff3b9fadea1e092dba71da97b (patch) | |
tree | 153612746514e7d9baa818dfb27c0359472cf617 | |
parent | 0ccb53fc557ecab4cf5bf3b5df3a52ffa1911f89 (diff) | |
download | mongo-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.js | 22 |
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(); })(); |