summaryrefslogtreecommitdiff
path: root/src/mongo/util/clock_source_mock.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/util/clock_source_mock.h')
-rw-r--r--src/mongo/util/clock_source_mock.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/mongo/util/clock_source_mock.h b/src/mongo/util/clock_source_mock.h
index 0fc968a430e..a257775bb7c 100644
--- a/src/mongo/util/clock_source_mock.h
+++ b/src/mongo/util/clock_source_mock.h
@@ -43,7 +43,7 @@ namespace mongo {
/**
* Mock clock source that returns a fixed time until explicitly advanced.
*/
-class ClockSourceMock final : public ClockSource {
+class ClockSourceMock : public ClockSource {
public:
/**
* Constructs a ClockSourceMock with the current time set to the Unix epoch.
@@ -75,6 +75,22 @@ private:
std::vector<Alarm> _alarms;
};
+/**
+ * Mock clock source where reading the clock also advances the current time by a fixed interval.
+ */
+class AutoAdvancingClockSourceMock : public ClockSourceMock {
+public:
+ AutoAdvancingClockSourceMock(Milliseconds increment) : _increment(increment) {}
+
+ Date_t now() override {
+ ClockSourceMock::advance(_increment);
+ return ClockSourceMock::now();
+ }
+
+private:
+ const Milliseconds _increment;
+};
+
class SharedClockSourceAdapter final : public ClockSource {
public:
explicit SharedClockSourceAdapter(std::shared_ptr<ClockSource> source)