summaryrefslogtreecommitdiffstats
path: root/testutil/src/main/java/com/yahoo/test/ManualClock.java
diff options
context:
space:
mode:
Diffstat (limited to 'testutil/src/main/java/com/yahoo/test/ManualClock.java')
-rw-r--r--testutil/src/main/java/com/yahoo/test/ManualClock.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/testutil/src/main/java/com/yahoo/test/ManualClock.java b/testutil/src/main/java/com/yahoo/test/ManualClock.java
new file mode 100644
index 00000000000..b8325b3e3fc
--- /dev/null
+++ b/testutil/src/main/java/com/yahoo/test/ManualClock.java
@@ -0,0 +1,36 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.test;
+
+import java.time.Clock;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.temporal.TemporalAmount;
+
+/** A clock which initially has the time of its creation but can only be advanced by calling advance */
+public class ManualClock extends Clock {
+
+ private Instant currentTime = Instant.now();
+
+ public ManualClock() {}
+
+ public ManualClock(Instant currentTime) {
+ this.currentTime = currentTime;
+ }
+
+ public void advance(TemporalAmount temporal) {
+ currentTime = currentTime.plus(temporal);
+ }
+
+ @Override
+ public Instant instant() { return currentTime; }
+
+ @Override
+ public ZoneId getZone() { return null; }
+
+ @Override
+ public Clock withZone(ZoneId zone) { return null; }
+
+ @Override
+ public long millis() { return currentTime.toEpochMilli(); }
+
+}