diff --git a/common/src/testing/java/google/registry/testing/FakeClock.java b/common/src/testing/java/google/registry/testing/FakeClock.java index 24431c557..e2cf14f8b 100644 --- a/common/src/testing/java/google/registry/testing/FakeClock.java +++ b/common/src/testing/java/google/registry/testing/FakeClock.java @@ -35,6 +35,8 @@ public final class FakeClock implements Clock { // threads should see a consistent flow. private final AtomicLong currentTimeMillis = new AtomicLong(); + private volatile long autoIncrementStepMs; + /** Creates a FakeClock that starts at START_OF_TIME. */ public FakeClock() { this(START_OF_TIME); @@ -48,7 +50,21 @@ public final class FakeClock implements Clock { /** Returns the current time. */ @Override public DateTime nowUtc() { - return new DateTime(currentTimeMillis.get(), UTC); + return new DateTime(currentTimeMillis.addAndGet(autoIncrementStepMs), UTC); + } + + /** + * Sets the increment applied to the clock whenever it is queried. The increment is zero by + * default: the clock is left unchanged when queried. + * + *

Passing a duration of zero to this method effectively unsets the auto increment mode. + * + * @param autoIncrementStep the new auto increment duration + * @return this + */ + public FakeClock setAutoIncrementStep(ReadableDuration autoIncrementStep) { + this.autoIncrementStepMs = autoIncrementStep.getMillis(); + return this; } /** Advances clock by one millisecond. */ diff --git a/core/src/test/java/google/registry/model/registry/label/PremiumListDualDaoTest.java b/core/src/test/java/google/registry/model/registry/label/PremiumListDualDaoTest.java index a5d4532c1..2995d05dc 100644 --- a/core/src/test/java/google/registry/model/registry/label/PremiumListDualDaoTest.java +++ b/core/src/test/java/google/registry/model/registry/label/PremiumListDualDaoTest.java @@ -43,6 +43,7 @@ import google.registry.testing.TestCacheExtension; import google.registry.testing.TestOfyAndSql; import org.joda.time.DateTime; import org.joda.time.Duration; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.RegisterExtension; @@ -61,7 +62,7 @@ public class PremiumListDualDaoTest extends EntityTestCase { @BeforeEach void before() { createTld("tld"); - + fakeClock.setAutoIncrementStep(Duration.millis(1)); fakeClock.setTo(DateTime.parse("1984-12-21T00:00:00.000Z")); DatabaseTransitionSchedule schedule = DatabaseTransitionSchedule.create( @@ -77,6 +78,11 @@ public class PremiumListDualDaoTest extends EntityTestCase { tm().transactNew(() -> ofyTm().putWithoutBackup(schedule)); } + @AfterEach + void after() { + fakeClock.setAutoIncrementStep(Duration.ZERO); + } + @TestOfyAndSql void testGetPremiumPrice_secondaryLoadMissingSql() { PremiumListSqlDao.delete(PremiumListSqlDao.getLatestRevision("tld").get());