diff options
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.cpp | 20 |
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; |