bson/testdata/change-streams/change-streams-showExpandedEvents.yml
2025-03-17 20:58:26 +01:00

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