bson/testdata/unified-test-format/valid-pass/poc-retryable-reads.yml
2025-03-17 20:58:26 +01:00

194 lines
5.3 KiB
YAML

description: "poc-retryable-reads"
schemaVersion: "1.0"
runOnRequirements:
- minServerVersion: "4.0"
topologies: [ single, replicaset ]
- minServerVersion: "4.1.7"
topologies: [ sharded ]
createEntities:
- client:
id: &client0 client0
useMultipleMongoses: false
observeEvents: [ commandStartedEvent ]
- client:
id: &client1 client1
uriOptions: { retryReads: false }
useMultipleMongoses: false
observeEvents: [ commandStartedEvent ]
- database:
id: &database0 database0
client: *client0
databaseName: &databaseName retryable-reads-tests
- database:
id: &database1 database1
client: *client1
databaseName: *databaseName
- collection:
id: &collection0 collection0
database: *database0
collectionName: &collectionName coll
- collection:
id: &collection1 collection1
database: *database1
collectionName: *collectionName
initialData:
- collectionName: *collectionName
databaseName: *databaseName
documents:
- {_id: 1, x: 11}
- {_id: 2, x: 22}
- {_id: 3, x: 33}
tests:
- description: "Aggregate succeeds after InterruptedAtShutdown"
operations:
- name: failPoint
object: testRunner
arguments:
client: *client0
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: [ aggregate ]
errorCode: 11600 # InterruptedAtShutdown
- name: aggregate
object: *collection0
arguments:
pipeline: &pipeline
- $match: { _id: { $gt: 1 } }
- $sort: { x: 1 }
expectResult:
- { _id: 2, x: 22 }
- { _id: 3, x: 33 }
expectEvents:
- client: *client0
events:
- commandStartedEvent:
command:
aggregate: *collectionName
pipeline: *pipeline
databaseName: *databaseName
- commandStartedEvent:
command:
aggregate: *collectionName
pipeline: *pipeline
databaseName: *databaseName
- description: "Find succeeds on second attempt"
operations:
- name: failPoint
object: testRunner
arguments:
client: *client0
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: [ find ]
closeConnection: true
# Find options and expected result changed to use common initialData
- name: find
object: *collection0
arguments:
filter: {}
sort: { _id: 1 }
limit: 2
expectResult:
- { _id: 1, x: 11 }
- { _id: 2, x: 22 }
expectEvents:
- client: *client0
events:
- &findAttempt
commandStartedEvent:
command:
find: *collectionName
filter: {}
sort: { _id: 1 }
limit: 2
databaseName: *databaseName
- *findAttempt
- description: "Find fails on first attempt"
operations:
- name: failPoint
object: testRunner
arguments:
client: *client0
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: [ find ]
closeConnection: true
- name: find
object: *collection1 # client uses retryReads=false
arguments:
filter: {}
# Other arguments in the original test are not relevant
expectError: { isError: true }
expectEvents:
- client: *client1
events:
- commandStartedEvent:
command:
find: *collectionName
filter: {}
databaseName: *databaseName
- description: "Find fails on second attempt"
operations:
- name: failPoint
object: testRunner
arguments:
client: *client0
failPoint:
configureFailPoint: failCommand
mode: { times: 2 }
data:
failCommands: [ find ]
closeConnection: true
- name: find
object: *collection0
arguments:
filter: {}
# Other arguments in the original test are not relevant
expectError: { isError: true }
expectEvents:
- client: *client0
events:
- &findAttempt
commandStartedEvent:
command:
find: *collectionName
filter: {}
databaseName: *databaseName
- *findAttempt
- description: "ListDatabases succeeds on second attempt"
operations:
- name: failPoint
object: testRunner
arguments:
client: *client0
failPoint:
configureFailPoint: failCommand
mode: { times: 1 }
data:
failCommands: [ listDatabases ]
closeConnection: true
- name: listDatabases
object: *client0
expectEvents:
- client: *client0
events:
- commandStartedEvent:
command: { listDatabases: 1 }
- commandStartedEvent:
command: { listDatabases: 1 }