package io.dropwizard.metrics; import org.junit.Before; import org.junit.Test; import io.dropwizard.metrics.Clock; import io.dropwizard.metrics.Meter; import java.util.concurrent.TimeUnit; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.offset; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class MeterTest { private final Clock clock = mock(Clock.class); private final Meter meter = new Meter(clock); @Before public void setUp() throws Exception { when(clock.getTick()).thenReturn(0L, TimeUnit.SECONDS.toNanos(10)); } @Test public void startsOutWithNoRatesOrCount() throws Exception { assertThat(meter.getCount()) .isZero(); assertThat(meter.getMeanRate()) .isEqualTo(0.0, offset(0.001)); assertThat(meter.getOneMinuteRate()) .isEqualTo(0.0, offset(0.001)); assertThat(meter.getFiveMinuteRate()) .isEqualTo(0.0, offset(0.001)); assertThat(meter.getFifteenMinuteRate()) .isEqualTo(0.0, offset(0.001)); } @Test public void marksEventsAndUpdatesRatesAndCount() throws Exception { meter.mark(); meter.mark(2); assertThat(meter.getMeanRate()) .isEqualTo(0.3, offset(0.001)); assertThat(meter.getOneMinuteRate()) .isEqualTo(0.1840, offset(0.001)); assertThat(meter.getFiveMinuteRate()) .isEqualTo(0.1966, offset(0.001)); assertThat(meter.getFifteenMinuteRate()) .isEqualTo(0.1988, offset(0.001)); } }