@Override protected Object prepareAndInvoke(Timer timer, Timed annotation, InvocationContext context) throws Exception { return timer.time(context::proceed); } }
@Override public long getCount() { return delegate.getCount(); }
@Override public double getFifteenMinuteRate() { return delegate.getFifteenMinuteRate(); }
} else if(metric instanceof Timer) { Timer timer = (Timer)metric; Snapshot snapshot = timer.getSnapshot(); json.writeStartObject(); json.writeObjectField("count", timer.getCount()); json.writeObjectField("meanRate", timer.getMeanRate()); json.writeObjectField("oneMinRate", timer.getOneMinuteRate()); json.writeObjectField("fiveMinRate", timer.getFiveMinuteRate()); json.writeObjectField("fifteenMinRate", timer.getFifteenMinuteRate()); json.writeObjectField("min", snapshot.getMin()); json.writeObjectField("max", snapshot.getMax());
timer.update(1, TimeUnit.SECONDS); Thread.sleep(1000); TestUtils.assertEqualsWithTolerance(1.0, timer.getMeanRate()); TestUtils.assertEqualsWithTolerance(1.0, timer.getOneMinuteRate()); TestUtils.assertEqualsWithTolerance(1.0, timer.getFiveMinuteRate()); TestUtils.assertEqualsWithTolerance(1.0, timer.getFifteenMinuteRate()); TestUtils.assertEqualsWithTolerance(expectedMean, timer.getMeanRate()); Assert.assertThat(timer.getOneMinuteRate(), lessThan(1.0)); Assert.assertThat(timer.getFiveMinuteRate(), lessThan(1.0)); Assert.assertThat(timer.getFifteenMinuteRate(), lessThan(1.0));
@Override public Snapshot getSnapshot() { return delegate.getSnapshot(); }
@Override public double getFiveMinuteRate() { return delegate.getFiveMinuteRate(); }
@Override public double getOneMinuteRate() { return delegate.getOneMinuteRate(); }
@Override public double getMeanRate() { return delegate.getMeanRate(); }
@Override public void update(long duration, TimeUnit unit) { delegate.update(duration, unit); }
return new StringBuilder() .append(type(registryKey, keyBase + keyUnit + " summary", entry.metadata)) .append(value(registryKey, keyBase + keyUnit + "_count", timer.getCount(), entry.metadata)) .append(value(registryKey, keyBase + "_rate_per_second", timer.getMeanRate(), entry.metadata)) .append(value(registryKey, keyBase + "_one_min_rate_per_second", timer.getOneMinuteRate(), entry.metadata)) .append(value(registryKey, keyBase + "_five_min_rate_per_second", timer.getFiveMinuteRate(), entry.metadata)) .append(value(registryKey, keyBase + "_fifteen_min_rate_per_second", timer.getFifteenMinuteRate(), entry.metadata)) .append(toPrometheus(registryKey, keyBase, keyUnit, timer.getSnapshot(), entry.metadata));
@Test public void testSnapshotValues() throws Exception { Assert.assertArrayEquals( "The globalTimer does not contain the expected values: " + Arrays.toString(SAMPLE_LONG_DATA), SAMPLE_LONG_DATA, globalTimer.getSnapshot().getValues()); }
@Before public void initData() { if (isInitialized) { return; } globalTimer = registry.timer("test.longData.timer"); for (long i : SAMPLE_LONG_DATA) { globalTimer.update(i, TimeUnit.NANOSECONDS); } isInitialized = true; }
@Override public Double getValue() { return (double) hits.getCount() / (double) calls.getCount(); } };
@Override public void time(Runnable event) { delegate.time(event); }
@Test public void testSnapshot999thPercentile() throws Exception { TestUtils.assertEqualsWithTolerance(990, globalTimer.getSnapshot().get999thPercentile()); }
@Test @InSequence(1) public void timedMethodNotCalledYet() { // Make sure that the timer hasn't been called yet assertThat("Timer count is incorrect", timer.getCount(), is(equalTo(0L))); }
@Override public <T> T time(Callable<T> event) throws Exception { return delegate.time(event); }