diff options
author | jinichu <jinnybyun@gmail.com> | 2018-08-03 16:59:30 -0400 |
---|---|---|
committer | jinichu <jinnybyun@gmail.com> | 2018-08-03 16:59:30 -0400 |
commit | 17f64a621f5dc1431e663bdaa46208432f67c441 (patch) | |
tree | d2019909ff950218f8d40d89cf0104c17181ddf0 /src/mongo/db/session_test.cpp | |
parent | f9cdc546961507d3fdf1b74a438ea18455d7a660 (diff) | |
download | mongo-17f64a621f5dc1431e663bdaa46208432f67c441.tar.gz |
SERVER-36414 Add readConcern to slow transaction logging
Diffstat (limited to 'src/mongo/db/session_test.cpp')
-rw-r--r-- | src/mongo/db/session_test.cpp | 75 |
1 files changed, 66 insertions, 9 deletions
diff --git a/src/mongo/db/session_test.cpp b/src/mongo/db/session_test.cpp index 511ec179252..d5618ac91af 100644 --- a/src/mongo/db/session_test.cpp +++ b/src/mongo/db/session_test.cpp @@ -2882,11 +2882,13 @@ void setupAdditiveMetrics(const int metricValue, OperationContext* opCtx) { */ void buildParametersInfoString(StringBuilder* sb, LogicalSessionId sessionId, - const TxnNumber txnNum) { + const TxnNumber txnNum, + const repl::ReadConcernArgs readConcernArgs) { BSONObjBuilder lsidBuilder; sessionId.serialize(&lsidBuilder); (*sb) << "parameters:{ lsid: " << lsidBuilder.done().toString() << ", txnNumber: " << txnNum - << ", autocommit: false },"; + << ", autocommit: false" + << ", readConcern: " << readConcernArgs.toBSON().getObjectField("readConcern") << " },"; } /* @@ -2933,7 +2935,8 @@ std::string buildTransactionInfoString(OperationContext* opCtx, // Building expected transaction info string. StringBuilder parametersInfo; - buildParametersInfoString(¶metersInfo, sessionId, txnNum); + buildParametersInfoString( + ¶metersInfo, sessionId, txnNum, repl::ReadConcernArgs::get(opCtx)); StringBuilder readTimestampInfo; readTimestampInfo @@ -2984,6 +2987,15 @@ TEST_F(TransactionsMetricsTest, TestTransactionInfoForLogAfterCommit) { const TxnNumber txnNum = 1; opCtx()->setLogicalSessionId(sessionId); opCtx()->setTxnNumber(txnNum); + + repl::ReadConcernArgs readConcernArgs; + ASSERT_OK(readConcernArgs.initialize(BSON("find" + << "test" + << repl::ReadConcernArgs::kReadConcernFieldName + << BSON(repl::ReadConcernArgs::kLevelFieldName + << "snapshot")))); + repl::ReadConcernArgs::get(opCtx()) = readConcernArgs; + session.beginOrContinueTxn(opCtx(), txnNum, false, true, "admin", "commitTransaction"); // Initialize SingleTransactionStats AdditiveMetrics objects. @@ -2996,7 +3008,7 @@ TEST_F(TransactionsMetricsTest, TestTransactionInfoForLogAfterCommit) { const auto lockerInfo = opCtx()->lockState()->getLockerInfo(); ASSERT(lockerInfo); std::string testTransactionInfo = - session.transactionInfoForLogForTest(&lockerInfo->stats, true); + session.transactionInfoForLogForTest(&lockerInfo->stats, true, readConcernArgs); std::string expectedTransactionInfo = buildTransactionInfoString(opCtx(), &session, "committed", sessionId, txnNum, metricValue); @@ -3011,6 +3023,15 @@ TEST_F(TransactionsMetricsTest, TestTransactionInfoForLogAfterAbort) { const TxnNumber txnNum = 1; opCtx()->setLogicalSessionId(sessionId); opCtx()->setTxnNumber(txnNum); + + repl::ReadConcernArgs readConcernArgs; + ASSERT_OK(readConcernArgs.initialize(BSON("find" + << "test" + << repl::ReadConcernArgs::kReadConcernFieldName + << BSON(repl::ReadConcernArgs::kLevelFieldName + << "snapshot")))); + repl::ReadConcernArgs::get(opCtx()) = readConcernArgs; + session.beginOrContinueTxn(opCtx(), txnNum, false, true, "admin", "abortTransaction"); // Initialize SingleTransactionStats AdditiveMetrics objects. @@ -3023,7 +3044,7 @@ TEST_F(TransactionsMetricsTest, TestTransactionInfoForLogAfterAbort) { const auto lockerInfo = opCtx()->lockState()->getLockerInfo(); ASSERT(lockerInfo); std::string testTransactionInfo = - session.transactionInfoForLogForTest(&lockerInfo->stats, false); + session.transactionInfoForLogForTest(&lockerInfo->stats, false, readConcernArgs); std::string expectedTransactionInfo = buildTransactionInfoString(opCtx(), &session, "aborted", sessionId, txnNum, metricValue); @@ -3038,12 +3059,21 @@ DEATH_TEST_F(TransactionsMetricsTest, TestTransactionInfoForLogWithNoLockerInfoS const TxnNumber txnNum = 1; opCtx()->setLogicalSessionId(sessionId); opCtx()->setTxnNumber(txnNum); + + repl::ReadConcernArgs readConcernArgs; + ASSERT_OK(readConcernArgs.initialize(BSON("find" + << "test" + << repl::ReadConcernArgs::kReadConcernFieldName + << BSON(repl::ReadConcernArgs::kLevelFieldName + << "snapshot")))); + repl::ReadConcernArgs::get(opCtx()) = readConcernArgs; + session.beginOrContinueTxn(opCtx(), txnNum, false, true, "testDB", "insert"); session.unstashTransactionResources(opCtx(), "commitTransaction"); session.commitUnpreparedTransaction(opCtx()); - session.transactionInfoForLogForTest(nullptr, true); + session.transactionInfoForLogForTest(nullptr, true, readConcernArgs); } TEST_F(TransactionsMetricsTest, LogTransactionInfoAfterSlowCommit) { @@ -3054,6 +3084,15 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoAfterSlowCommit) { const TxnNumber txnNum = 1; opCtx()->setLogicalSessionId(sessionId); opCtx()->setTxnNumber(txnNum); + + repl::ReadConcernArgs readConcernArgs; + ASSERT_OK(readConcernArgs.initialize(BSON("find" + << "test" + << repl::ReadConcernArgs::kReadConcernFieldName + << BSON(repl::ReadConcernArgs::kLevelFieldName + << "snapshot")))); + repl::ReadConcernArgs::get(opCtx()) = readConcernArgs; + session.beginOrContinueTxn(opCtx(), txnNum, false, true, "admin", "commitTransaction"); // Initialize SingleTransactionStats AdditiveMetrics objects. const int metricValue = 1; @@ -3071,7 +3110,7 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoAfterSlowCommit) { const auto lockerInfo = opCtx()->lockState()->getLockerInfo(); ASSERT(lockerInfo); std::string expectedTransactionInfo = - session.transactionInfoForLogForTest(&lockerInfo->stats, true); + session.transactionInfoForLogForTest(&lockerInfo->stats, true, readConcernArgs); ASSERT_EQUALS(1, countLogLinesContaining(expectedTransactionInfo)); } @@ -3083,6 +3122,15 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoAfterSlowAbort) { const TxnNumber txnNum = 1; opCtx()->setLogicalSessionId(sessionId); opCtx()->setTxnNumber(txnNum); + + repl::ReadConcernArgs readConcernArgs; + ASSERT_OK(readConcernArgs.initialize(BSON("find" + << "test" + << repl::ReadConcernArgs::kReadConcernFieldName + << BSON(repl::ReadConcernArgs::kLevelFieldName + << "snapshot")))); + repl::ReadConcernArgs::get(opCtx()) = readConcernArgs; + session.beginOrContinueTxn(opCtx(), txnNum, false, true, "admin", "abortTransaction"); // Initialize SingleTransactionStats AdditiveMetrics objects. const int metricValue = 1; @@ -3100,7 +3148,7 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoAfterSlowAbort) { const auto lockerInfo = opCtx()->lockState()->getLockerInfo(); ASSERT(lockerInfo); std::string expectedTransactionInfo = - session.transactionInfoForLogForTest(&lockerInfo->stats, false); + session.transactionInfoForLogForTest(&lockerInfo->stats, false, readConcernArgs); ASSERT_EQUALS(1, countLogLinesContaining(expectedTransactionInfo)); } @@ -3112,6 +3160,15 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoAfterSlowStashedAbort) { const TxnNumber txnNum = 1; opCtx()->setLogicalSessionId(sessionId); opCtx()->setTxnNumber(txnNum); + + repl::ReadConcernArgs readConcernArgs; + ASSERT_OK(readConcernArgs.initialize(BSON("find" + << "test" + << repl::ReadConcernArgs::kReadConcernFieldName + << BSON(repl::ReadConcernArgs::kLevelFieldName + << "snapshot")))); + repl::ReadConcernArgs::get(opCtx()) = readConcernArgs; + session.beginOrContinueTxn(opCtx(), txnNum, false, true, "admin", "abortTransaction"); // Initialize SingleTransactionStats AdditiveMetrics objects. const int metricValue = 1; @@ -3132,7 +3189,7 @@ TEST_F(TransactionsMetricsTest, LogTransactionInfoAfterSlowStashedAbort) { stopCapturingLogMessages(); std::string expectedTransactionInfo = - session.transactionInfoForLogForTest(&lockerInfo->stats, false); + session.transactionInfoForLogForTest(&lockerInfo->stats, false, readConcernArgs); ASSERT_EQUALS(1, countLogLinesContaining(expectedTransactionInfo)); } |