134 lines
3.3 KiB
YAML
134 lines
3.3 KiB
YAML
runOn:
|
|
-
|
|
minServerVersion: "4.0"
|
|
topology: ["replicaset"]
|
|
-
|
|
minServerVersion: "4.1.8"
|
|
topology: ["sharded"]
|
|
|
|
database_name: &database_name "transaction-tests"
|
|
collection_name: &collection_name "test"
|
|
|
|
data: []
|
|
tests:
|
|
- description: start insert start
|
|
|
|
operations:
|
|
- name: startTransaction
|
|
object: session0
|
|
- name: insertOne
|
|
object: collection
|
|
arguments:
|
|
session: session0
|
|
document:
|
|
_id: 1
|
|
result:
|
|
insertedId: 1
|
|
- name: startTransaction
|
|
object: session0
|
|
result:
|
|
# Client-side error.
|
|
errorContains: transaction already in progress
|
|
# Just to clean up.
|
|
- name: commitTransaction
|
|
object: session0
|
|
|
|
- description: start twice
|
|
|
|
operations:
|
|
- name: startTransaction
|
|
object: session0
|
|
- name: startTransaction
|
|
object: session0
|
|
result:
|
|
# Client-side error.
|
|
errorContains: transaction already in progress
|
|
|
|
- description: commit and start twice
|
|
|
|
operations:
|
|
- name: startTransaction
|
|
object: session0
|
|
- name: insertOne
|
|
object: collection
|
|
arguments:
|
|
session: session0
|
|
document:
|
|
_id: 1
|
|
result:
|
|
insertedId: 1
|
|
- name: commitTransaction
|
|
object: session0
|
|
- name: startTransaction
|
|
object: session0
|
|
- name: startTransaction
|
|
object: session0
|
|
result:
|
|
# Client-side error.
|
|
errorContains: transaction already in progress
|
|
|
|
- description: write conflict commit
|
|
|
|
operations:
|
|
- name: startTransaction
|
|
object: session0
|
|
- name: insertOne
|
|
object: collection
|
|
arguments:
|
|
session: session0
|
|
document:
|
|
_id: 1
|
|
result:
|
|
insertedId: 1
|
|
- name: startTransaction
|
|
object: session1
|
|
- name: insertOne
|
|
object: collection
|
|
arguments:
|
|
session: session1
|
|
document:
|
|
_id: 1
|
|
result:
|
|
errorCodeName: WriteConflict
|
|
errorLabelsContain: ["TransientTransactionError"]
|
|
errorLabelsOmit: ["UnknownTransactionCommitResult"]
|
|
- name: commitTransaction
|
|
object: session0
|
|
- name: commitTransaction
|
|
object: session1
|
|
result:
|
|
errorCodeName: NoSuchTransaction
|
|
errorLabelsContain: ["TransientTransactionError"]
|
|
errorLabelsOmit: ["UnknownTransactionCommitResult"]
|
|
|
|
- description: write conflict abort
|
|
|
|
operations:
|
|
- name: startTransaction
|
|
object: session0
|
|
- name: insertOne
|
|
object: collection
|
|
arguments:
|
|
session: session0
|
|
document:
|
|
_id: 1
|
|
result:
|
|
insertedId: 1
|
|
- name: startTransaction
|
|
object: session1
|
|
- name: insertOne
|
|
object: collection
|
|
arguments:
|
|
session: session1
|
|
document:
|
|
_id: 1
|
|
result:
|
|
errorCodeName: WriteConflict
|
|
errorLabelsContain: ["TransientTransactionError"]
|
|
errorLabelsOmit: ["UnknownTransactionCommitResult"]
|
|
- name: commitTransaction
|
|
object: session0
|
|
# Driver ignores "NoSuchTransaction" error.
|
|
- name: abortTransaction
|
|
object: session1
|