/** * Provides a CodahaleMetricsEngine with the default CodahaleMetricsCollector */ public CodahaleMetricsEngine() { this(new CodahaleMetricsCollector()); }
public MetricRegistry getMetricRegistry() { return metricsCollector.getMetricRegistry(); }
@Override public <T, R> R counted(Function<T, R> f, T arg, String counterName, long delta) { final Counter counter = getNamedCounter(counterName); try { return f.apply(arg); } finally { processCounter(counter, delta); } }
public CodahaleMetricsCollector registerAll(String prefix, MetricSet metricSet) { for (Map.Entry<String, Metric> entry : metricSet.getMetrics().entrySet()) { if (entry.getValue() instanceof MetricSet) { registerAll(prefix + "." + entry.getKey(), (MetricSet) entry.getValue()); } else { registerNamedMetric(prefix + "." + entry.getKey(), entry.getValue()); } } return this; }
cmcMock = mock(CodahaleMetricsCollector.class); doReturn(metricRegistryMock).when(cmcMock).getMetricRegistry(); metricRegistryMock.register(name, metric); return metric; }).when(cmcMock).registerNamedMetric(anyString(), any(Metric.class)); ).when(cmcMock).getNamedCounter(anyString()); ).when(cmcMock).getNamedMeter(anyString()); ).when(cmcMock).getNamedHistogram(anyString()); ).when(cmcMock).getNamedTimer(anyString());
/** * Test method for {@link com.nike.riposte.metrics.codahale.CodahaleMetricsCollector#counted(java.util.function.BiConsumer, * java.lang.Object, java.lang.Object, java.lang.String, long)}. */ @Test public void testCountedBiConsumerOfTUTUStringLong() { final String testName = "countedBiConsumerTest"; mc.counted((arg1, arg2) -> { new Double(Math.abs(arg1 * arg2)).toString(); }, -42, 3.14159, testName); assertTrue(mc.getMetricRegistry().counter(testName).getCount() == 1); mc.counted(this::biConsumerMethod, -42, 3.14159, testName); assertTrue(mc.getMetricRegistry().counter(testName).getCount() == 2); }
/** * Test method for {@link com.nike.riposte.metrics.codahale.CodahaleMetricsCollector#timed(java.util.function.BiFunction, * java.lang.Object, java.lang.Object, java.lang.String)}. */ @Test public void testTimedBiFunctionOfTURTUString() { final String testName = "timedBiFunctionTest"; mc.timed((arg1, arg2) -> { return new Double(Math.abs(arg1 * arg2)).toString(); }, -42, 3.14159, testName); assertTrue(mc.getMetricRegistry().timer(testName).getCount() == 1); mc.timed(this::biFunctionMethod, -42, 3.14159, testName); }
/** * Test method for {@link com.nike.riposte.metrics.codahale.CodahaleMetricsCollector#metered(java.util.function.BiConsumer, * java.lang.Object, java.lang.Object, java.lang.String, long)}. */ @Test public void testMeteredBiConsumerOfTUTUStringLong() { final String testName = "meteredBiConsumerTest"; mc.metered((arg1, arg2) -> { new Double(Math.abs(arg1 * arg2)).toString(); }, -42, 3.14159, testName); assertTrue(mc.getMetricRegistry().meter(testName).getCount() == 1); mc.metered(this::biConsumerMethod, -42, 3.14159, testName); assertTrue(mc.getMetricRegistry().meter(testName).getCount() == 2); }
protected void addServerStatisticsMetrics() { this.inflightRequests = metricsCollector.getNamedCounter( serverStatsMetricNamingStrategy.nameFor(INFLIGHT_REQUESTS) ); this.processedRequests = metricsCollector.getNamedCounter( serverStatsMetricNamingStrategy.nameFor(PROCESSED_REQUESTS) ); this.failedRequests = metricsCollector.getNamedCounter( serverStatsMetricNamingStrategy.nameFor(FAILED_REQUESTS) ); this.responseWriteFailed = metricsCollector.getNamedCounter( serverStatsMetricNamingStrategy.nameFor(RESPONSE_WRITE_FAILED) ); this.responseSizes = metricsCollector.registerNamedMetric( serverStatsMetricNamingStrategy.nameFor(RESPONSE_SIZES), requestAndResponseSizeHistogramSupplier.get() ); this.requestSizes = metricsCollector.registerNamedMetric( serverStatsMetricNamingStrategy.nameFor(REQUEST_SIZES), requestAndResponseSizeHistogramSupplier.get() ); }
@Override public <V> V timed(Callable<V> c, String timerName) throws Exception { final Context context = getNamedTimer(timerName).time(); try { return c.call(); } finally { context.stop(); } }
@Override public void metered(Runnable r, String meterName, long events) { final Meter meter = getNamedMeter(meterName); try { r.run(); } finally { meter.mark(events); } }
/** * Adds metrics related to the given ServerConfig - usually gauges so you can inspect how the ServerConfig was setup. * Usually not needed - better to log this info on startup. */ protected void addServerConfigMetrics(ServerConfig config) { // add server config gauges metricsCollector.registerNamedMetric(serverConfigMetricNamingStrategy.nameFor(BOSS_THREADS), (Gauge<Integer>)config::numBossThreads); metricsCollector.registerNamedMetric(serverConfigMetricNamingStrategy.nameFor(WORKER_THREADS), (Gauge<Integer>)config::numWorkerThreads); metricsCollector.registerNamedMetric(serverConfigMetricNamingStrategy.nameFor(MAX_REQUEST_SIZE_IN_BYTES), (Gauge<Integer>)config::maxRequestSizeInBytes); List<String> endpointsList = config.appEndpoints() .stream() .map( endpoint -> endpoint.getClass().getName() + "-" + getMatchingHttpMethodsAsCombinedString(endpoint) + "-" + endpoint.requestMatcher().matchingPathTemplates() ) .collect(Collectors.toList()); metricsCollector.registerNamedMetric(serverConfigMetricNamingStrategy.nameFor(ENDPOINTS), (Gauge<List<String>>)() -> endpointsList); }
/** * Test method for {@link com.nike.riposte.metrics.codahale.CodahaleMetricsCollector#counted(java.util.function.Consumer, * java.lang.Object, java.lang.String, long)}. */ @Test public void testCountedConsumerOfTTStringLong() { final String testName = "countedConsumerTest"; mc.counted((arg) -> { new Long(Math.abs(arg)).toString(); }, -42, testName); assertTrue(mc.getMetricRegistry().counter(testName).getCount() == 1); mc.counted(this::consumerMethod, -42, testName); assertTrue(mc.getMetricRegistry().counter(testName).getCount() == 2); }
/** * Test method for {@link com.nike.riposte.metrics.codahale.CodahaleMetricsCollector#timed(java.util.function.BiConsumer, * java.lang.Object, java.lang.Object, java.lang.String)}. */ @Test public void testTimedBiConsumerOfTUTUString() { final String testName = "timedBiConsumerTest"; mc.timed((arg1, arg2) -> { Math.abs(arg1 * arg2); }, -42, 3.14159, testName); assertTrue(mc.getMetricRegistry().timer(testName).getCount() == 1); mc.timed(this::biConsumerMethod, -42, 3.14159, testName); assertTrue(mc.getMetricRegistry().timer(testName).getCount() == 2); }
/** * Test method for {@link com.nike.riposte.metrics.codahale.CodahaleMetricsCollector#metered(java.util.function.Consumer, * java.lang.Object, java.lang.String, long)}. */ @Test public void testMeteredConsumerOfTTStringLong() { final String testName = "meteredConsumerTest"; mc.metered((arg) -> { new Long(Math.abs(arg)).toString(); }, -42, testName); assertTrue(mc.getMetricRegistry().meter(testName).getCount() == 1); mc.metered(this::consumerMethod, -42, testName); assertTrue(mc.getMetricRegistry().meter(testName).getCount() == 2); }
private void verifyServerStatisticMetrics(CodahaleMetricsListener instance) { String prefix = ((DefaultMetricNamingStrategy)instance.serverStatsMetricNamingStrategy).prefix; assertThat(instance.getInflightRequests()).isSameAs(instance.inflightRequests); verify(cmcMock).getNamedCounter(name(prefix, "inflight_requests")); verify(metricRegistryMock).counter(name(prefix, "inflight_requests")); assertThat(instance.inflightRequests).isSameAs(registeredCounterMocks.get(name(prefix, "inflight_requests"))); assertThat(instance.getProcessedRequests()).isSameAs(instance.processedRequests); verify(cmcMock).getNamedCounter(name(prefix, "processed_requests")); verify(metricRegistryMock).counter(name(prefix, "processed_requests")); assertThat(instance.processedRequests).isSameAs(registeredCounterMocks.get(name(prefix, "processed_requests"))); assertThat(instance.getFailedRequests()).isSameAs(instance.failedRequests); verify(cmcMock).getNamedCounter(name(prefix, "failed_requests")); verify(metricRegistryMock).counter(name(prefix, "failed_requests")); assertThat(instance.failedRequests).isSameAs(registeredCounterMocks.get(name(prefix, "failed_requests"))); assertThat(instance.getResponseWriteFailed()).isSameAs(instance.responseWriteFailed); verify(cmcMock).getNamedCounter(name(prefix, "response_write_failed")); verify(metricRegistryMock).counter(name(prefix, "response_write_failed")); assertThat(instance.responseWriteFailed).isSameAs(registeredCounterMocks.get(name(prefix, "response_write_failed"))); assertThat(instance.getResponseSizes()).isSameAs(instance.responseSizes); verify(metricRegistryMock).register(name(prefix, "response_sizes"), instance.responseSizes); assertThat(instance.responseSizes).isSameAs(registeredHistogramMocks.get(name(prefix, "response_sizes"))); verify(cmcMock).registerNamedMetric(name(prefix, "response_sizes"), instance.responseSizes); assertThat(instance.getRequestSizes()).isSameAs(instance.requestSizes); verify(metricRegistryMock).register(name(prefix, "request_sizes"), instance.requestSizes); assertThat(instance.requestSizes).isSameAs(registeredHistogramMocks.get(name(prefix, "request_sizes"))); verify(cmcMock).registerNamedMetric(name(prefix, "request_sizes"), instance.requestSizes); }
@Override public <T, U, R> R timed(BiFunction<T, U, R> bf, T arg1, U arg2, String timerName) { final Context context = getNamedTimer(timerName).time(); try { return bf.apply(arg1, arg2); } finally { context.stop(); } }
@Override public <V> V metered(Callable<V> c, String meterName, long events) throws Exception { final Meter meter = getNamedMeter(meterName); try { return c.call(); } finally { meter.mark(events); } }
assertThat(registeredGauges.get(expectedBossThreadsGaugeName).getValue()) .isEqualTo(serverConfig.numBossThreads()); verify(cmcMock).registerNamedMetric(expectedBossThreadsGaugeName, registeredGauges.get(expectedBossThreadsGaugeName)); assertThat(registeredGauges.get(expectedWorkerThreadsGaugeName).getValue()) .isEqualTo(serverConfig.numWorkerThreads()); verify(cmcMock).registerNamedMetric(expectedWorkerThreadsGaugeName, registeredGauges.get(expectedWorkerThreadsGaugeName)); assertThat(registeredGauges.get(expectedMaxRequestSizeInBytesGaugeName).getValue()) .isEqualTo(serverConfig.maxRequestSizeInBytes()); verify(cmcMock).registerNamedMetric(expectedMaxRequestSizeInBytesGaugeName, registeredGauges.get(expectedMaxRequestSizeInBytesGaugeName)); assertThat(registeredGauges.get(expectedEndpointsListGaugeName).getValue()) .isEqualTo(expectedEndpointsListValue); verify(cmcMock).registerNamedMetric(expectedEndpointsListGaugeName, registeredGauges.get(expectedEndpointsListGaugeName));
@Override public <T> void counted(Consumer<T> c, T arg, String counterName, long delta) { final Counter counter = getNamedCounter(counterName); try { c.accept(arg); } finally { processCounter(counter, delta); } }