349 lines
8.4 KiB
YAML
349 lines
8.4 KiB
YAML
# This test doesn't check contents of command-started events.
|
|
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: default readPreference
|
|
|
|
operations:
|
|
- name: startTransaction
|
|
object: session0
|
|
- name: insertMany
|
|
object: collection
|
|
arguments:
|
|
documents: &insertedDocs
|
|
- _id: 1
|
|
- _id: 2
|
|
- _id: 3
|
|
- _id: 4
|
|
session: session0
|
|
result:
|
|
insertedIds: {0: 1, 1: 2, 2: 3, 3: 4}
|
|
- name: aggregate
|
|
object: collection
|
|
collectionOptions:
|
|
# The driver overrides the collection's read pref with the
|
|
# transaction's so count runs with Primary and succeeds.
|
|
readPreference:
|
|
mode: Secondary
|
|
arguments:
|
|
session: session0
|
|
pipeline:
|
|
- $match:
|
|
_id: 1
|
|
- $count: count
|
|
result:
|
|
- count: 1
|
|
- name: find
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Secondary
|
|
arguments:
|
|
session: session0
|
|
batchSize: 3
|
|
result: *insertedDocs
|
|
- name: aggregate
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Secondary
|
|
arguments:
|
|
pipeline:
|
|
- $project:
|
|
_id: 1
|
|
batchSize: 3
|
|
session: session0
|
|
result: *insertedDocs
|
|
- name: commitTransaction
|
|
object: session0
|
|
|
|
outcome:
|
|
collection:
|
|
data: *insertedDocs
|
|
|
|
- description: primary readPreference
|
|
|
|
operations:
|
|
- name: startTransaction
|
|
object: session0
|
|
arguments:
|
|
options:
|
|
readPreference:
|
|
mode: Primary
|
|
- name: insertMany
|
|
object: collection
|
|
arguments:
|
|
documents: &insertedDocs
|
|
- _id: 1
|
|
- _id: 2
|
|
- _id: 3
|
|
- _id: 4
|
|
session: session0
|
|
result:
|
|
insertedIds: {0: 1, 1: 2, 2: 3, 3: 4}
|
|
- name: aggregate
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Secondary
|
|
arguments:
|
|
session: session0
|
|
pipeline:
|
|
- $match:
|
|
_id: 1
|
|
- $count: count
|
|
result:
|
|
- count: 1
|
|
- name: find
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Secondary
|
|
arguments:
|
|
session: session0
|
|
batchSize: 3
|
|
result: *insertedDocs
|
|
- name: aggregate
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Secondary
|
|
arguments:
|
|
pipeline:
|
|
- $project:
|
|
_id: 1
|
|
batchSize: 3
|
|
session: session0
|
|
result: *insertedDocs
|
|
- name: commitTransaction
|
|
object: session0
|
|
|
|
outcome:
|
|
collection:
|
|
data: *insertedDocs
|
|
|
|
- description: secondary readPreference
|
|
|
|
operations:
|
|
- name: startTransaction
|
|
object: session0
|
|
arguments:
|
|
options:
|
|
readPreference:
|
|
mode: Secondary
|
|
- name: insertMany
|
|
object: collection
|
|
arguments:
|
|
documents: &insertedDocs
|
|
- _id: 1
|
|
- _id: 2
|
|
- _id: 3
|
|
- _id: 4
|
|
session: session0
|
|
result:
|
|
insertedIds: {0: 1, 1: 2, 2: 3, 3: 4}
|
|
- name: aggregate
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Primary
|
|
arguments:
|
|
session: session0
|
|
pipeline:
|
|
- $match:
|
|
_id: 1
|
|
- $count: count
|
|
result:
|
|
errorContains: read preference in a transaction must be primary
|
|
- name: find
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Primary
|
|
arguments:
|
|
session: session0
|
|
batchSize: 3
|
|
result:
|
|
errorContains: read preference in a transaction must be primary
|
|
- name: aggregate
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Primary
|
|
arguments:
|
|
pipeline:
|
|
- $project:
|
|
_id: 1
|
|
batchSize: 3
|
|
session: session0
|
|
result:
|
|
errorContains: read preference in a transaction must be primary
|
|
- name: abortTransaction
|
|
object: session0
|
|
|
|
outcome:
|
|
collection:
|
|
data: []
|
|
|
|
- description: primaryPreferred readPreference
|
|
|
|
operations:
|
|
- name: startTransaction
|
|
object: session0
|
|
arguments:
|
|
options:
|
|
readPreference:
|
|
mode: PrimaryPreferred
|
|
- name: insertMany
|
|
object: collection
|
|
arguments:
|
|
documents: &insertedDocs
|
|
- _id: 1
|
|
- _id: 2
|
|
- _id: 3
|
|
- _id: 4
|
|
session: session0
|
|
result:
|
|
insertedIds: {0: 1, 1: 2, 2: 3, 3: 4}
|
|
- name: aggregate
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Primary
|
|
arguments:
|
|
session: session0
|
|
pipeline:
|
|
- $match:
|
|
_id: 1
|
|
- $count: count
|
|
result:
|
|
errorContains: read preference in a transaction must be primary
|
|
- name: find
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Primary
|
|
arguments:
|
|
session: session0
|
|
batchSize: 3
|
|
result:
|
|
errorContains: read preference in a transaction must be primary
|
|
- name: aggregate
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Primary
|
|
arguments:
|
|
pipeline:
|
|
- $project:
|
|
_id: 1
|
|
batchSize: 3
|
|
session: session0
|
|
result:
|
|
errorContains: read preference in a transaction must be primary
|
|
- name: abortTransaction
|
|
object: session0
|
|
|
|
outcome:
|
|
collection:
|
|
data: []
|
|
|
|
- description: nearest readPreference
|
|
|
|
operations:
|
|
- name: startTransaction
|
|
object: session0
|
|
arguments:
|
|
options:
|
|
readPreference:
|
|
mode: Nearest
|
|
- name: insertMany
|
|
object: collection
|
|
arguments:
|
|
documents: &insertedDocs
|
|
- _id: 1
|
|
- _id: 2
|
|
- _id: 3
|
|
- _id: 4
|
|
session: session0
|
|
result:
|
|
insertedIds: {0: 1, 1: 2, 2: 3, 3: 4}
|
|
- name: aggregate
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Primary
|
|
arguments:
|
|
session: session0
|
|
pipeline:
|
|
- $match:
|
|
_id: 1
|
|
- $count: count
|
|
result:
|
|
errorContains: read preference in a transaction must be primary
|
|
- name: find
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Primary
|
|
arguments:
|
|
session: session0
|
|
batchSize: 3
|
|
result:
|
|
errorContains: read preference in a transaction must be primary
|
|
- name: aggregate
|
|
object: collection
|
|
collectionOptions:
|
|
readPreference:
|
|
mode: Primary
|
|
arguments:
|
|
pipeline:
|
|
- $project:
|
|
_id: 1
|
|
batchSize: 3
|
|
session: session0
|
|
result:
|
|
errorContains: read preference in a transaction must be primary
|
|
- name: abortTransaction
|
|
object: session0
|
|
|
|
outcome:
|
|
collection:
|
|
data: []
|
|
|
|
- description: secondary write only
|
|
|
|
operations:
|
|
- name: startTransaction
|
|
object: session0
|
|
arguments:
|
|
options:
|
|
readPreference:
|
|
mode: Secondary
|
|
- name: insertOne
|
|
object: collection
|
|
arguments:
|
|
session: session0
|
|
document:
|
|
_id: 1
|
|
result:
|
|
insertedId: 1
|
|
- name: commitTransaction
|
|
object: session0
|
|
|
|
outcome:
|
|
collection:
|
|
data:
|
|
- _id: 1
|