diff options
Diffstat (limited to 'src/mongo/db/operation_context_test.cpp')
-rw-r--r-- | src/mongo/db/operation_context_test.cpp | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/src/mongo/db/operation_context_test.cpp b/src/mongo/db/operation_context_test.cpp index 43b4a51df5d..d805541218c 100644 --- a/src/mongo/db/operation_context_test.cpp +++ b/src/mongo/db/operation_context_test.cpp @@ -254,9 +254,9 @@ public: } void checkForInterruptForTimeout(OperationContext* opCtx) { - stdx::mutex m; + auto m = MONGO_MAKE_LATCH(); stdx::condition_variable cv; - stdx::unique_lock<stdx::mutex> lk(m); + stdx::unique_lock<Latch> lk(m); opCtx->waitForConditionOrInterrupt(cv, lk); } @@ -334,18 +334,18 @@ TEST_F(OperationDeadlineTests, VeryLargeRelativeDeadlinesNanoseconds) { TEST_F(OperationDeadlineTests, WaitForMaxTimeExpiredCV) { auto opCtx = client->makeOperationContext(); opCtx->setDeadlineByDate(mockClock->now(), ErrorCodes::ExceededTimeLimit); - stdx::mutex m; + auto m = MONGO_MAKE_LATCH(); stdx::condition_variable cv; - stdx::unique_lock<stdx::mutex> lk(m); + stdx::unique_lock<Latch> lk(m); ASSERT_EQ(ErrorCodes::ExceededTimeLimit, opCtx->waitForConditionOrInterruptNoAssert(cv, lk)); } TEST_F(OperationDeadlineTests, WaitForMaxTimeExpiredCVWithWaitUntilSet) { auto opCtx = client->makeOperationContext(); opCtx->setDeadlineByDate(mockClock->now(), ErrorCodes::ExceededTimeLimit); - stdx::mutex m; + auto m = MONGO_MAKE_LATCH(); stdx::condition_variable cv; - stdx::unique_lock<stdx::mutex> lk(m); + stdx::unique_lock<Latch> lk(m); ASSERT_EQ( ErrorCodes::ExceededTimeLimit, opCtx->waitForConditionOrInterruptNoAssertUntil(cv, lk, mockClock->now() + Seconds{10}) @@ -598,17 +598,17 @@ TEST_F(OperationDeadlineTests, DeadlineAfterRunWithoutInterruptDoesntSeeUnviolat TEST_F(OperationDeadlineTests, WaitForKilledOpCV) { auto opCtx = client->makeOperationContext(); opCtx->markKilled(); - stdx::mutex m; + auto m = MONGO_MAKE_LATCH(); stdx::condition_variable cv; - stdx::unique_lock<stdx::mutex> lk(m); + stdx::unique_lock<Latch> lk(m); ASSERT_EQ(ErrorCodes::Interrupted, opCtx->waitForConditionOrInterruptNoAssert(cv, lk)); } TEST_F(OperationDeadlineTests, WaitForUntilExpiredCV) { auto opCtx = client->makeOperationContext(); - stdx::mutex m; + auto m = MONGO_MAKE_LATCH(); stdx::condition_variable cv; - stdx::unique_lock<stdx::mutex> lk(m); + stdx::unique_lock<Latch> lk(m); ASSERT(stdx::cv_status::timeout == unittest::assertGet( opCtx->waitForConditionOrInterruptNoAssertUntil(cv, lk, mockClock->now()))); @@ -617,9 +617,9 @@ TEST_F(OperationDeadlineTests, WaitForUntilExpiredCV) { TEST_F(OperationDeadlineTests, WaitForUntilExpiredCVWithMaxTimeSet) { auto opCtx = client->makeOperationContext(); opCtx->setDeadlineByDate(mockClock->now() + Seconds{10}, ErrorCodes::ExceededTimeLimit); - stdx::mutex m; + auto m = MONGO_MAKE_LATCH(); stdx::condition_variable cv; - stdx::unique_lock<stdx::mutex> lk(m); + stdx::unique_lock<Latch> lk(m); ASSERT(stdx::cv_status::timeout == unittest::assertGet( opCtx->waitForConditionOrInterruptNoAssertUntil(cv, lk, mockClock->now()))); @@ -627,9 +627,9 @@ TEST_F(OperationDeadlineTests, WaitForUntilExpiredCVWithMaxTimeSet) { TEST_F(OperationDeadlineTests, WaitForDurationExpired) { auto opCtx = client->makeOperationContext(); - stdx::mutex m; + auto m = MONGO_MAKE_LATCH(); stdx::condition_variable cv; - stdx::unique_lock<stdx::mutex> lk(m); + stdx::unique_lock<Latch> lk(m); ASSERT_FALSE(opCtx->waitForConditionOrInterruptFor( cv, lk, Milliseconds(-1000), []() -> bool { return false; })); } @@ -637,9 +637,9 @@ TEST_F(OperationDeadlineTests, WaitForDurationExpired) { TEST_F(OperationDeadlineTests, DuringWaitMaxTimeExpirationDominatesUntilExpiration) { auto opCtx = client->makeOperationContext(); opCtx->setDeadlineByDate(mockClock->now(), ErrorCodes::ExceededTimeLimit); - stdx::mutex m; + auto m = MONGO_MAKE_LATCH(); stdx::condition_variable cv; - stdx::unique_lock<stdx::mutex> lk(m); + stdx::unique_lock<Latch> lk(m); ASSERT(ErrorCodes::ExceededTimeLimit == opCtx->waitForConditionOrInterruptNoAssertUntil(cv, lk, mockClock->now())); } @@ -648,17 +648,17 @@ class ThreadedOperationDeadlineTests : public OperationDeadlineTests { public: using CvPred = std::function<bool()>; using WaitFn = std::function<bool( - OperationContext*, stdx::condition_variable&, stdx::unique_lock<stdx::mutex>&, CvPred)>; + OperationContext*, stdx::condition_variable&, stdx::unique_lock<Latch>&, CvPred)>; struct WaitTestState { void signal() { - stdx::lock_guard<stdx::mutex> lk(mutex); + stdx::lock_guard<Latch> lk(mutex); invariant(!isSignaled); isSignaled = true; cv.notify_all(); } - stdx::mutex mutex; + Mutex mutex = MONGO_MAKE_LATCH("WaitTestState::mutex"); stdx::condition_variable cv; bool isSignaled = false; }; @@ -674,7 +674,7 @@ public: opCtx->setDeadlineByDate(maxTime, ErrorCodes::ExceededTimeLimit); } auto predicate = [state] { return state->isSignaled; }; - stdx::unique_lock<stdx::mutex> lk(state->mutex); + stdx::unique_lock<Latch> lk(state->mutex); barrier->countDownAndWait(); return waitFn(opCtx, state->cv, lk, predicate); }); @@ -684,7 +684,7 @@ public: // Now we know that the waiter task must own the mutex, because it does not signal the // barrier until it does. - stdx::lock_guard<stdx::mutex> lk(state->mutex); + stdx::lock_guard<Latch> lk(state->mutex); // Assuming that opCtx has not already been interrupted and that maxTime and until are // unexpired, we know that the waiter must be blocked in the condition variable, because it @@ -699,7 +699,7 @@ public: Date_t maxTime) { const auto waitFn = [until](OperationContext* opCtx, stdx::condition_variable& cv, - stdx::unique_lock<stdx::mutex>& lk, + stdx::unique_lock<Latch>& lk, CvPred predicate) { if (until < Date_t::max()) { return opCtx->waitForConditionOrInterruptUntil(cv, lk, until, predicate); @@ -718,7 +718,7 @@ public: Date_t maxTime) { const auto waitFn = [duration](OperationContext* opCtx, stdx::condition_variable& cv, - stdx::unique_lock<stdx::mutex>& lk, + stdx::unique_lock<Latch>& lk, CvPred predicate) { return opCtx->waitForConditionOrInterruptFor(cv, lk, duration, predicate); }; @@ -735,7 +735,7 @@ public: Date_t maxTime) { auto waitFn = [sleepUntil](OperationContext* opCtx, stdx::condition_variable& cv, - stdx::unique_lock<stdx::mutex>& lk, + stdx::unique_lock<Latch>& lk, CvPred predicate) { lk.unlock(); opCtx->sleepUntil(sleepUntil); @@ -752,7 +752,7 @@ public: Date_t maxTime) { auto waitFn = [sleepFor](OperationContext* opCtx, stdx::condition_variable& cv, - stdx::unique_lock<stdx::mutex>& lk, + stdx::unique_lock<Latch>& lk, CvPred predicate) { lk.unlock(); opCtx->sleepFor(sleepFor); @@ -956,9 +956,9 @@ TEST(OperationContextTest, TestWaitForConditionOrInterruptNoAssertUntilAPI) { auto client = serviceCtx->makeClient("OperationContextTest"); auto opCtx = client->makeOperationContext(); - stdx::mutex mutex; + auto mutex = MONGO_MAKE_LATCH(); stdx::condition_variable cv; - stdx::unique_lock<stdx::mutex> lk(mutex); + stdx::unique_lock<Latch> lk(mutex); // Case (2). Expect a Status::OK with a cv_status::timeout. Date_t deadline = Date_t::now() + Milliseconds(500); |