/** * @return a {@link CodahaleMetricsListener} built with parameters from this builder. */ public CodahaleMetricsListener build() { return new CodahaleMetricsListener( metricsCollector, endpointMetricsHandler, includeServerConfigMetrics, serverStatsMetricNamingStrategy, serverConfigMetricNamingStrategy, requestAndResponseSizeHistogramSupplier ); }
@Test public void constructor_throws_IllegalArgumentException_if_passed_null() { // when Throwable ex = catchThrowable(() -> new CodahaleMetricsListener(null)); // then assertThat(ex).isInstanceOf(IllegalArgumentException.class); }
@Test public void constructor_uses_histogram_supplier_for_request_size_and_response_size_metrics() { // given Histogram mockHistogram = mock(Histogram.class); Supplier<Histogram> histogramSupplier = () -> mockHistogram; // when CodahaleMetricsListener instance = new CodahaleMetricsListener( cmcMock, endpointMetricsHandlerMock, false, null, null, histogramSupplier ); // then assertThat(instance.requestSizes).isSameAs(mockHistogram); assertThat(instance.responseSizes).isSameAs(mockHistogram); }
@Test public void single_arg_constructor_sets_fields_as_expected() { // given setupMetricRegistryAndCodahaleMetricsCollector(); // when CodahaleMetricsListener instance = new CodahaleMetricsListener(cmcMock); // then verifyServerStatisticMetrics(instance); assertThat(instance.getMetricsCollector()).isSameAs(cmcMock); assertThat(instance.metricsCollector).isSameAs(cmcMock); assertThat(instance.endpointMetricsHandler) .isNotNull() .isInstanceOf(EndpointMetricsHandlerDefaultImpl.class); assertThat(instance.getEndpointMetricsHandler()).isSameAs(instance.endpointMetricsHandler); assertThat(instance.includeServerConfigMetrics).isFalse(); assertNamingStrategyIsDefault(instance.serverStatsMetricNamingStrategy, DEFAULT_PREFIX, DEFAULT_WORD_DELIMITER); assertNamingStrategyIsDefault(instance.serverConfigMetricNamingStrategy, ServerConfig.class.getSimpleName(), DEFAULT_WORD_DELIMITER); assertThat(registeredGauges).isEmpty(); }
@Test public void kitchen_sink_constructor_handles_default_args() { // given setupMetricRegistryAndCodahaleMetricsCollector(); // when CodahaleMetricsListener instance = new CodahaleMetricsListener( cmcMock, null, false, null, null, null ); // then verifyServerStatisticMetrics(instance); assertThat(instance.getMetricsCollector()).isSameAs(cmcMock); assertThat(instance.metricsCollector).isSameAs(cmcMock); assertThat(instance.endpointMetricsHandler) .isNotNull() .isInstanceOf(EndpointMetricsHandlerDefaultImpl.class); assertThat(instance.getEndpointMetricsHandler()).isSameAs(instance.endpointMetricsHandler); assertThat(instance.includeServerConfigMetrics).isFalse(); assertNamingStrategyIsDefault(instance.serverStatsMetricNamingStrategy, DEFAULT_PREFIX, DEFAULT_WORD_DELIMITER); assertNamingStrategyIsDefault(instance.serverConfigMetricNamingStrategy, ServerConfig.class.getSimpleName(), DEFAULT_WORD_DELIMITER); assertThat(instance.requestAndResponseSizeHistogramSupplier) .isSameAs(DEFAULT_REQUEST_AND_RESPONSE_SIZE_HISTOGRAM_SUPPLIER); assertThat(registeredGauges).isEmpty(); }
@DataProvider(value = { "true", "false" }) @Test public void kitchen_sink_constructor_sets_fields_as_expected(boolean includeServerConfigMetrics) { // given setupMetricRegistryAndCodahaleMetricsCollector(); MetricNamingStrategy<ServerStatisticsMetricNames> statsNamingStrategyMock = new DefaultMetricNamingStrategy<>(); MetricNamingStrategy<ServerConfigMetricNames> configNamingStrategyMock = new DefaultMetricNamingStrategy<>(); Supplier<Histogram> customRequestAndResponseSizeHistogramSupplier = () -> mock(Histogram.class); // when CodahaleMetricsListener instance = new CodahaleMetricsListener( cmcMock, endpointMetricsHandlerMock, includeServerConfigMetrics, statsNamingStrategyMock, configNamingStrategyMock, customRequestAndResponseSizeHistogramSupplier ); // then verifyServerStatisticMetrics(instance); assertThat(instance.getMetricsCollector()).isSameAs(cmcMock); assertThat(instance.metricsCollector).isSameAs(cmcMock); assertThat(instance.getEndpointMetricsHandler()).isSameAs(endpointMetricsHandlerMock); assertThat(instance.endpointMetricsHandler).isSameAs(endpointMetricsHandlerMock); assertThat(instance.includeServerConfigMetrics).isEqualTo(includeServerConfigMetrics); assertThat(instance.serverStatsMetricNamingStrategy).isSameAs(statsNamingStrategyMock); assertThat(instance.serverConfigMetricNamingStrategy).isSameAs(configNamingStrategyMock); assertThat(instance.requestAndResponseSizeHistogramSupplier) .isSameAs(customRequestAndResponseSizeHistogramSupplier); assertThat(registeredGauges).isEmpty(); }
listener = new CodahaleMetricsListener(cmcMock, endpointMetricsHandlerMock, true, null, null, mockHistogramSupplier);
public MetricsTestConfig() { try { port = ComponentTestUtils.findFreePort(); } catch (IOException e) { throw new RuntimeException("Couldn't allocate port", e); } CodahaleMetricsEngine metricsEngine = new CodahaleMetricsEngine() .addReporter(new DefaultSLF4jReporterFactory()) .addReporter(new RiposteGraphiteReporterFactory("test.metrics.stuff", "doesnotexist.nikecloud.com", 2003)) .reportJvmMetrics() .start(); metricsListener = new CodahaleMetricsListener(metricsEngine.getMetricsCollector()); metricsListener.initEndpointAndServerConfigMetrics(this); }