{ "description": "change-streams-showExpandedEvents", "schemaVersion": "1.7", "runOnRequirements": [ { "minServerVersion": "6.0.0", "topologies": [ "replicaset", "sharded" ], "serverless": "forbid" } ], "createEntities": [ { "client": { "id": "client0", "observeEvents": [ "commandStartedEvent" ], "ignoreCommandMonitoringEvents": [ "killCursors" ], "useMultipleMongoses": false } }, { "database": { "id": "database0", "client": "client0", "databaseName": "database0" } }, { "collection": { "id": "collection0", "database": "database0", "collectionName": "collection0" } }, { "database": { "id": "database1", "client": "client0", "databaseName": "database1" } }, { "collection": { "id": "collection1", "database": "database1", "collectionName": "collection1" } }, { "database": { "id": "shardedDb", "client": "client0", "databaseName": "shardedDb" } }, { "database": { "id": "adminDb", "client": "client0", "databaseName": "admin" } }, { "collection": { "id": "shardedCollection", "database": "shardedDb", "collectionName": "shardedCollection" } } ], "initialData": [ { "collectionName": "collection0", "databaseName": "database0", "documents": [] } ], "tests": [ { "description": "when provided, showExpandedEvents is sent as a part of the aggregate command", "operations": [ { "name": "createChangeStream", "object": "collection0", "arguments": { "pipeline": [], "showExpandedEvents": true }, "saveResultAsEntity": "changeStream0" } ], "expectEvents": [ { "client": "client0", "ignoreExtraEvents": true, "events": [ { "commandStartedEvent": { "command": { "aggregate": "collection0", "cursor": {}, "pipeline": [ { "$changeStream": { "showExpandedEvents": true } } ] }, "commandName": "aggregate", "databaseName": "database0" } } ] } ] }, { "description": "when omitted, showExpandedEvents is not sent as a part of the aggregate command", "operations": [ { "name": "createChangeStream", "object": "collection0", "arguments": { "pipeline": [] }, "saveResultAsEntity": "changeStream0" } ], "expectEvents": [ { "client": "client0", "ignoreExtraEvents": true, "events": [ { "commandStartedEvent": { "command": { "aggregate": "collection0", "cursor": {}, "pipeline": [ { "$changeStream": { "showExpandedEvents": { "$$exists": false } } } ] }, "commandName": "aggregate", "databaseName": "database0" } } ] } ] }, { "description": "when showExpandedEvents is true, new fields on change stream events are handled appropriately", "operations": [ { "name": "dropCollection", "object": "database0", "arguments": { "collection": "foo" } }, { "name": "createCollection", "object": "database0", "arguments": { "collection": "foo" } }, { "name": "createChangeStream", "object": "collection0", "arguments": { "pipeline": [], "showExpandedEvents": true }, "saveResultAsEntity": "changeStream0" }, { "name": "insertOne", "object": "collection0", "arguments": { "document": { "a": 1 } } }, { "name": "createIndex", "object": "collection0", "arguments": { "keys": { "x": 1 }, "name": "x_1" } }, { "name": "rename", "object": "collection0", "arguments": { "to": "foo", "dropTarget": true } }, { "name": "iterateUntilDocumentOrError", "object": "changeStream0", "expectResult": { "operationType": "insert", "ns": { "db": "database0", "coll": "collection0" }, "collectionUUID": { "$$exists": true } } }, { "name": "iterateUntilDocumentOrError", "object": "changeStream0", "expectResult": { "operationType": "createIndexes", "ns": { "db": "database0", "coll": "collection0" }, "operationDescription": { "$$exists": true } } }, { "name": "iterateUntilDocumentOrError", "object": "changeStream0", "expectResult": { "operationType": "rename", "ns": { "db": "database0", "coll": "collection0" }, "to": { "db": "database0", "coll": "foo" }, "operationDescription": { "dropTarget": { "$$exists": true }, "to": { "db": "database0", "coll": "foo" } } } } ] }, { "description": "when showExpandedEvents is true, createIndex events are reported", "operations": [ { "name": "createChangeStream", "object": "collection0", "arguments": { "pipeline": [ { "$match": { "operationType": { "$ne": "create" } } } ], "showExpandedEvents": true }, "saveResultAsEntity": "changeStream0" }, { "name": "createIndex", "object": "collection0", "arguments": { "keys": { "x": 1 }, "name": "x_1" } }, { "name": "iterateUntilDocumentOrError", "object": "changeStream0", "expectResult": { "operationType": "createIndexes" } } ] }, { "description": "when showExpandedEvents is true, dropIndexes events are reported", "operations": [ { "name": "createIndex", "object": "collection0", "arguments": { "keys": { "x": 1 }, "name": "x_1" } }, { "name": "createChangeStream", "object": "collection0", "arguments": { "pipeline": [], "showExpandedEvents": true }, "saveResultAsEntity": "changeStream0" }, { "name": "dropIndex", "object": "collection0", "arguments": { "name": "x_1" } }, { "name": "iterateUntilDocumentOrError", "object": "changeStream0", "expectResult": { "operationType": "dropIndexes" } } ] }, { "description": "when showExpandedEvents is true, create events are reported", "operations": [ { "name": "dropCollection", "object": "database0", "arguments": { "collection": "foo" } }, { "name": "createChangeStream", "object": "database0", "arguments": { "pipeline": [], "showExpandedEvents": true }, "saveResultAsEntity": "changeStream0" }, { "name": "createCollection", "object": "database0", "arguments": { "collection": "foo" } }, { "name": "iterateUntilDocumentOrError", "object": "changeStream0", "expectResult": { "operationType": "create" } } ] }, { "description": "when showExpandedEvents is true, create events on views are reported", "operations": [ { "name": "dropCollection", "object": "database0", "arguments": { "collection": "foo" } }, { "name": "createChangeStream", "object": "database0", "arguments": { "pipeline": [], "showExpandedEvents": true }, "saveResultAsEntity": "changeStream0" }, { "name": "createCollection", "object": "database0", "arguments": { "collection": "foo", "viewOn": "testName" } }, { "name": "iterateUntilDocumentOrError", "object": "changeStream0", "expectResult": { "operationType": "create" } } ] }, { "description": "when showExpandedEvents is true, modify events are reported", "operations": [ { "name": "createIndex", "object": "collection0", "arguments": { "keys": { "x": 1 }, "name": "x_2" } }, { "name": "createChangeStream", "object": "collection0", "arguments": { "pipeline": [], "showExpandedEvents": true }, "saveResultAsEntity": "changeStream0" }, { "name": "runCommand", "object": "database0", "arguments": { "command": { "collMod": "collection0" }, "commandName": "collMod" } }, { "name": "iterateUntilDocumentOrError", "object": "changeStream0", "expectResult": { "operationType": "modify" } } ] }, { "description": "when showExpandedEvents is true, shardCollection events are reported", "runOnRequirements": [ { "topologies": [ "sharded" ] } ], "operations": [ { "name": "dropCollection", "object": "shardedDb", "arguments": { "collection": "shardedCollection" } }, { "name": "createCollection", "object": "shardedDb", "arguments": { "collection": "shardedCollection" } }, { "name": "createChangeStream", "object": "shardedCollection", "arguments": { "pipeline": [], "showExpandedEvents": true }, "saveResultAsEntity": "changeStream0" }, { "name": "runCommand", "object": "adminDb", "arguments": { "command": { "shardCollection": "shardedDb.shardedCollection", "key": { "_id": 1 } }, "commandName": "shardCollection" } }, { "name": "iterateUntilDocumentOrError", "object": "changeStream0", "expectResult": { "operationType": "shardCollection" } } ] } ] }