summaryrefslogtreecommitdiff
path: root/src/mongo/db/session_test.cpp
diff options
context:
space:
mode:
authorjinichu <jinnybyun@gmail.com>2018-08-03 16:59:30 -0400
committerjinichu <jinnybyun@gmail.com>2018-08-03 16:59:30 -0400
commit17f64a621f5dc1431e663bdaa46208432f67c441 (patch)
treed2019909ff950218f8d40d89cf0104c17181ddf0 /src/mongo/db/session_test.cpp
parentf9cdc546961507d3fdf1b74a438ea18455d7a660 (diff)
downloadmongo-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.cpp75
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(&parametersInfo, sessionId, txnNum);
+ buildParametersInfoString(
+ &parametersInfo, 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));
}