308 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			308 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| description: "change-streams-showExpandedEvents"
 | |
| schemaVersion: "1.7"
 | |
| runOnRequirements:
 | |
|   - minServerVersion: "6.0.0"
 | |
|     topologies: [ replicaset, sharded ]
 | |
|     serverless: forbid
 | |
| createEntities:
 | |
|   - client:
 | |
|       id: &client0 client0
 | |
|       observeEvents: [ commandStartedEvent ]
 | |
|       ignoreCommandMonitoringEvents: [ killCursors ]
 | |
|       useMultipleMongoses: false
 | |
|   - database:
 | |
|       id: &database0 database0
 | |
|       client: *client0
 | |
|       databaseName: *database0
 | |
|   - collection:
 | |
|       id: &collection0 collection0
 | |
|       database: *database0
 | |
|       collectionName: *collection0
 | |
|   - database:
 | |
|       id: &database1 database1
 | |
|       client: *client0
 | |
|       databaseName: *database1
 | |
|   - collection:
 | |
|       id: &collection1 collection1
 | |
|       database: *database1
 | |
|       collectionName: *collection1
 | |
|   - database:
 | |
|       id: &shardedDb shardedDb
 | |
|       client: *client0
 | |
|       databaseName: *shardedDb
 | |
|   - database:
 | |
|       id: &adminDb adminDb
 | |
|       client: *client0
 | |
|       databaseName: admin
 | |
|   - collection:
 | |
|       id: &shardedCollection 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 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 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: &existing-collection foo
 | |
|       - name: createCollection
 | |
|         object: *database0
 | |
|         arguments:
 | |
|           collection: *existing-collection
 | |
|       - name: createChangeStream
 | |
|         object: *collection0
 | |
|         arguments:
 | |
|           pipeline: []
 | |
|           showExpandedEvents: true
 | |
|         saveResultAsEntity: &changeStream0 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: *existing-collection
 | |
|           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: *existing-collection
 | |
|           operationDescription:
 | |
|             dropTarget:
 | |
|               $$exists: true
 | |
|             to:
 | |
|               db: *database0
 | |
|               coll: *existing-collection
 | |
| 
 | |
|   - description: "when showExpandedEvents is true, createIndex events are reported"
 | |
|     operations:
 | |
|       - name: createChangeStream
 | |
|         object: *collection0
 | |
|         arguments:
 | |
|           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
 | |
|         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: &index1 x_1
 | |
|       - name: createChangeStream
 | |
|         object: *collection0
 | |
|         arguments:
 | |
|           pipeline: []
 | |
|           showExpandedEvents: true
 | |
|         saveResultAsEntity: &changeStream0 changeStream0
 | |
|       - name: dropIndex
 | |
|         object: *collection0
 | |
|         arguments:
 | |
|           name: *index1
 | |
|       - name: iterateUntilDocumentOrError
 | |
|         object: *changeStream0
 | |
|         expectResult:
 | |
|           operationType: dropIndexes
 | |
| 
 | |
|   - description: "when showExpandedEvents is true, create events are reported"
 | |
|     operations:
 | |
|       - name: dropCollection
 | |
|         object: *database0
 | |
|         arguments:
 | |
|           collection: &collection1 foo
 | |
|       - name: createChangeStream
 | |
|         object: *database0
 | |
|         arguments:
 | |
|           pipeline: []
 | |
|           showExpandedEvents: true
 | |
|         saveResultAsEntity: &changeStream0 changeStream0
 | |
|       - name: createCollection
 | |
|         object: *database0
 | |
|         arguments:
 | |
|           collection: *collection1
 | |
|       - 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: &collection1 foo
 | |
|       - name: createChangeStream
 | |
|         object: *database0
 | |
|         arguments:
 | |
|           pipeline: []
 | |
|           showExpandedEvents: true
 | |
|         saveResultAsEntity: &changeStream0 changeStream0
 | |
|       - name: createCollection
 | |
|         object: *database0
 | |
|         arguments:
 | |
|           collection: *collection1
 | |
|           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: &index2 x_2
 | |
|       - name: createChangeStream
 | |
|         object: *collection0
 | |
|         arguments:
 | |
|           pipeline: []
 | |
|           showExpandedEvents: true
 | |
|         saveResultAsEntity: &changeStream0 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:
 | |
|       # Note: minServerVersion is specified in top-level 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 changeStream0
 | |
|       - name: runCommand
 | |
|         object: *adminDb
 | |
|         arguments:
 | |
|           command:
 | |
|             shardCollection: shardedDb.shardedCollection
 | |
|             key:
 | |
|               _id: 1
 | |
|           commandName: shardCollection
 | |
|       - name: iterateUntilDocumentOrError
 | |
|         object: *changeStream0
 | |
|         expectResult:
 | |
|           operationType: shardCollection
 |