@Override public int hashCode() { return Objects.hash(config, getValue(0)); } }
@Test public void testInitialPollIsZero() { clock.set(time(1)); DoubleCounter c = newInstance("foo"); assertEquals(c.getValue(1).doubleValue(), 0.0); }
@Test public void testGetValueTwice() { ManualClock manualClock = new ManualClock(0L); DoubleCounter c = new DoubleCounter(MonitorConfig.builder("test").build(), manualClock); c.increment(1); for (int i = 1; i < 10; ++i) { manualClock.set(i * 60000L); c.increment(1); c.getValue(0); assertEquals(c.getValue(0).doubleValue(), 1 / 60.0); } } }
@Test public void testSimpleTransition() { clock.set(time(1)); DoubleCounter c = newInstance("c"); assertEquals(c.getValue(1).doubleValue(), 0.0, DELTA); assertEquals(c.getCurrentCount(1), 0.0); clock.set(time(3)); c.increment(1); assertEquals(c.getValue(1).doubleValue(), 0.0, DELTA); assertEquals(c.getCurrentCount(1), 1.0); clock.set(time(6)); c.increment(1); assertEquals(c.getValue(1).doubleValue(), 0.0, DELTA); assertEquals(c.getCurrentCount(1), 2.0); clock.set(time(12)); c.increment(1); assertEquals(c.getCurrentCount(1), 1.0); assertEquals(c.getValue(1).doubleValue(), 2.0 / 10.0); }
@Test public void testResetPreviousValue() { clock.set(time(1)); DoubleCounter c = newInstance("foo"); for (int i = 1; i <= 100000; ++i) { c.increment(1); clock.set(time(i * 10 + 1)); assertEquals(c.getValue(1).doubleValue(), 0.1); } }
@Test public void testNonMonotonicClock() { clock.set(time(1)); DoubleCounter c = newInstance("foo"); c.getValue(1); c.increment(1); c.increment(1); clock.set(time(10)); c.increment(1); clock.set(time(9)); // Should get ignored c.increment(1); assertEquals(c.getCurrentCount(1), 2.0); c.increment(1); clock.set(time(10)); c.increment(1); c.increment(1); assertEquals(c.getCurrentCount(1), 5.0); // Check rate for previous interval assertEquals(c.getValue(1).doubleValue(), 0.2); }
@Test public void testBoundaryTransition() { clock.set(time(1)); DoubleCounter c = newInstance("foo"); // Should all go to one bucket c.increment(1); clock.set(time(4)); c.increment(1); clock.set(time(9)); c.increment(1); // Should cause transition clock.set(time(10)); c.increment(1); clock.set(time(19)); c.increment(1); // Check counts assertEquals(c.getValue(1).doubleValue(), 0.3); assertEquals(c.getCurrentCount(1), 2.0); }
@Override public int hashCode() { return Objects.hash(config, getValue(0)); } }