summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2017-06-27 01:05:23 -0400
committerBenety Goh <benety@mongodb.com>2017-06-29 10:13:57 -0400
commitb9be45f58636244600b992930abe6791c115cfa0 (patch)
treec6c3e87d5c6164aac90a117d68532925c31b6be1
parent943ede3296b190c97fe6ae53f7b718de22cd074d (diff)
downloadmongo-b9be45f58636244600b992930abe6791c115cfa0.tar.gz
SERVER-29876 ReplicationCoordinatorMock::AwaitReplicationReturnValueFunction accepts optime
-rw-r--r--src/mongo/db/catalog/drop_database_test.cpp6
-rw-r--r--src/mongo/db/repl/replication_coordinator_mock.cpp4
-rw-r--r--src/mongo/db/repl/replication_coordinator_mock.h6
3 files changed, 9 insertions, 7 deletions
diff --git a/src/mongo/db/catalog/drop_database_test.cpp b/src/mongo/db/catalog/drop_database_test.cpp
index bbb07aaa1ed..ee552ad1c78 100644
--- a/src/mongo/db/catalog/drop_database_test.cpp
+++ b/src/mongo/db/catalog/drop_database_test.cpp
@@ -308,7 +308,7 @@ void _testDropDatabaseResetsDropPendingStateIfAwaitReplicationFails(OperationCon
TEST_F(DropDatabaseTest,
DropDatabaseResetsDropPendingStateIfAwaitReplicationFailsAndDatabaseIsPresent) {
// Update ReplicationCoordinatorMock so that awaitReplicationOfLastOpForClient() fails.
- _replCoord->setAwaitReplicationReturnValueFunction([] {
+ _replCoord->setAwaitReplicationReturnValueFunction([](const repl::OpTime&) {
return repl::ReplicationCoordinator::StatusAndDuration(
Status(ErrorCodes::WriteConcernFailed, ""), Milliseconds(0));
});
@@ -319,7 +319,7 @@ TEST_F(DropDatabaseTest,
TEST_F(DropDatabaseTest,
DropDatabaseResetsDropPendingStateIfAwaitReplicationFailsAndDatabaseIsMissing) {
// Update ReplicationCoordinatorMock so that awaitReplicationOfLastOpForClient() fails.
- _replCoord->setAwaitReplicationReturnValueFunction([this] {
+ _replCoord->setAwaitReplicationReturnValueFunction([this](const repl::OpTime&) {
_removeDatabaseFromCatalog(_opCtx.get(), _nss.db());
return repl::ReplicationCoordinator::StatusAndDuration(
Status(ErrorCodes::WriteConcernFailed, ""), Milliseconds(0));
@@ -331,7 +331,7 @@ TEST_F(DropDatabaseTest,
TEST_F(DropDatabaseTest,
DropDatabaseReturnsNamespaceNotFoundIfDatabaseIsRemovedAfterCollectionsDropsAreReplicated) {
// Update ReplicationCoordinatorMock so that awaitReplicationOfLastOpForClient() fails.
- _replCoord->setAwaitReplicationReturnValueFunction([this] {
+ _replCoord->setAwaitReplicationReturnValueFunction([this](const repl::OpTime&) {
_removeDatabaseFromCatalog(_opCtx.get(), _nss.db());
return repl::ReplicationCoordinator::StatusAndDuration(Status::OK(), Milliseconds(0));
});
diff --git a/src/mongo/db/repl/replication_coordinator_mock.cpp b/src/mongo/db/repl/replication_coordinator_mock.cpp
index db032d0b64a..02097d19815 100644
--- a/src/mongo/db/repl/replication_coordinator_mock.cpp
+++ b/src/mongo/db/repl/replication_coordinator_mock.cpp
@@ -113,13 +113,13 @@ void ReplicationCoordinatorMock::clearSyncSourceBlacklist() {}
ReplicationCoordinator::StatusAndDuration ReplicationCoordinatorMock::awaitReplication(
OperationContext* opCtx, const OpTime& opTime, const WriteConcernOptions& writeConcern) {
- return _awaitReplicationReturnValueFunction();
+ return _awaitReplicationReturnValueFunction(opTime);
}
ReplicationCoordinator::StatusAndDuration
ReplicationCoordinatorMock::awaitReplicationOfLastOpForClient(
OperationContext* opCtx, const WriteConcernOptions& writeConcern) {
- return _awaitReplicationReturnValueFunction();
+ return _awaitReplicationReturnValueFunction({});
}
void ReplicationCoordinatorMock::setAwaitReplicationReturnValueFunction(
diff --git a/src/mongo/db/repl/replication_coordinator_mock.h b/src/mongo/db/repl/replication_coordinator_mock.h
index 64ec28f6d9e..3ae99bb0dc4 100644
--- a/src/mongo/db/repl/replication_coordinator_mock.h
+++ b/src/mongo/db/repl/replication_coordinator_mock.h
@@ -280,8 +280,10 @@ public:
/**
* Sets the function to generate the return value for calls to awaitReplication() and
* awaitReplicationOfLastOpForClient().
+ * 'opTime' is the optime passed to awaitReplication() and set to null when called from
+ * awaitReplicationOfLastOpForClient().
*/
- using AwaitReplicationReturnValueFunction = stdx::function<StatusAndDuration()>;
+ using AwaitReplicationReturnValueFunction = stdx::function<StatusAndDuration(const OpTime&)>;
void setAwaitReplicationReturnValueFunction(
AwaitReplicationReturnValueFunction returnValueFunction);
@@ -306,7 +308,7 @@ private:
OpTime _myLastDurableOpTime;
OpTime _myLastAppliedOpTime;
ReplSetConfig _getConfigReturnValue;
- AwaitReplicationReturnValueFunction _awaitReplicationReturnValueFunction = [] {
+ AwaitReplicationReturnValueFunction _awaitReplicationReturnValueFunction = [](const OpTime&) {
return StatusAndDuration(Status::OK(), Milliseconds(0));
};
bool _alwaysAllowWrites = false;