bson/testdata/transactions/legacy/write-concern.yml
2025-03-17 20:58:26 +01:00

555 lines
13 KiB
YAML

# Assumes the default for transactions is the same as for all ops, tests
# setting the writeConcern to "majority".
runOn:
-
minServerVersion: "4.0"
topology: ["replicaset"]
-
minServerVersion: "4.1.8"
topology: ["sharded"]
database_name: &database_name "transaction-tests"
collection_name: &collection_name "test"
data: &data
- _id: 0
tests:
- description: commit with majority
operations:
- name: startTransaction
object: session0
arguments:
options:
writeConcern:
w: majority
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- &commitTransaction
name: commitTransaction
object: session0
expectations:
- &insertOneEvent
command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
<<: &transactionCommandArgs
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction: true
autocommit: false
readConcern:
writeConcern:
command_name: insert
database_name: *database_name
- command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 0
- _id: 1
- description: commit with default
operations:
- &startTransaction
name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- *commitTransaction
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
<<: *transactionCommandArgs
command_name: insert
database_name: *database_name
- &commitWithDefaultWCEvent
command_started_event:
command:
commitTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: commitTransaction
database_name: admin
outcome:
collection:
data:
- _id: 0
- _id: 1
- description: abort with majority
operations:
- name: startTransaction
object: session0
arguments:
options:
writeConcern:
w: majority
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
<<: *transactionCommandArgs
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
w: majority
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: *data
- description: abort with default
operations:
- name: startTransaction
object: session0
- name: insertOne
object: collection
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- name: abortTransaction
object: session0
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
ordered: true
<<: *transactionCommandArgs
command_name: insert
database_name: *database_name
- command_started_event:
command:
abortTransaction: 1
lsid: session0
txnNumber:
$numberLong: "1"
startTransaction:
autocommit: false
writeConcern:
command_name: abortTransaction
database_name: admin
outcome:
collection:
data: *data
- description: start with unacknowledged write concern
operations:
- name: startTransaction
object: session0
arguments:
options:
writeConcern:
w: 0
result:
# Client-side error.
errorContains: transactions do not support unacknowledged write concern
- description: start with implicit unacknowledged write concern
clientOptions:
w: 0
operations:
- name: startTransaction
object: session0
result:
# Client-side error.
errorContains: transactions do not support unacknowledged write concern
- description: unacknowledged write concern coll insertOne
operations:
- *startTransaction
- name: insertOne
<<: &collection_w0
object: collection
collectionOptions:
writeConcern: { w: 0 }
arguments:
session: session0
document:
_id: 1
result:
insertedId: 1
- *commitTransaction
expectations:
- *insertOneEvent
- *commitWithDefaultWCEvent
outcome:
collection:
data:
- _id: 0
- _id: 1
- description: unacknowledged write concern coll insertMany
operations:
- *startTransaction
- name: insertMany
<<: *collection_w0
arguments:
session: session0
documents:
- _id: 1
- _id: 2
result:
insertedIds: {0: 1, 1: 2}
- *commitTransaction
expectations:
- command_started_event:
command:
insert: *collection_name
documents:
- _id: 1
- _id: 2
ordered: true
<<: *transactionCommandArgs
command_name: insert
database_name: *database_name
- *commitWithDefaultWCEvent
outcome:
collection:
data:
- _id: 0
- _id: 1
- _id: 2
- description: unacknowledged write concern coll bulkWrite
operations:
- *startTransaction
- name: bulkWrite
<<: *collection_w0
arguments:
session: session0
requests:
- name: insertOne
arguments:
document: {_id: 1}
result:
deletedCount: 0
insertedCount: 1
insertedIds: {0: 1}
matchedCount: 0
modifiedCount: 0
upsertedCount: 0
upsertedIds: {}
- *commitTransaction
expectations:
- *insertOneEvent
- *commitWithDefaultWCEvent
outcome:
collection:
data:
- _id: 0
- _id: 1
- description: unacknowledged write concern coll deleteOne
operations:
- *startTransaction
- name: deleteOne
<<: *collection_w0
arguments:
session: session0
filter:
_id: 0
result:
deletedCount: 1
- *commitTransaction
expectations:
- command_started_event:
command:
delete: *collection_name
deletes:
- q: {_id: 0}
limit: 1
ordered: true
<<: *transactionCommandArgs
command_name: delete
database_name: *database_name
- *commitWithDefaultWCEvent
outcome:
collection:
data: []
- description: unacknowledged write concern coll deleteMany
operations:
- *startTransaction
- name: deleteMany
<<: *collection_w0
arguments:
session: session0
filter:
_id: 0
result:
deletedCount: 1
- *commitTransaction
expectations:
- command_started_event:
command:
delete: *collection_name
deletes:
- q: {_id: 0}
limit: 0
ordered: true
<<: *transactionCommandArgs
command_name: delete
database_name: *database_name
- *commitWithDefaultWCEvent
outcome:
collection:
data: []
- description: unacknowledged write concern coll updateOne
operations:
- *startTransaction
- name: updateOne
<<: *collection_w0
arguments:
session: session0
filter: {_id: 0}
update:
$inc: {x: 1}
upsert: true
result:
matchedCount: 1
modifiedCount: 1
upsertedCount: 0
- *commitTransaction
expectations:
- command_started_event:
command:
update: *collection_name
updates:
- q: {_id: 0}
u: {$inc: {x: 1}}
upsert: true
ordered: true
<<: *transactionCommandArgs
command_name: update
database_name: *database_name
- *commitWithDefaultWCEvent
outcome:
collection:
data:
- {_id: 0, x: 1}
- description: unacknowledged write concern coll updateMany
operations:
- *startTransaction
- name: updateMany
<<: *collection_w0
arguments:
session: session0
filter: {_id: 0}
update:
$inc: {x: 1}
upsert: true
result:
matchedCount: 1
modifiedCount: 1
upsertedCount: 0
- *commitTransaction
expectations:
- command_started_event:
command:
update: *collection_name
updates:
- q: {_id: 0}
u: {$inc: {x: 1}}
multi: true
upsert: true
ordered: true
<<: *transactionCommandArgs
command_name: update
database_name: *database_name
- *commitWithDefaultWCEvent
outcome:
collection:
data:
- {_id: 0, x: 1}
- description: unacknowledged write concern coll findOneAndDelete
operations:
- *startTransaction
- name: findOneAndDelete
<<: *collection_w0
arguments:
session: session0
filter: {_id: 0}
result: {_id: 0}
- *commitTransaction
expectations:
- command_started_event:
command:
findAndModify: *collection_name
query: {_id: 0}
remove: True
<<: *transactionCommandArgs
command_name: findAndModify
database_name: *database_name
- *commitWithDefaultWCEvent
outcome:
collection:
data: []
- description: unacknowledged write concern coll findOneAndReplace
operations:
- *startTransaction
- name: findOneAndReplace
<<: *collection_w0
arguments:
session: session0
filter: {_id: 0}
replacement: {x: 1}
returnDocument: Before
result: {_id: 0}
- *commitTransaction
expectations:
- command_started_event:
command:
findAndModify: *collection_name
query: {_id: 0}
update: {x: 1}
new: false
<<: *transactionCommandArgs
command_name: findAndModify
database_name: *database_name
- *commitWithDefaultWCEvent
outcome:
collection:
data:
- {_id: 0, x: 1}
- description: unacknowledged write concern coll findOneAndUpdate
operations:
- *startTransaction
- name: findOneAndUpdate
<<: *collection_w0
arguments:
session: session0
filter: {_id: 0}
update:
$inc: {x: 1}
returnDocument: Before
result: {_id: 0}
- *commitTransaction
expectations:
- command_started_event:
command:
findAndModify: *collection_name
query: {_id: 0}
update: {$inc: {x: 1}}
new: false
<<: *transactionCommandArgs
command_name: findAndModify
database_name: *database_name
- *commitWithDefaultWCEvent
outcome:
collection:
data:
- {_id: 0, x: 1}