package io.dropwizard.metrics;
import org.junit.Test;
import io.dropwizard.metrics.CachedGauge;
import io.dropwizard.metrics.Gauge;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import static org.assertj.core.api.Assertions.assertThat;
public class CachedGaugeTest {
private final AtomicInteger value = new AtomicInteger(0);
private final Gauge<Integer> gauge = new CachedGauge<Integer>(100, TimeUnit.MILLISECONDS) {
@Override
protected Integer loadValue() {
return value.incrementAndGet();
}
};
@Test
public void cachesTheValueForTheGivenPeriod() throws Exception {
assertThat(gauge.getValue())
.isEqualTo(1);
assertThat(gauge.getValue())
.isEqualTo(1);
}
@Test
public void reloadsTheCachedValueAfterTheGivenPeriod() throws Exception {
assertThat(gauge.getValue())
.isEqualTo(1);
Thread.sleep(150);
assertThat(gauge.getValue())
.isEqualTo(2);
assertThat(gauge.getValue())
.isEqualTo(2);
}
}