From 12e951b5c243bf9092fb49f31c50fa606c066d6c Mon Sep 17 00:00:00 2001 From: Bailey Pearson Date: Mon, 12 Sep 2022 10:32:38 -0400 Subject: [PATCH] test(NODE-4605, NODE-4597, NODE-4618): sync latest change stream unified tests (#3402) --- .../unified/change-streams-clusterTime.json | 81 +++++++++++++++++++ .../unified/change-streams-clusterTime.yml | 40 +++++++++ .../change-streams-disambiguatedPaths.json | 5 +- .../change-streams-disambiguatedPaths.yml | 3 +- .../change-streams-showExpandedEvents.json | 10 ++- .../change-streams-showExpandedEvents.yml | 10 ++- 6 files changed, 144 insertions(+), 5 deletions(-) create mode 100644 test/spec/change-streams/unified/change-streams-clusterTime.json create mode 100644 test/spec/change-streams/unified/change-streams-clusterTime.yml diff --git a/test/spec/change-streams/unified/change-streams-clusterTime.json b/test/spec/change-streams/unified/change-streams-clusterTime.json new file mode 100644 index 0000000000..3411d4e27e --- /dev/null +++ b/test/spec/change-streams/unified/change-streams-clusterTime.json @@ -0,0 +1,81 @@ +{ + "description": "change-streams-clusterTime", + "schemaVersion": "1.3", + "createEntities": [ + { + "client": { + "id": "client0", + "useMultipleMongoses": false + } + }, + { + "database": { + "id": "database0", + "client": "client0", + "databaseName": "database0" + } + }, + { + "collection": { + "id": "collection0", + "database": "database0", + "collectionName": "collection0" + } + } + ], + "runOnRequirements": [ + { + "minServerVersion": "4.0.0", + "topologies": [ + "replicaset", + "sharded-replicaset", + "load-balanced", + "sharded" + ] + } + ], + "initialData": [ + { + "collectionName": "collection0", + "databaseName": "database0", + "documents": [] + } + ], + "tests": [ + { + "description": "clusterTime is present", + "operations": [ + { + "name": "createChangeStream", + "object": "collection0", + "arguments": { + "pipeline": [] + }, + "saveResultAsEntity": "changeStream0" + }, + { + "name": "insertOne", + "object": "collection0", + "arguments": { + "document": { + "_id": 1 + } + } + }, + { + "name": "iterateUntilDocumentOrError", + "object": "changeStream0", + "expectResult": { + "ns": { + "db": "database0", + "coll": "collection0" + }, + "clusterTime": { + "$$exists": true + } + } + } + ] + } + ] +} diff --git a/test/spec/change-streams/unified/change-streams-clusterTime.yml b/test/spec/change-streams/unified/change-streams-clusterTime.yml new file mode 100644 index 0000000000..0a547bac7d --- /dev/null +++ b/test/spec/change-streams/unified/change-streams-clusterTime.yml @@ -0,0 +1,40 @@ +description: "change-streams-clusterTime" +schemaVersion: "1.3" +createEntities: + - client: + id: &client0 client0 + useMultipleMongoses: false + - database: + id: &database0 database0 + client: *client0 + databaseName: *database0 + - collection: + id: &collection0 collection0 + database: *database0 + collectionName: *collection0 + +runOnRequirements: + - minServerVersion: "4.0.0" + topologies: [ replicaset, sharded-replicaset, load-balanced, sharded ] + +initialData: + - collectionName: *collection0 + databaseName: *database0 + documents: [] + +tests: + - description: "clusterTime is present" + operations: + - name: createChangeStream + object: *collection0 + arguments: { pipeline: [] } + saveResultAsEntity: &changeStream0 changeStream0 + - name: insertOne + object: *collection0 + arguments: + document: { _id: 1 } + - name: iterateUntilDocumentOrError + object: *changeStream0 + expectResult: + ns: { db: *database0, coll: *collection0 } + clusterTime: { $$exists: true } diff --git a/test/spec/change-streams/unified/change-streams-disambiguatedPaths.json b/test/spec/change-streams/unified/change-streams-disambiguatedPaths.json index 9a639801ee..91d8e66da2 100644 --- a/test/spec/change-streams/unified/change-streams-disambiguatedPaths.json +++ b/test/spec/change-streams/unified/change-streams-disambiguatedPaths.json @@ -1,6 +1,6 @@ { "description": "disambiguatedPaths", - "schemaVersion": "1.3", + "schemaVersion": "1.4", "createEntities": [ { "client": { @@ -31,7 +31,8 @@ "sharded-replicaset", "load-balanced", "sharded" - ] + ], + "serverless": "forbid" } ], "initialData": [ diff --git a/test/spec/change-streams/unified/change-streams-disambiguatedPaths.yml b/test/spec/change-streams/unified/change-streams-disambiguatedPaths.yml index 674c876b02..a2524d23ce 100644 --- a/test/spec/change-streams/unified/change-streams-disambiguatedPaths.yml +++ b/test/spec/change-streams/unified/change-streams-disambiguatedPaths.yml @@ -1,5 +1,5 @@ description: "disambiguatedPaths" -schemaVersion: "1.3" +schemaVersion: "1.4" createEntities: - client: id: &client0 client0 @@ -16,6 +16,7 @@ createEntities: runOnRequirements: - minServerVersion: "6.1.0" topologies: [ replicaset, sharded-replicaset, load-balanced, sharded ] + serverless: forbid initialData: - collectionName: *collection0 diff --git a/test/spec/change-streams/unified/change-streams-showExpandedEvents.json b/test/spec/change-streams/unified/change-streams-showExpandedEvents.json index fe852b5443..3eed2f534a 100644 --- a/test/spec/change-streams/unified/change-streams-showExpandedEvents.json +++ b/test/spec/change-streams/unified/change-streams-showExpandedEvents.json @@ -275,7 +275,15 @@ "name": "createChangeStream", "object": "collection0", "arguments": { - "pipeline": [], + "pipeline": [ + { + "$match": { + "operationType": { + "$ne": "create" + } + } + } + ], "showExpandedEvents": true }, "saveResultAsEntity": "changeStream0" diff --git a/test/spec/change-streams/unified/change-streams-showExpandedEvents.yml b/test/spec/change-streams/unified/change-streams-showExpandedEvents.yml index 002e17ed33..c0443d0e22 100644 --- a/test/spec/change-streams/unified/change-streams-showExpandedEvents.yml +++ b/test/spec/change-streams/unified/change-streams-showExpandedEvents.yml @@ -160,7 +160,15 @@ tests: - name: createChangeStream object: *collection0 arguments: - pipeline: [] + pipeline: + # On sharded clusters, the create command run when loading initial + # data sometimes is still reported in the change stream. To avoid + # this, we exclude the create command when creating the change + # stream, but specifically don't exclude other events to still catch + # driver errors. + - $match: + operationType: + $ne: create showExpandedEvents: true saveResultAsEntity: &changeStream0 changeStream0 - name: createIndex