@Override public long getCount() { return delegate.getCount(); }
static long getCounter(Object bean, String methodName, String name, Class<?>... params) throws Exception { Method method = getRealClass(bean).getMethod(methodName, params); return getCounter(method, name).getCount(); }
private long getCounterValue(String name) { return getMetric(name, Counter.class) .map((c) -> c.getCount()) .orElse(0L); }
private Object map(final Metric metric) { if (Counter.class.isInstance(metric)) { return Counter.class.cast(metric).getCount(); } if (Gauge.class.isInstance(metric)) { return Gauge.class.cast(metric).getValue(); } return metric; }
@Test @InSequence(1) public void countedConstructorCalled() { long count = 1L + Math.round(Math.random() * 10); for (int i = 0; i < count; i++) { instance.get(); } assertThat("Counter is not registered correctly", registry.getCounters(), hasKey(COUNTER_NAME)); Counter counter = registry.getCounters().get(COUNTER_NAME); // Make sure that the counter has been called assertThat("Counter count is incorrect", counter.getCount(), is(equalTo(count))); } }
@Test @InSequence(1) public void metricsConstructorCalled() { long count = 1L + Math.round(Math.random() * 10); for (int i = 0; i < count; i++) { instance.get(); } // Make sure that the metrics have been called assertThat("Counter count is incorrect", registry.getCounters().get(absoluteMetricName("counter")).getCount(), is(equalTo(count))); assertThat("Meter count is incorrect", registry.getMeters().get(absoluteMetricName("meter")).getCount(), is(equalTo(count))); assertThat("Timer count is incorrect", registry.getTimers().get(absoluteMetricName("timer")).getCount(), is(equalTo(count))); } }
@Test @InSequence(1) public void countedMethodsNotCalledYet() { assertThat("Counters are not registered correctly", registry.getCounters().keySet(), is(equalTo(COUNTER_NAMES))); assertThat("Constructor timer count is incorrect", registry.getCounters().get(CONSTRUCTOR_COUNTER_NAME).getCount(), is(equalTo(CONSTRUCTOR_COUNT.incrementAndGet()))); // Make sure that the counters haven't been incremented assertThat("Method counter counts are incorrect", registry.getCounters(METHOD_COUNTERS).values(), everyItem(Matchers.<Counter> hasProperty("count", equalTo(0L)))); }
@Test @InSequence(2) public void incrementCounterField() { assertThat("Counter is not registered correctly", registry.getCounters(), hasKey(COUNTER_NAME)); Counter counter = registry.getCounters().get(COUNTER_NAME); // Call the increment method and assert the counter is up-to-date long value = Math.round(Math.random() * Long.MAX_VALUE); bean.increment(value); assertThat("Counter value is incorrect", counter.getCount(), is(equalTo(value))); } }
@Test @InSequence(1) public void getCountTest() { Assert.assertEquals(0, count.getCount()); }
@InSequence(3) public void incrementCountersFromInjection(@Metric(name = "ratioGauge", absolute = true) Gauge<Double> gauge, @Metric(name = "counter1", absolute = true) Counter counter1, @Metric(name = "counter2", absolute = true) Counter counter2) { counter1.inc(Math.round(Math.random() * Integer.MAX_VALUE)); counter2.inc(Math.round(Math.random() * Integer.MAX_VALUE)); assertThat("Gauge value is incorrect", gauge.getValue(), is(equalTo(((double) counter1.getCount()) / ((double) counter2.getCount())))); assertThat("Gauge is not registered correctly", registry.getGauges(), hasKey("ratioGauge")); @SuppressWarnings("unchecked") Gauge<Double> gaugeFromRegistry = (Gauge<Double>) registry.getGauges().get("ratioGauge"); assertThat("Gauge values from registry and injection do not match", gauge.getValue(), is(equalTo(gaugeFromRegistry.getValue()))); } }
@Test @InSequence(1) public void countedMethodNotCalledYet() { assertThat("Counter is not registered correctly", registry.getCounters(), hasKey(COUNTER_NAME)); Counter counter = registry.getCounters().get(COUNTER_NAME); // Make sure that the counter hasn't been called yet assertThat("Counter count is incorrect", counter.getCount(), is(equalTo(COUNTER_COUNT.get()))); }
@Test @InSequence(1) public void countedMethodNotCalledYet() { assertThat("Counter is not registered correctly", registry.getCounters(), hasKey(COUNTER_NAME)); Counter counter = registry.getCounters().get(COUNTER_NAME); // Make sure that the counter hasn't been called yet assertThat("Counter count is incorrect", counter.getCount(), is(equalTo(COUNTER_COUNT.get()))); }
public static void buildCounter(StringBuilder builder, String name, Counter counter, String description, String tags) { getPromTypeLine(builder, name, "counter"); getPromHelpLine(builder, name, description); getPromValueLine(builder, name, counter.getCount(), tags); }
@Test @InSequence(2) public void incrementCountersFromRegistry() { assertThat("Counters are not registered correctly", registry.getCounters(), allOf( hasKey("counter1"), hasKey("counter2"), not(hasKey("not_registered_counter")) ) ); Counter counter1 = registry.getCounters().get("counter1"); Counter counter2 = registry.getCounters().get("counter2"); assertThat("Gauge is not registered correctly", registry.getGauges(), hasKey("ratioGauge")); @SuppressWarnings("unchecked") Gauge<Double> gauge = (Gauge<Double>) registry.getGauges().get("ratioGauge"); counter1.inc(Math.round(Math.random() * Integer.MAX_VALUE)); counter2.inc(Math.round(Math.random() * Integer.MAX_VALUE)); assertThat("Gauge value is incorrect", gauge.getValue(), is(equalTo(((double) counter1.getCount()) / ((double) counter2.getCount())))); }
@Test @InSequence(3) public void incrementLongTest() { count.inc(4); Assert.assertEquals(5, count.getCount()); }
@Test @InSequence(2) public void incrementTest() { count.inc(); Assert.assertEquals(1, count.getCount()); }
@Test @InSequence(4) public void decrementTest() { count.dec(); Assert.assertEquals(4, count.getCount()); }
@Test @InSequence(5) public void decrementLongTest() { count.dec(4); Assert.assertEquals(0, count.getCount()); } }
@Test @InSequence(2) public void callMetricsMethodOnce() { assertThat("Metrics are not registered correctly", registry.getMetrics().keySet(), is(equalTo(absoluteMetricNames()))); // Call the monitored method and assert it's been instrumented bean.metricsMethod(); // Make sure that the metrics have been called assertThat("Counter count is incorrect", registry.getCounters().get(absoluteMetricName("counter")).getCount(), is(equalTo(1L))); assertThat("Meter count is incorrect", registry.getMeters().get(absoluteMetricName("meter")).getCount(), is(equalTo(1L))); assertThat("Timer count is incorrect", registry.getTimers().get(absoluteMetricName("timer")).getCount(), is(equalTo(1L))); // Let's call the gauge at the end as Weld is intercepting the gauge // invocation while OWB not assertThat("Gauge value is incorrect", registry.getGauges().get(absoluteMetricName("gauge")).getValue(), hasToString((equalTo("value")))); } }