public long getCacheMiss() { return getMissCounter().getValue().longValue(); }
public long getGetCalls() { return getCallCounter().getValue().longValue(); }
public long getBulkMiss() { return getBulkMissCounter().getValue().longValue(); }
public long getCacheHits() { return getHitCounter().getValue().longValue(); }
public long getBulkCalls() { return getBulkCounter().getValue().longValue(); }
public long getBulkHits() { return getBulkHitCounter().getValue().longValue(); }
public long getSetCalls() { return getSetCallCounter().getValue().longValue(); }
@Test public void testInitialPollIsZero() { clock.set(time(1)); StepCounter c = newInstance("foo"); assertEquals(c.getValue(1).doubleValue(), 0.0, DELTA); }
@Test public void testMissedIntervalNoIncrements() { clock.set(time(1)); StepCounter c = newInstance("foo"); c.getValue(1); // Gaps without polling c.increment(5); clock.set(time(34)); // Check counts, previous and current interval should be 0 assertEquals(c.getValue(1).doubleValue(), 0.0); assertEquals(c.getCurrentCount(1), 0); }
@Test public void testGetValueTwice() { ManualClock manualClock = new ManualClock(60000L); StepCounter c = new StepCounter(MonitorConfig.builder("test").build(), manualClock); c.increment(); for (int i = 2; i < 10; ++i) { manualClock.set(i * 60000L); c.increment(); c.getValue(0); assertEquals(c.getValue(0).doubleValue(), 1 / 60.0, DELTA); } }
@Test public void testSimpleTransition() { long start = time(1); clock.set(start); StepCounter c = newInstance("c"); assertEquals(c.getValue(1).doubleValue(), 0.0, DELTA); assertEquals(c.getCurrentCount(1), 0L); clock.set(start + 2000); c.increment(); assertEquals(c.getValue(1).doubleValue(), 0.0, DELTA); assertEquals(c.getCurrentCount(1), 1L); clock.set(start + 8000); c.increment(); assertEquals(c.getValue(1).doubleValue(), 0.0, DELTA); assertEquals(c.getCurrentCount(1), 2L); clock.set(start + 12000); c.increment(); assertEquals(c.getValue(1).doubleValue(), 2.0 / 10.0, DELTA); assertEquals(c.getCurrentCount(1), 1L); }
@Test public void testResetPreviousValue() { clock.set(time(1)); StepCounter c = newInstance("foo"); for (int i = 1; i <= 100000; ++i) { c.increment(); clock.set(time(i * 10 + 1)); assertEquals(c.getValue(1).doubleValue(), 0.1, DELTA); } }
@Test public void testIncrAfterMissedSteps() { clock.set(time(1)); StepCounter c = newInstance("foo"); c.increment(); clock.set(time(11)); assertEquals(c.getValue(1).doubleValue(), 0.1, DELTA); clock.set(time(31)); c.increment(); c.increment(); c.increment(); clock.set(time(41)); assertEquals(c.getValue(1).doubleValue(), 0.3, DELTA); } }
@Test public void testMissedInterval() { clock.set(time(1)); StepCounter c = newInstance("foo"); c.getValue(1); // Multiple updates without polling c.increment(1); clock.set(time(4)); c.increment(1); clock.set(time(14)); c.increment(1); clock.set(time(24)); c.increment(1); clock.set(time(34)); c.increment(1); // Check counts assertEquals(c.getValue(1).doubleValue(), 0.1); assertEquals(c.getCurrentCount(1), 1); }
@Test public void testNonMonotonicClock() { clock.set(time(1)); StepCounter c = newInstance("foo"); c.getValue(1); c.increment(); c.increment(); clock.set(time(10)); c.increment(); clock.set(time(9)); // Should get ignored c.increment(); assertEquals(c.getCurrentCount(1), 2); c.increment(); clock.set(time(10)); c.increment(); c.increment(); assertEquals(c.getCurrentCount(1), 5); // Check rate for previous interval assertEquals(c.getValue(1).doubleValue(), 0.2, DELTA); }
@Test public void testBoundaryTransition() { clock.set(time(1)); StepCounter c = newInstance("foo"); // Should all go to one bucket c.increment(); clock.set(time(4)); c.increment(); clock.set(time(9)); c.increment(); // Should cause transition clock.set(time(10)); c.increment(); clock.set(time(19)); c.increment(); // Check counts assertEquals(c.getValue(1).doubleValue(), 0.3, DELTA); assertEquals(c.getCurrentCount(1), 2); }
@Override public Iterable<Measurement> measure() { final long now = clock.wallTime(); final List<Measurement> ms = new ArrayList<>(2); ms.add(newMeasurement(Statistic.count, now, servoCount.getValue(0))); ms.add(newMeasurement(Statistic.totalTime, now, getValue(servoTotal, CNV_SECONDS))); ms.add(newMeasurement(Statistic.totalOfSquares, now, getValue(servoTotalOfSquares, CNV_SQUARES))); ms.add(newMeasurement(Statistic.max, now, getValue(servoMax, CNV_SECONDS))); return ms; }
@Override public Iterable<Measurement> measure() { final long now = clock.wallTime(); final List<Measurement> ms = new ArrayList<>(2); ms.add(newMeasurement(Statistic.count, now, servoCount.getValue(0))); ms.add(newMeasurement(Statistic.totalTime, now, getValue(servoTotal, CNV_SECONDS))); ms.add(newMeasurement(Statistic.totalOfSquares, now, getValue(servoTotalOfSquares, CNV_SQUARES))); ms.add(newMeasurement(Statistic.max, now, getValue(servoMax, CNV_SECONDS))); return ms; }