summaryrefslogtreecommitdiff
path: root/src/mongo/db/concurrency/lock_state_test.cpp
diff options
context:
space:
mode:
authorXiangyu Yao <xiangyu.yao@mongodb.com>2018-02-06 12:05:21 -0500
committerXiangyu Yao <xiangyu.yao@mongodb.com>2018-02-09 15:54:48 -0500
commite28c2f4732e490ed8efa6148d20d889dfd603028 (patch)
treed89d407bd23960ce30a68fe17b2be0992245bd80 /src/mongo/db/concurrency/lock_state_test.cpp
parentb52615ee4e518bcb29bd0601d904fd9e059ce77e (diff)
downloadmongo-e28c2f4732e490ed8efa6148d20d889dfd603028.tar.gz
SERVER-32682 Use deadline-oriented mechanism for lock timeout
Diffstat (limited to 'src/mongo/db/concurrency/lock_state_test.cpp')
-rw-r--r--src/mongo/db/concurrency/lock_state_test.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/mongo/db/concurrency/lock_state_test.cpp b/src/mongo/db/concurrency/lock_state_test.cpp
index e96a460d61f..9d4a15ef1af 100644
--- a/src/mongo/db/concurrency/lock_state_test.cpp
+++ b/src/mongo/db/concurrency/lock_state_test.cpp
@@ -88,7 +88,7 @@ TEST(LockerImpl, ConflictWithTimeout) {
DefaultLockerImpl locker2;
ASSERT(LOCK_OK == locker2.lockGlobal(MODE_IX));
- ASSERT(LOCK_TIMEOUT == locker2.lock(resId, MODE_S, Milliseconds(0)));
+ ASSERT(LOCK_TIMEOUT == locker2.lock(resId, MODE_S, Date_t::now()));
ASSERT(locker2.getLockMode(resId) == MODE_NONE);
@@ -110,7 +110,7 @@ TEST(LockerImpl, ConflictUpgradeWithTimeout) {
ASSERT(LOCK_OK == locker2.lock(resId, MODE_S));
// Try upgrading locker 1, which should block and timeout
- ASSERT(LOCK_TIMEOUT == locker1.lock(resId, MODE_X, Milliseconds(1)));
+ ASSERT(LOCK_TIMEOUT == locker1.lock(resId, MODE_X, Date_t::now() + Milliseconds(1)));
locker1.unlockGlobal();
locker2.unlockGlobal();
@@ -276,14 +276,18 @@ TEST(LockerImpl, CanceledDeadlockUnblocks) {
ASSERT(LOCK_WAITING == locker3.lockBegin(db1, MODE_S));
// Detect deadlock, canceling our request
- ASSERT(LOCK_DEADLOCK ==
- locker2.lockComplete(db1, MODE_X, Milliseconds(1), /*checkDeadlock*/ true));
+ ASSERT(
+ LOCK_DEADLOCK ==
+ locker2.lockComplete(db1, MODE_X, Date_t::now() + Milliseconds(1), /*checkDeadlock*/ true));
// Now locker3 must be able to complete its request
- ASSERT(LOCK_OK == locker3.lockComplete(db1, MODE_S, Milliseconds(1), /*checkDeadlock*/ false));
+ ASSERT(LOCK_OK ==
+ locker3.lockComplete(
+ db1, MODE_S, Date_t::now() + Milliseconds(1), /*checkDeadlock*/ false));
// Locker1 still can't complete its request
- ASSERT(LOCK_TIMEOUT == locker1.lockComplete(db2, MODE_X, Milliseconds(1), false));
+ ASSERT(LOCK_TIMEOUT ==
+ locker1.lockComplete(db2, MODE_X, Date_t::now() + Milliseconds(1), false));
// Check ownership for db1
ASSERT(locker1.getLockMode(db1) == MODE_S);
@@ -374,10 +378,9 @@ TEST(LockerImpl, GetLockerInfoShouldReportPendingLocks) {
ASSERT(successfulLocker.unlock(dbId));
ASSERT(successfulLocker.unlockGlobal());
- const Milliseconds timeout = Milliseconds(0);
const bool checkDeadlock = false;
ASSERT_EQ(LOCK_OK,
- conflictingLocker.lockComplete(collectionId, MODE_IS, timeout, checkDeadlock));
+ conflictingLocker.lockComplete(collectionId, MODE_IS, Date_t::now(), checkDeadlock));
conflictingLocker.getLockerInfo(&lockerInfo);
ASSERT_FALSE(lockerInfo.waitingResource.isValid());