/*******************************************************************************
* Copyright (c) 2005, 2014 springside.github.io
*
* Licensed under the Apache License, Version 2.0 (the "License");
*******************************************************************************/
package org.springside.modules.metrics;
import static org.assertj.core.api.Assertions.*;
import org.junit.Before;
import org.junit.Test;
import org.springside.modules.metrics.metric.Counter;
import org.springside.modules.metrics.metric.CounterMetric;
import org.springside.modules.metrics.utils.Clock.MockClock;
public class CounterTest {
private MockClock clock = new MockClock();
@Before
public void setup() {
Counter.clock = clock;
}
@Test
public void normal() {
Counter counter = new Counter();
counter.inc(10);
counter.inc(20);
counter.inc(30);
clock.increaseTime(1000);
CounterMetric metric = counter.calculateMetric();
assertThat(metric.totalCount).isEqualTo(60);
assertThat(metric.avgRate).isEqualTo(60);
assertThat(metric.latestCount).isEqualTo(60);
assertThat(metric.latestRate).isEqualTo(60);
counter.inc(20);
clock.increaseTime(1000);
metric = counter.calculateMetric();
assertThat(metric.totalCount).isEqualTo(80);
assertThat(metric.avgRate).isEqualTo(40);
assertThat(metric.latestCount).isEqualTo(20);
assertThat(metric.latestRate).isEqualTo(20);
}
@Test
public void incAndDec() {
Counter counter = new Counter();
counter.inc(20);
counter.inc();
counter.inc();
counter.dec(10);
counter.dec();
clock.increaseTime(1000);
CounterMetric metric = counter.calculateMetric();
assertThat(metric.totalCount).isEqualTo(11);
}
@Test
public void empty() {
Counter counter = new Counter();
clock.increaseTime(1000);
CounterMetric metric = counter.calculateMetric();
assertThat(metric.totalCount).isEqualTo(0);
assertThat(metric.latestRate).isEqualTo(0);
}
}