summaryrefslogtreecommitdiff
path: root/src/mongo/db/logical_clock_test_fixture.cpp
diff options
context:
space:
mode:
authorJack Mulrow <jack.mulrow@mongodb.com>2017-04-26 12:55:36 -0400
committerJack Mulrow <jack.mulrow@mongodb.com>2017-05-01 15:10:49 -0400
commit362acc0a59396322db5e5b6d845875d83e76cc0e (patch)
tree88f09c6f070a4b62eaa0175b0d3fb3599e3a49dc /src/mongo/db/logical_clock_test_fixture.cpp
parentcb893ef71d66bea22dd79553bd0080549f794c16 (diff)
downloadmongo-362acc0a59396322db5e5b6d845875d83e76cc0e.tar.gz
SERVER-28455 Implement LogicalClockTestFixture
Diffstat (limited to 'src/mongo/db/logical_clock_test_fixture.cpp')
-rw-r--r--src/mongo/db/logical_clock_test_fixture.cpp72
1 files changed, 70 insertions, 2 deletions
diff --git a/src/mongo/db/logical_clock_test_fixture.cpp b/src/mongo/db/logical_clock_test_fixture.cpp
index a8cee37303a..d7f6e8036b6 100644
--- a/src/mongo/db/logical_clock_test_fixture.cpp
+++ b/src/mongo/db/logical_clock_test_fixture.cpp
@@ -30,17 +30,85 @@
#include "mongo/db/logical_clock_test_fixture.h"
+#include "mongo/db/dbdirectclient.h"
#include "mongo/db/logical_clock.h"
+#include "mongo/db/logical_time.h"
+#include "mongo/db/repl/replication_coordinator_mock.h"
#include "mongo/db/service_context.h"
+#include "mongo/db/signed_logical_time.h"
+#include "mongo/db/time_proof_service.h"
#include "mongo/stdx/memory.h"
+#include "mongo/unittest/unittest.h"
+#include "mongo/util/clock_source_mock.h"
namespace mongo {
-void LogicalClockTest::setUp() {
- auto service = getGlobalServiceContext();
+LogicalClockTestFixture::LogicalClockTestFixture() = default;
+
+LogicalClockTestFixture::~LogicalClockTestFixture() = default;
+
+void LogicalClockTestFixture::setUp() {
+ ShardingMongodTestFixture::setUp();
+
+ auto service = getServiceContext();
auto logicalClock = stdx::make_unique<LogicalClock>(service);
LogicalClock::set(service, std::move(logicalClock));
+ _clock = LogicalClock::get(service);
+
+ auto pTps = stdx::make_unique<TimeProofService>();
+ _timeProofService = pTps.get();
+ _clock->setTimeProofService(std::move(pTps));
+
+ service->setFastClockSource(stdx::make_unique<SharedClockSourceAdapter>(_mockClockSource));
+ service->setPreciseClockSource(stdx::make_unique<SharedClockSourceAdapter>(_mockClockSource));
+
+ _dbDirectClient = stdx::make_unique<DBDirectClient>(operationContext());
+
+ // Set master to false (set to true in ShardingMongodTestFixture::setUp()) so follower mode can
+ // be toggled meaningfully. Default follower mode to primary, so writes can be accepted.
+ replicationCoordinator()->setMaster(false);
+ replicationCoordinator()->setFollowerMode(repl::MemberState::RS_PRIMARY);
+}
+
+void LogicalClockTestFixture::tearDown() {
+ _dbDirectClient.reset();
+ ShardingMongodTestFixture::tearDown();
+}
+
+LogicalClock* LogicalClockTestFixture::getClock() const {
+ return _clock;
+}
+
+ClockSourceMock* LogicalClockTestFixture::getMockClockSource() const {
+ return _mockClockSource.get();
+}
+
+void LogicalClockTestFixture::setMockClockSourceTime(Date_t time) const {
+ _mockClockSource->reset(time);
+}
+
+Date_t LogicalClockTestFixture::getMockClockSourceTime() const {
+ return _mockClockSource->now();
+}
+
+SignedLogicalTime LogicalClockTestFixture::makeSignedLogicalTime(LogicalTime logicalTime) const {
+ TimeProofService::Key key = {};
+ return SignedLogicalTime(logicalTime, _timeProofService->getProof(logicalTime, key), 0);
+}
+
+void LogicalClockTestFixture::resetTimeProofService() {
+ auto pTps = stdx::make_unique<TimeProofService>();
+ _timeProofService = pTps.get();
+ _clock->setTimeProofService(std::move(pTps));
+}
+
+void LogicalClockTestFixture::unsetTimeProofService() const {
+ _clock->setTimeProofService(std::unique_ptr<TimeProofService>());
+}
+
+DBDirectClient* LogicalClockTestFixture::getDBClient() const {
+ return _dbDirectClient.get();
}
} // namespace mongo