diff options
Diffstat (limited to 'src/mongo/s/catalog/dist_lock_catalog_impl_test.cpp')
-rw-r--r-- | src/mongo/s/catalog/dist_lock_catalog_impl_test.cpp | 1279 |
1 files changed, 641 insertions, 638 deletions
diff --git a/src/mongo/s/catalog/dist_lock_catalog_impl_test.cpp b/src/mongo/s/catalog/dist_lock_catalog_impl_test.cpp index e10a582e4a1..bdbe5bd9059 100644 --- a/src/mongo/s/catalog/dist_lock_catalog_impl_test.cpp +++ b/src/mongo/s/catalog/dist_lock_catalog_impl_test.cpp @@ -44,20 +44,21 @@ f * Copyright (C) 2015 MongoDB Inc. namespace mongo { namespace { - const HostAndPort dummyHost("dummy", 123); - const Milliseconds kWTimeout(100); +const HostAndPort dummyHost("dummy", 123); +const Milliseconds kWTimeout(100); - const auto noTest = [](const RemoteCommandRequest& request) {}; +const auto noTest = [](const RemoteCommandRequest& request) {}; - TEST(DistLockCatalogImpl, BasicPing) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, BasicPing) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { + executor.setNextExpectedCommand( + [](const RemoteCommandRequest& request) { ASSERT_EQUALS(dummyHost, request.target); ASSERT_EQUALS("config", request.dbname); @@ -81,92 +82,93 @@ namespace { _id: "abcd", ping: { $date: "2014-03-11T09:17:18.098Z" } } - })"), Milliseconds(0))); + })"), + Milliseconds(0))); - Date_t ping(dateFromISOString("2014-03-11T09:17:18.098Z").getValue()); - auto status = catalog.ping("abcd", ping); - ASSERT_OK(status); - } + Date_t ping(dateFromISOString("2014-03-11T09:17:18.098Z").getValue()); + auto status = catalog.ping("abcd", ping); + ASSERT_OK(status); +} - TEST(DistLockCatalogImpl, PingTargetError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, PingTargetError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); + targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - auto status = catalog.ping("abcd", Date_t::now()); - ASSERT_NOT_OK(status); - } + auto status = catalog.ping("abcd", Date_t::now()); + ASSERT_NOT_OK(status); +} - TEST(DistLockCatalogImpl, PingRunnerError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, PingRunnerError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); + executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); - auto status = catalog.ping("abcd", Date_t::now()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.ping("abcd", Date_t::now()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, PingCommandError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, PingCommandError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 0, errmsg: "bad", code: 9 })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.ping("abcd", Date_t::now()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.ping("abcd", Date_t::now()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, PingWriteError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, PingWriteError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 0, code: 11000, errmsg: "E11000 duplicate key error" })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.ping("abcd", Date_t::now()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::DuplicateKey, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.ping("abcd", Date_t::now()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::DuplicateKey, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, PingWriteConcernError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, PingWriteConcernError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 1, value: null, writeConcernError: { @@ -174,23 +176,23 @@ namespace { errmsg: "waiting for replication timed out" } })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.ping("abcd", Date_t::now()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.ping("abcd", Date_t::now()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, PingUnsupportedWriteConcernResponse) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, PingUnsupportedWriteConcernResponse) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 1, value: null, writeConcernError: { @@ -198,45 +200,47 @@ namespace { errmsg: "waiting for replication timed out" } })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.ping("abcd", Date_t::now()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.ping("abcd", Date_t::now()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, PingUnsupportedResponseFormat) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, PingUnsupportedResponseFormat) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand(noTest, - RemoteCommandResponse(BSON("ok" << 1 << "value" << "NaN"), Milliseconds(0))); + executor.setNextExpectedCommand(noTest, + RemoteCommandResponse(BSON("ok" << 1 << "value" + << "NaN"), + Milliseconds(0))); - auto status = catalog.ping("abcd", Date_t::now()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - } + auto status = catalog.ping("abcd", Date_t::now()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); +} - TEST(DistLockCatalogImpl, GrabLockNoOp) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GrabLockNoOp) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj responseObj(fromjson("{ ok: 1, value: null }")); + BSONObj responseObj(fromjson("{ ok: 1, value: null }")); - executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { - ASSERT_EQUALS(dummyHost, request.target); - ASSERT_EQUALS("config", request.dbname); + executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { + ASSERT_EQUALS(dummyHost, request.target); + ASSERT_EQUALS("config", request.dbname); - BSONObj expectedCmd(fromjson(R"({ + BSONObj expectedCmd(fromjson(R"({ findAndModify: "locks", query: { _id: "test", state: 0 }, update: { @@ -254,29 +258,26 @@ namespace { writeConcern: { w: "majority", j: true, wtimeout: 100 } })")); - ASSERT_EQUALS(expectedCmd, request.cmdObj); - }, - RemoteCommandResponse(responseObj, Milliseconds(0))); - - OID myID("555f80be366c194b13fb0372"); - Date_t now(dateFromISOString("2015-05-22T19:17:18.098Z").getValue()); - auto resultStatus = catalog.grabLock("test", myID, "me", - "mongos", now, "because").getStatus(); + ASSERT_EQUALS(expectedCmd, request.cmdObj); + }, RemoteCommandResponse(responseObj, Milliseconds(0))); - ASSERT_NOT_OK(resultStatus); - ASSERT_EQUALS(ErrorCodes::LockStateChangeFailed, resultStatus.code()); + OID myID("555f80be366c194b13fb0372"); + Date_t now(dateFromISOString("2015-05-22T19:17:18.098Z").getValue()); + auto resultStatus = catalog.grabLock("test", myID, "me", "mongos", now, "because").getStatus(); - } + ASSERT_NOT_OK(resultStatus); + ASSERT_EQUALS(ErrorCodes::LockStateChangeFailed, resultStatus.code()); +} - TEST(DistLockCatalogImpl, GrabLockWithNewDoc) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GrabLockWithNewDoc) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj responseObj(fromjson(R"({ + BSONObj responseObj(fromjson(R"({ lastErrorObject: { updatedExisting: false, n: 1, @@ -294,11 +295,11 @@ namespace { ok: 1 })")); - executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { - ASSERT_EQUALS(dummyHost, request.target); - ASSERT_EQUALS("config", request.dbname); + executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { + ASSERT_EQUALS(dummyHost, request.target); + ASSERT_EQUALS("config", request.dbname); - BSONObj expectedCmd(fromjson(R"({ + BSONObj expectedCmd(fromjson(R"({ findAndModify: "locks", query: { _id: "test", state: 0 }, update: { @@ -316,103 +317,102 @@ namespace { writeConcern: { w: "majority", j: true, wtimeout: 100 } })")); - ASSERT_EQUALS(expectedCmd, request.cmdObj); - }, - RemoteCommandResponse(responseObj, Milliseconds(0))); + ASSERT_EQUALS(expectedCmd, request.cmdObj); + }, RemoteCommandResponse(responseObj, Milliseconds(0))); - OID myID("555f80be366c194b13fb0372"); - Date_t now(dateFromISOString("2015-05-22T19:17:18.098Z").getValue()); - auto resultStatus = catalog.grabLock("test", myID, "me", "mongos", now, "because"); - ASSERT_OK(resultStatus.getStatus()); + OID myID("555f80be366c194b13fb0372"); + Date_t now(dateFromISOString("2015-05-22T19:17:18.098Z").getValue()); + auto resultStatus = catalog.grabLock("test", myID, "me", "mongos", now, "because"); + ASSERT_OK(resultStatus.getStatus()); - const auto& lockDoc = resultStatus.getValue(); - ASSERT_TRUE(lockDoc.isValid(nullptr)); - ASSERT_EQUALS("test", lockDoc.getName()); - ASSERT_EQUALS(myID, lockDoc.getLockID()); - ASSERT_EQUALS("me", lockDoc.getWho()); - ASSERT_EQUALS("mongos", lockDoc.getProcess()); - ASSERT_EQUALS("because", lockDoc.getWhy()); - } + const auto& lockDoc = resultStatus.getValue(); + ASSERT_TRUE(lockDoc.isValid(nullptr)); + ASSERT_EQUALS("test", lockDoc.getName()); + ASSERT_EQUALS(myID, lockDoc.getLockID()); + ASSERT_EQUALS("me", lockDoc.getWho()); + ASSERT_EQUALS("mongos", lockDoc.getProcess()); + ASSERT_EQUALS("because", lockDoc.getWhy()); +} - TEST(DistLockCatalogImpl, GrabLockTargetError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GrabLockTargetError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); + targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - } + auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); +} - TEST(DistLockCatalogImpl, GrabLockRunnerError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GrabLockRunnerError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); + executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); - auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, GrabLockCommandError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GrabLockCommandError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 0, errmsg: "bad", code: 9 })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, GrabLockWriteError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GrabLockWriteError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 0, code: 11000, errmsg: "E11000 duplicate key error" })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::DuplicateKey, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::DuplicateKey, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, GrabLockWriteConcernError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GrabLockWriteConcernError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 1, value: null, writeConcernError: { @@ -420,23 +420,23 @@ namespace { errmsg: "waiting for replication timed out" } })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, GrabLockUnsupportedWriteConcernResponse) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GrabLockUnsupportedWriteConcernResponse) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 1, value: null, writeConcernError: { @@ -444,46 +444,47 @@ namespace { errmsg: "waiting for replication timed out" } })")); - executor.setNextExpectedCommand(noTest, - RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, GrabLockUnsupportedResponseFormat) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GrabLockUnsupportedResponseFormat) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand(noTest, - RemoteCommandResponse(BSON("ok" << 1 << "value" << "NaN"), Milliseconds(0))); + executor.setNextExpectedCommand(noTest, + RemoteCommandResponse(BSON("ok" << 1 << "value" + << "NaN"), + Milliseconds(0))); - auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - } + auto status = catalog.grabLock("", OID::gen(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); +} - TEST(DistLockCatalogImpl, OvertakeLockNoOp) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, OvertakeLockNoOp) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj responseObj(fromjson("{ ok: 1, value: null }")); + BSONObj responseObj(fromjson("{ ok: 1, value: null }")); - executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { - ASSERT_EQUALS(dummyHost, request.target); - ASSERT_EQUALS("config", request.dbname); + executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { + ASSERT_EQUALS(dummyHost, request.target); + ASSERT_EQUALS("config", request.dbname); - BSONObj expectedCmd(fromjson(R"({ + BSONObj expectedCmd(fromjson(R"({ findAndModify: "locks", query: { $or: [ @@ -505,29 +506,29 @@ namespace { writeConcern: { w: "majority", j: true, wtimeout: 100 } })")); - ASSERT_EQUALS(expectedCmd, request.cmdObj); - }, - RemoteCommandResponse(responseObj, Milliseconds(0))); + ASSERT_EQUALS(expectedCmd, request.cmdObj); + }, RemoteCommandResponse(responseObj, Milliseconds(0))); - OID myID("555f80be366c194b13fb0372"); - OID currentOwner("555f99712c99a78c5b083358"); - Date_t now(dateFromISOString("2015-05-22T19:17:18.098Z").getValue()); - auto resultStatus = catalog.overtakeLock("test", myID, currentOwner, - "me", "mongos", now, "because").getStatus(); + OID myID("555f80be366c194b13fb0372"); + OID currentOwner("555f99712c99a78c5b083358"); + Date_t now(dateFromISOString("2015-05-22T19:17:18.098Z").getValue()); + auto resultStatus = + catalog.overtakeLock("test", myID, currentOwner, "me", "mongos", now, "because") + .getStatus(); - ASSERT_NOT_OK(resultStatus); - ASSERT_EQUALS(ErrorCodes::LockStateChangeFailed, resultStatus.code()); - } + ASSERT_NOT_OK(resultStatus); + ASSERT_EQUALS(ErrorCodes::LockStateChangeFailed, resultStatus.code()); +} - TEST(DistLockCatalogImpl, OvertakeLockWithNewDoc) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, OvertakeLockWithNewDoc) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj responseObj(fromjson(R"({ + BSONObj responseObj(fromjson(R"({ lastErrorObject: { updatedExisting: false, n: 1, @@ -545,11 +546,11 @@ namespace { ok: 1 })")); - executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { - ASSERT_EQUALS(dummyHost, request.target); - ASSERT_EQUALS("config", request.dbname); + executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { + ASSERT_EQUALS(dummyHost, request.target); + ASSERT_EQUALS("config", request.dbname); - BSONObj expectedCmd(fromjson(R"({ + BSONObj expectedCmd(fromjson(R"({ findAndModify: "locks", query: { $or: [ @@ -571,109 +572,104 @@ namespace { writeConcern: { w: "majority", j: true, wtimeout: 100 } })")); - ASSERT_EQUALS(expectedCmd, request.cmdObj); - }, - RemoteCommandResponse(responseObj, Milliseconds(0))); + ASSERT_EQUALS(expectedCmd, request.cmdObj); + }, RemoteCommandResponse(responseObj, Milliseconds(0))); - OID myID("555f80be366c194b13fb0372"); - OID currentOwner("555f99712c99a78c5b083358"); - Date_t now(dateFromISOString("2015-05-22T19:17:18.098Z").getValue()); - auto resultStatus = catalog.overtakeLock("test", myID, currentOwner, - "me", "mongos", now, "because"); - ASSERT_OK(resultStatus.getStatus()); + OID myID("555f80be366c194b13fb0372"); + OID currentOwner("555f99712c99a78c5b083358"); + Date_t now(dateFromISOString("2015-05-22T19:17:18.098Z").getValue()); + auto resultStatus = + catalog.overtakeLock("test", myID, currentOwner, "me", "mongos", now, "because"); + ASSERT_OK(resultStatus.getStatus()); - const auto& lockDoc = resultStatus.getValue(); - ASSERT_TRUE(lockDoc.isValid(nullptr)); - ASSERT_EQUALS("test", lockDoc.getName()); - ASSERT_EQUALS(myID, lockDoc.getLockID()); - ASSERT_EQUALS("me", lockDoc.getWho()); - ASSERT_EQUALS("mongos", lockDoc.getProcess()); - ASSERT_EQUALS("because", lockDoc.getWhy()); - } + const auto& lockDoc = resultStatus.getValue(); + ASSERT_TRUE(lockDoc.isValid(nullptr)); + ASSERT_EQUALS("test", lockDoc.getName()); + ASSERT_EQUALS(myID, lockDoc.getLockID()); + ASSERT_EQUALS("me", lockDoc.getWho()); + ASSERT_EQUALS("mongos", lockDoc.getProcess()); + ASSERT_EQUALS("because", lockDoc.getWhy()); +} - TEST(DistLockCatalogImpl, OvertakeLockTargetError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, OvertakeLockTargetError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); + targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - auto status = catalog.overtakeLock( - "", OID(), OID(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - } + auto status = catalog.overtakeLock("", OID(), OID(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); +} - TEST(DistLockCatalogImpl, OvertakeLockRunnerError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, OvertakeLockRunnerError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); + executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); - auto status = catalog.overtakeLock( - "", OID(), OID(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.overtakeLock("", OID(), OID(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, OvertakeLockCommandError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, OvertakeLockCommandError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 0, errmsg: "bad", code: 9 })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.overtakeLock( - "", OID(), OID(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.overtakeLock("", OID(), OID(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, OvertakeLockWriteError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, OvertakeLockWriteError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 0, code: 11000, errmsg: "E11000 duplicate key error" })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.overtakeLock( - "", OID(), OID(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::DuplicateKey, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.overtakeLock("", OID(), OID(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::DuplicateKey, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, OvertakeLockWriteConcernError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, OvertakeLockWriteConcernError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 1, value: null, writeConcernError: { @@ -681,24 +677,23 @@ namespace { errmsg: "waiting for replication timed out" } })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.overtakeLock( - "", OID(), OID(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.overtakeLock("", OID(), OID(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, OvertakeLockUnsupportedWriteConcernResponse) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, OvertakeLockUnsupportedWriteConcernResponse) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 1, value: null, writeConcernError: { @@ -706,42 +701,42 @@ namespace { errmsg: "waiting for replication timed out" } })")); - executor.setNextExpectedCommand(noTest, - RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.overtakeLock( - "", OID(), OID(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.overtakeLock("", OID(), OID(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, OvertakeLockUnsupportedResponseFormat) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, OvertakeLockUnsupportedResponseFormat) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand(noTest, - RemoteCommandResponse(BSON("ok" << 1 << "value" << "NaN"), Milliseconds(0))); + executor.setNextExpectedCommand(noTest, + RemoteCommandResponse(BSON("ok" << 1 << "value" + << "NaN"), + Milliseconds(0))); - auto status = catalog.overtakeLock( - "", OID(), OID(), "", "", Date_t::now(), "").getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - } + auto status = catalog.overtakeLock("", OID(), OID(), "", "", Date_t::now(), "").getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); +} - TEST(DistLockCatalogImpl, BasicUnlock) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, BasicUnlock) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { + executor.setNextExpectedCommand( + [](const RemoteCommandRequest& request) { ASSERT_EQUALS(dummyHost, request.target); ASSERT_EQUALS("config", request.dbname); @@ -761,21 +756,23 @@ namespace { ts: ObjectId("555f99712c99a78c5b083358"), state: 0 } - })"), Milliseconds(0))); + })"), + Milliseconds(0))); - auto status = catalog.unlock(OID("555f99712c99a78c5b083358")); - ASSERT_OK(status); - } + auto status = catalog.unlock(OID("555f99712c99a78c5b083358")); + ASSERT_OK(status); +} - TEST(DistLockCatalogImpl, UnlockWithNoNewDoc) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, UnlockWithNoNewDoc) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { + executor.setNextExpectedCommand( + [](const RemoteCommandRequest& request) { ASSERT_EQUALS(dummyHost, request.target); ASSERT_EQUALS("config", request.dbname); @@ -791,91 +788,92 @@ namespace { RemoteCommandResponse(fromjson(R"({ ok: 1, value: null - })"), Milliseconds(0))); + })"), + Milliseconds(0))); - auto status = catalog.unlock(OID("555f99712c99a78c5b083358")); - ASSERT_OK(status); - } + auto status = catalog.unlock(OID("555f99712c99a78c5b083358")); + ASSERT_OK(status); +} - TEST(DistLockCatalogImpl, UnlockTargetError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, UnlockTargetError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); + targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - auto status = catalog.unlock(OID()); - ASSERT_NOT_OK(status); - } + auto status = catalog.unlock(OID()); + ASSERT_NOT_OK(status); +} - TEST(DistLockCatalogImpl, UnlockRunnerError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, UnlockRunnerError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); + executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); - auto status = catalog.unlock(OID()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.unlock(OID()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, UnlockCommandError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, UnlockCommandError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 0, errmsg: "bad", code: 9 })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.unlock(OID()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.unlock(OID()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, UnlockWriteError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, UnlockWriteError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 0, code: 11000, errmsg: "E11000 duplicate key error" })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.unlock(OID()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::DuplicateKey, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.unlock(OID()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::DuplicateKey, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, UnlockWriteConcernError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, UnlockWriteConcernError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 1, value: null, writeConcernError: { @@ -883,23 +881,23 @@ namespace { errmsg: "waiting for replication timed out" } })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.unlock(OID()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.unlock(OID()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, UnlockUnsupportedWriteConcernResponse) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, UnlockUnsupportedWriteConcernResponse) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 1, value: null, writeConcernError: { @@ -907,39 +905,41 @@ namespace { errmsg: "waiting for replication timed out" } })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.unlock(OID()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.unlock(OID()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, UnlockUnsupportedResponseFormat) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, UnlockUnsupportedResponseFormat) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand(noTest, - RemoteCommandResponse(BSON("ok" << 1 << "value" << "NaN"), Milliseconds(0))); + executor.setNextExpectedCommand(noTest, + RemoteCommandResponse(BSON("ok" << 1 << "value" + << "NaN"), + Milliseconds(0))); - auto status = catalog.unlock(OID()); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - } + auto status = catalog.unlock(OID()); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); +} - TEST(DistLockCatalogImpl, BasicGetServerInfo) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, BasicGetServerInfo) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj responseObj(fromjson(R"({ + BSONObj responseObj(fromjson(R"({ localTime: { $date: "2015-05-26T13:06:27.293Z" }, $gleStats: { lastOpTime: { $timestamp: { t: 0, i: 0 }}, @@ -948,81 +948,80 @@ namespace { ok: 1 })")); - executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { - ASSERT_EQUALS(dummyHost, request.target); - ASSERT_EQUALS("admin", request.dbname); - ASSERT_EQUALS(BSON("serverStatus" << 1), request.cmdObj); - }, - RemoteCommandResponse(responseObj, Milliseconds(0))); + executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { + ASSERT_EQUALS(dummyHost, request.target); + ASSERT_EQUALS("admin", request.dbname); + ASSERT_EQUALS(BSON("serverStatus" << 1), request.cmdObj); + }, RemoteCommandResponse(responseObj, Milliseconds(0))); - Date_t localTime(dateFromISOString("2015-05-26T13:06:27.293Z").getValue()); - OID electionID("555fa85d4d8640862a0fc79b"); - auto resultStatus = catalog.getServerInfo(); - ASSERT_OK(resultStatus.getStatus()); + Date_t localTime(dateFromISOString("2015-05-26T13:06:27.293Z").getValue()); + OID electionID("555fa85d4d8640862a0fc79b"); + auto resultStatus = catalog.getServerInfo(); + ASSERT_OK(resultStatus.getStatus()); - const auto& serverInfo = resultStatus.getValue(); - ASSERT_EQUALS(electionID, serverInfo.electionId); - ASSERT_EQUALS(localTime, serverInfo.serverTime); - } + const auto& serverInfo = resultStatus.getValue(); + ASSERT_EQUALS(electionID, serverInfo.electionId); + ASSERT_EQUALS(localTime, serverInfo.serverTime); +} - TEST(DistLockCatalogImpl, GetServerTargetError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GetServerTargetError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); + targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - auto status = catalog.getServerInfo().getStatus(); - ASSERT_NOT_OK(status); - } + auto status = catalog.getServerInfo().getStatus(); + ASSERT_NOT_OK(status); +} - TEST(DistLockCatalogImpl, GetServerRunnerError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GetServerRunnerError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); + executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); - auto status = catalog.getServerInfo().getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.getServerInfo().getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, GetServerCommandError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GetServerCommandError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 0, errmsg: "bad", code: 9 })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.getServerInfo().getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.getServerInfo().getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, GetServerBadElectionId) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GetServerBadElectionId) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ localTime: { $date: "2015-05-26T13:06:27.293Z" }, $gleStats: { lastOpTime: { $timestamp: { t: 0, i: 0 }}, @@ -1030,23 +1029,23 @@ namespace { }, ok: 1 })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.getServerInfo().getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.getServerInfo().getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, GetServerBadLocalTime) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GetServerBadLocalTime) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ localTime: "2015-05-26T13:06:27.293Z", $gleStats: { lastOpTime: { $timestamp: { t: 0, i: 0 }}, @@ -1054,43 +1053,43 @@ namespace { }, ok: 1 })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.getServerInfo().getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.getServerInfo().getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, GetServerNoGLEStats) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GetServerNoGLEStats) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ localTime: { $date: "2015-05-26T13:06:27.293Z" }, ok: 1 })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.getServerInfo().getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.getServerInfo().getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, GetServerNoElectionId) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, GetServerNoElectionId) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ localTime: { $date: "2015-05-26T13:06:27.293Z" }, $gleStats: { lastOpTime: { $timestamp: { t: 0, i: 0 }}, @@ -1098,23 +1097,24 @@ namespace { }, ok: 1 })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.getServerInfo().getStatus(); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.getServerInfo().getStatus(); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, BasicStopPing) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, BasicStopPing) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand([](const RemoteCommandRequest& request) { + executor.setNextExpectedCommand( + [](const RemoteCommandRequest& request) { ASSERT_EQUALS(dummyHost, request.target); ASSERT_EQUALS("config", request.dbname); @@ -1133,91 +1133,92 @@ namespace { _id: "test", ping: { $date: "2014-03-11T09:17:18.098Z" } } - })"), Milliseconds(0))); + })"), + Milliseconds(0))); - auto status = catalog.stopPing("test"); - ASSERT_OK(status); - } + auto status = catalog.stopPing("test"); + ASSERT_OK(status); +} - TEST(DistLockCatalogImpl, StopPingTargetError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, StopPingTargetError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); + targeter.setFindHostReturnValue({ErrorCodes::InternalError, "can't target"}); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - auto status = catalog.stopPing(""); - ASSERT_NOT_OK(status); - } + auto status = catalog.stopPing(""); + ASSERT_NOT_OK(status); +} - TEST(DistLockCatalogImpl, StopPingRunnerError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, StopPingRunnerError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); + executor.setNextExpectedCommand(noTest, {ErrorCodes::InternalError, "Bad"}); - auto status = catalog.stopPing(""); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.stopPing(""); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::InternalError, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, StopPingCommandError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, StopPingCommandError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 0, errmsg: "bad", code: 9 })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.stopPing(""); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.stopPing(""); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::FailedToParse, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, StopPingWriteError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, StopPingWriteError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 0, code: 13, errmsg: "Unauthorized" })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.stopPing(""); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::Unauthorized, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.stopPing(""); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::Unauthorized, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, StopPingWriteConcernError) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, StopPingWriteConcernError) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 1, value: null, writeConcernError: { @@ -1225,23 +1226,23 @@ namespace { errmsg: "waiting for replication timed out" } })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.stopPing(""); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.stopPing(""); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::WriteConcernFailed, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, StopPingUnsupportedWriteConcernResponse) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, StopPingUnsupportedWriteConcernResponse) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - BSONObj returnObj(fromjson(R"({ + BSONObj returnObj(fromjson(R"({ ok: 1, value: null, writeConcernError: { @@ -1249,29 +1250,31 @@ namespace { errmsg: "waiting for replication timed out" } })")); - executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); + executor.setNextExpectedCommand(noTest, RemoteCommandResponse(returnObj, Milliseconds(0))); - auto status = catalog.stopPing(""); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - ASSERT_FALSE(status.reason().empty()); - } + auto status = catalog.stopPing(""); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); + ASSERT_FALSE(status.reason().empty()); +} - TEST(DistLockCatalogImpl, StopPingUnsupportedResponseFormat) { - RemoteCommandTargeterMock targeter; - RemoteCommandRunnerMock executor; +TEST(DistLockCatalogImpl, StopPingUnsupportedResponseFormat) { + RemoteCommandTargeterMock targeter; + RemoteCommandRunnerMock executor; - targeter.setFindHostReturnValue(dummyHost); + targeter.setFindHostReturnValue(dummyHost); - DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); + DistLockCatalogImpl catalog(&targeter, &executor, kWTimeout); - executor.setNextExpectedCommand(noTest, - RemoteCommandResponse(BSON("ok" << 1 << "value" << "NaN"), Milliseconds(0))); + executor.setNextExpectedCommand(noTest, + RemoteCommandResponse(BSON("ok" << 1 << "value" + << "NaN"), + Milliseconds(0))); - auto status = catalog.stopPing(""); - ASSERT_NOT_OK(status); - ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); - } + auto status = catalog.stopPing(""); + ASSERT_NOT_OK(status); + ASSERT_EQUALS(ErrorCodes::UnsupportedFormat, status.code()); +} -} // unnamed namespace -} // namespace mongo +} // unnamed namespace +} // namespace mongo |