public void increaseTo(long newTimestamp) { timestamp.increaseTo(newTimestamp); upperLimit.increaseToAtLeast(newTimestamp); }
public TimestampRange incrementBy(long delta) { TimestampRange range = timestamp.incrementBy(delta); upperLimit.increaseToAtLeast(range.getUpperBound()); return range; }
@Test public void shouldNotIncreaseTheUpperLimitIfTheNewLimitIsSmaller() { upperLimit.increaseToAtLeast(TIMESTAMP); upperLimit.increaseToAtLeast(TIMESTAMP - 1000); assertThat(upperLimit.get(), is(TIMESTAMP + BUFFER)); }
@Test public void shouldPersistAnIncreasedTimestamp() { upperLimit.increaseToAtLeast(TIMESTAMP); long biggerLimit = upperLimit.get() + 1000; upperLimit.increaseToAtLeast(biggerLimit); verify(boundStore).storeUpperLimit(biggerLimit + BUFFER); }
@Test public void shouldIncreaseTheUpperLimitIfTheNewLimitIsBigger() { upperLimit.increaseToAtLeast(TIMESTAMP); long biggerLimit = upperLimit.get() + 1000; upperLimit.increaseToAtLeast(biggerLimit); assertThat(upperLimit.get(), is(biggerLimit + BUFFER)); }
@Test public void shouldNotIncreaseTheUpperLimitWithBufferIfTheNewLimitIsEqual() { upperLimit.increaseToAtLeast(TIMESTAMP); upperLimit.increaseToAtLeast(upperLimit.get()); assertThat(upperLimit.get(), is(TIMESTAMP + BUFFER)); }
@Test public void shouldNotChangeTheCurrentUpperLimitIfItFailsToPersist() { doThrow(RuntimeException.class).when(boundStore).storeUpperLimit(anyLong()); try { upperLimit.increaseToAtLeast(INITIAL_UPPER_LIMIT + 10); } catch (Exception e) { // We expect this to throw } assertThat(upperLimit.get(), is(INITIAL_UPPER_LIMIT)); }
@Test public void shouldIncreaseUpperLimitWhenHandingOutNewTimestamps() { assertThat( timestamp.incrementBy(INITIAL_REMAINING_TIMESTAMPS + 10).getUpperBound(), is(UPPER_LIMIT + 10)); verify(upperLimit).increaseToAtLeast(UPPER_LIMIT + 10); }
@Test public void canFastForwardToANewMinimumTimestamp() { long newMinimum = 2 * UPPER_LIMIT; timestamp.increaseTo(newMinimum); assertThat(timestamp.incrementBy(1).getLowerBound(), is(newMinimum + 1L)); verify(upperLimit).increaseToAtLeast(longThat(is(greaterThan(newMinimum)))); }
@Test public void shouldNotIncreaseTheUpperLimitIfWouldOverflow() { assertThatExceptionOfType(ArithmeticException.class) .isThrownBy(() -> upperLimit.increaseToAtLeast(Long.MAX_VALUE - BUFFER + 1)); }
public void increaseTo(long newTimestamp) { timestamp.increaseTo(newTimestamp); upperLimit.increaseToAtLeast(newTimestamp); }
public TimestampRange incrementBy(long delta) { TimestampRange range = timestamp.incrementBy(delta); upperLimit.increaseToAtLeast(range.getUpperBound()); return range; }