summaryrefslogtreecommitdiff
path: root/jstests/core/txns/multi_delete_in_transaction.js
diff options
context:
space:
mode:
authorWilliam Schultz <william.schultz@mongodb.com>2018-04-18 14:56:17 -0400
committerWilliam Schultz <william.schultz@mongodb.com>2018-04-18 14:56:17 -0400
commitf214e4c71c1dbcfe103fa3de4fae7afbcbb60b64 (patch)
tree25ecdb3ed7d3380e95e9c5fe00c5307ad6dea580 /jstests/core/txns/multi_delete_in_transaction.js
parent32b1be84310f2bdb617f79d50b5a5b8b44a99bed (diff)
downloadmongo-f214e4c71c1dbcfe103fa3de4fae7afbcbb60b64.tar.gz
SERVER-34259 Update multi_{delete,update}_in_transaction.js to use transactions shell API
Diffstat (limited to 'jstests/core/txns/multi_delete_in_transaction.js')
-rw-r--r--jstests/core/txns/multi_delete_in_transaction.js84
1 files changed, 24 insertions, 60 deletions
diff --git a/jstests/core/txns/multi_delete_in_transaction.js b/jstests/core/txns/multi_delete_in_transaction.js
index 693379add84..7ff3b8eb506 100644
--- a/jstests/core/txns/multi_delete_in_transaction.js
+++ b/jstests/core/txns/multi_delete_in_transaction.js
@@ -12,84 +12,48 @@
assert.commandWorked(
testDB.createCollection(testColl.getName(), {writeConcern: {w: "majority"}}));
- let txnNumber = 0;
const sessionOptions = {causalConsistency: false};
const session = db.getMongo().startSession(sessionOptions);
const sessionDb = session.getDatabase(dbName);
+ const sessionColl = sessionDb[collName];
jsTest.log("Prepopulate the collection.");
assert.writeOK(testColl.insert([{_id: 0, a: 0}, {_id: 1, a: 0}, {_id: 2, a: 1}],
{writeConcern: {w: "majority"}}));
jsTest.log("Do an empty multi-delete.");
- let res = assert.commandWorked(sessionDb.runCommand({
- delete: collName,
- deletes: [{q: {a: 99}, limit: 0}],
- readConcern: {level: "snapshot"},
- txnNumber: NumberLong(txnNumber),
- startTransaction: true,
- autocommit: false
- }));
- assert.eq(0, res.n);
+ session.startTransaction({writeConcern: {w: "majority"}});
- res = assert.commandWorked(sessionDb.runCommand(
- {find: collName, filter: {}, txnNumber: NumberLong(txnNumber), autocommit: false}));
- assert.docEq(res.cursor.firstBatch, [{_id: 0, a: 0}, {_id: 1, a: 0}, {_id: 2, a: 1}]);
+ // Remove no docs.
+ let res = sessionColl.remove({a: 99}, {justOne: false});
+ assert.eq(0, res.nRemoved);
+ res = sessionColl.find({});
+ assert.docEq(res.toArray(), [{_id: 0, a: 0}, {_id: 1, a: 0}, {_id: 2, a: 1}]);
- // commitTransaction can only be called on the admin database.
- assert.commandWorked(sessionDb.adminCommand({
- commitTransaction: 1,
- txnNumber: NumberLong(txnNumber++),
- // TODO(russotto): Majority write concern on commit is to avoid a WriteConflictError
- // writing to the transaction table.
- writeConcern: {w: "majority"},
- autocommit: false
- }));
+ session.commitTransaction();
jsTest.log("Do a single-result multi-delete.");
- res = assert.commandWorked(sessionDb.runCommand({
- delete: collName,
- deletes: [{q: {a: 1}, limit: 0}],
- readConcern: {level: "snapshot"},
- txnNumber: NumberLong(txnNumber),
- startTransaction: true,
- autocommit: false
- }));
- assert.eq(1, res.n);
- res = assert.commandWorked(sessionDb.runCommand(
- {find: collName, filter: {}, txnNumber: NumberLong(txnNumber), autocommit: false}));
- assert.docEq(res.cursor.firstBatch, [{_id: 0, a: 0}, {_id: 1, a: 0}]);
+ session.startTransaction({writeConcern: {w: "majority"}});
- // commitTransaction can only be called on the admin database.
- assert.commandWorked(sessionDb.adminCommand({
- commitTransaction: 1,
- txnNumber: NumberLong(txnNumber++),
- writeConcern: {w: "majority"},
- autocommit: false
- }));
+ // Remove one doc.
+ res = sessionColl.remove({a: 1}, {justOne: false});
+ assert.eq(1, res.nRemoved);
+ res = sessionColl.find({});
+ assert.docEq(res.toArray(), [{_id: 0, a: 0}, {_id: 1, a: 0}]);
+
+ session.commitTransaction();
jsTest.log("Do a multiple-result multi-delete.");
- res = assert.commandWorked(sessionDb.runCommand({
- delete: collName,
- deletes: [{q: {a: 0}, limit: 0}],
- readConcern: {level: "snapshot"},
- txnNumber: NumberLong(txnNumber),
- startTransaction: true,
- autocommit: false
- }));
- assert.eq(2, res.n);
- res = assert.commandWorked(sessionDb.runCommand(
- {find: collName, filter: {}, txnNumber: NumberLong(txnNumber), autocommit: false}));
- assert.docEq(res.cursor.firstBatch, []);
+ session.startTransaction({writeConcern: {w: "majority"}});
+
+ // Remove 2 docs.
+ res = sessionColl.remove({a: 0}, {justOne: false});
+ assert.eq(2, res.nRemoved);
+ res = sessionColl.find({});
+ assert.docEq(res.toArray(), []);
- // commitTransaction can only be called on the admin database.
- assert.commandWorked(sessionDb.adminCommand({
- commitTransaction: 1,
- txnNumber: NumberLong(txnNumber++),
- writeConcern: {w: "majority"},
- autocommit: false
- }));
+ session.commitTransaction();
// Collection should be empty.
assert.eq(0, testColl.find().itcount());