summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavithra Vetriselvan <pavithra.vetriselvan@mongodb.com>2018-02-22 11:31:59 -0500
committerPavithra Vetriselvan <pavithra.vetriselvan@mongodb.com>2018-02-22 11:33:55 -0500
commitf3292e4dfe808eb195073fc6ad0b9e5d0b296852 (patch)
treeb663a1df3483944f3643d477f20abc71d5a56841
parent127834fd5164c3a172f61bfe292c118542ea6241 (diff)
downloadmongo-f3292e4dfe808eb195073fc6ad0b9e5d0b296852.tar.gz
SERVER-33423 Adds simple autocommit unit test
-rw-r--r--src/mongo/db/session_test.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/mongo/db/session_test.cpp b/src/mongo/db/session_test.cpp
index 6dde3fc0bea..ed536c4f70d 100644
--- a/src/mongo/db/session_test.cpp
+++ b/src/mongo/db/session_test.cpp
@@ -618,5 +618,26 @@ TEST_F(SessionTest, StashNotRequired) {
ASSERT(!opCtx()->getWriteUnitOfWork());
}
+TEST_F(SessionTest, CheckAutocommitOnlyAllowedAtBeginningOfTxn) {
+ const auto sessionId = makeLogicalSessionIdForTest();
+ Session session(sessionId);
+ session.refreshFromStorageIfNeeded(opCtx());
+
+ // Autocommit should be true by default
+ ASSERT(session.getAutocommit());
+
+ const TxnNumber txnNum = 100;
+ session.beginOrContinueTxn(opCtx(), txnNum, false);
+
+ // Autocommit should be set to false
+ ASSERT_FALSE(session.getAutocommit());
+
+ // Trying to set autocommit after the first statement of a transaction
+ // should throw an error.
+ ASSERT_THROWS_CODE(session.beginOrContinueTxn(opCtx(), txnNum, true),
+ AssertionException,
+ ErrorCodes::IllegalOperation);
+}
+
} // anonymous
} // namespace mongo