summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/replication_coordinator_external_state_mock.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/replication_coordinator_external_state_mock.cpp')
-rw-r--r--src/mongo/db/repl/replication_coordinator_external_state_mock.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/mongo/db/repl/replication_coordinator_external_state_mock.cpp b/src/mongo/db/repl/replication_coordinator_external_state_mock.cpp
index 0a381a5fa2f..54f4879269b 100644
--- a/src/mongo/db/repl/replication_coordinator_external_state_mock.cpp
+++ b/src/mongo/db/repl/replication_coordinator_external_state_mock.cpp
@@ -101,9 +101,24 @@ void ReplicationCoordinatorExternalStateMock::forwardSlaveProgress() {}
bool ReplicationCoordinatorExternalStateMock::isSelf(const HostAndPort& host,
ServiceContext* const service) {
+ return sequenceContains(_selfHosts, host) || _selfHostsSlow.find(host) != _selfHostsSlow.end();
+}
+
+bool ReplicationCoordinatorExternalStateMock::isSelfFastPath(const HostAndPort& host) {
return sequenceContains(_selfHosts, host);
}
+bool ReplicationCoordinatorExternalStateMock::isSelfSlowPath(const HostAndPort& host,
+ ServiceContext* const service,
+ Milliseconds timeout) {
+ if (sequenceContains(_selfHosts, host))
+ return true;
+ auto iter = _selfHostsSlow.find(host);
+ if (iter == _selfHostsSlow.end())
+ return false;
+ return iter->second <= timeout;
+}
+
void ReplicationCoordinatorExternalStateMock::addSelf(const HostAndPort& host) {
_selfHosts.push_back(host);
}
@@ -112,6 +127,11 @@ void ReplicationCoordinatorExternalStateMock::clearSelfHosts() {
_selfHosts.clear();
}
+void ReplicationCoordinatorExternalStateMock::addSelfSlow(const HostAndPort& host,
+ Milliseconds timeout) {
+ _selfHostsSlow.emplace(host, timeout);
+}
+
HostAndPort ReplicationCoordinatorExternalStateMock::getClientHostAndPort(
const OperationContext* opCtx) {
return _clientHostAndPort;