private Pair<String, String>[] generateVarargDimensions(Integer numDims) { if (numDims == null) return null; return generateIterableDimensions(numDims).toArray(new Pair[]{}); }
private <M extends Metric> void verifyMetricCreation( MetricBuilder<M> metricBuilder, BuilderTagger<M> builderTaggerMock, String metricName, M expectedMetricResult, M actualMetricResult ) { verifyMetricCreation( metricBuilder, builderTaggerMock, metricName, null, expectedMetricResult, actualMetricResult ); }
@DataProvider(value = { "null", "0", "1", "2" }, splitBy = "\\|") @Test public void getNamedTimer_with_iterable_dimensions_creates_dimensioned_timer_using_sfx_mechanisms( Integer numDimensions ) { // given String timerName = UUID.randomUUID().toString(); List<Pair<String, String>> iterableDims = generateIterableDimensions(numDimensions); // when Timer result = sfxImpl.getNamedTimer(timerName, iterableDims); // then verifyMetricCreation(timerBuilderMock, timerTaggerMock, timerName, iterableDims, timerMock, result); }
@DataProvider(value = { "null", "0", "1", "2" }, splitBy = "\\|") @Test public void getNamedMeter_with_varargs_dimensions_creates_dimensioned_meter_using_sfx_mechanisms( Integer numDimensions ) { // given String meterName = UUID.randomUUID().toString(); Pair<String, String>[] varargDims = generateVarargDimensions(numDimensions); List<Pair<String, String>> dimsAsList = (varargDims == null) ? null : Arrays.asList(varargDims); // when Meter result = sfxImpl.getNamedMeter(meterName, varargDims); // then verifyMetricCreation(MetricBuilder.METERS, meterTaggerMock, meterName, dimsAsList, meterMock, result); }
@Test public void double_arg_constructor_sets_fields_as_expected() { // when SignalFxAwareCodahaleMetricsCollector cmc = new SignalFxAwareCodahaleMetricsCollector( metricRegistryMock, sfxReporterFactoryMock ); // then assertThat(cmc.metricRegistry).isSameAs(metricRegistryMock); verify(sfxReporterFactoryMock).getReporter(metricRegistryMock); assertThat(cmc.metricMetadata).isSameAs(metricMetadataMock); verifyRollingWindowTimerBuilder(cmc.timerBuilder, reportingInterval, reportingTimeUnit); verifyRollingWindowHistogramBuilder(cmc.histogramBuilder, reportingInterval, reportingTimeUnit); }
@DataProvider(value = { "null", "0", "1", "2" }, splitBy = "\\|") @Test public void registerNamedMetric_with_varargs_dimensions_creates_dimensioned_gauge_using_sfx_mechanisms( Integer numDimensions ) { // given String gaugeName = UUID.randomUUID().toString(); Pair<String, String>[] varargDims = generateVarargDimensions(numDimensions); List<Pair<String, String>> dimsAsList = (varargDims == null) ? null : Arrays.asList(varargDims); // when Gauge<String> result = sfxImpl.registerNamedMetric(gaugeName, gaugeMock, varargDims); // then verifyMetricRegistration(gaugeTaggerMock, gaugeName, dimsAsList, gaugeMock, result); }
@DataProvider(value = { "null", "0", "1", "2" }, splitBy = "\\|") @Test public void registerNamedMetric_with_iterable_dimensions_creates_dimensioned_gauge_using_sfx_mechanisms( Integer numDimensions ) { // given String gaugeName = UUID.randomUUID().toString(); List<Pair<String, String>> iterableDims = generateIterableDimensions(numDimensions); // when Gauge<String> result = sfxImpl.registerNamedMetric(gaugeName, gaugeMock, iterableDims); // then verifyMetricRegistration(gaugeTaggerMock, gaugeName, iterableDims, gaugeMock, result); } }
genericMetricTaggerMock = mock(BuilderTagger.class); setupBuilderTaggerMock(timerTaggerMock, timerBuilderMock, timerMock); setupBuilderTaggerMock(meterTaggerMock, MetricBuilder.METERS, meterMock); setupBuilderTaggerMock(histogramTaggerMock, histogramBuilderMock, histogramMock); setupBuilderTaggerMock(counterTaggerMock, MetricBuilder.COUNTERS, counterMock); setupTaggerMock(gaugeTaggerMock); setupBuilderTaggerMock(genericMetricTaggerMock, genericMetricBuilderMock, genericMetricMock);
@Test public void registerNamedMetric_registers_metric_using_sfx_mechanisms() { // given String gaugeName = UUID.randomUUID().toString(); // when Gauge<String> result = sfxImpl.registerNamedMetric(gaugeName, gaugeMock); // then verifyMetricRegistration(gaugeTaggerMock, gaugeName, gaugeMock, result); }
@DataProvider(value = { "null", "0", "1", "2" }, splitBy = "\\|") @Test public void getNamedMeter_with_iterable_dimensions_creates_dimensioned_meter_using_sfx_mechanisms( Integer numDimensions ) { // given String meterName = UUID.randomUUID().toString(); List<Pair<String, String>> iterableDims = generateIterableDimensions(numDimensions); // when Meter result = sfxImpl.getNamedMeter(meterName, iterableDims); // then verifyMetricCreation(MetricBuilder.METERS, meterTaggerMock, meterName, iterableDims, meterMock, result); }
@DataProvider(value = { "null", "0", "1", "2" }, splitBy = "\\|") @Test public void getNamedHistogram_with_varargs_dimensions_creates_dimensioned_histogram_using_sfx_mechanisms( Integer numDimensions ) { // given String histogramName = UUID.randomUUID().toString(); Pair<String, String>[] varargDims = generateVarargDimensions(numDimensions); List<Pair<String, String>> dimsAsList = (varargDims == null) ? null : Arrays.asList(varargDims); // when Histogram result = sfxImpl.getNamedHistogram(histogramName, varargDims); // then verifyMetricCreation(histogramBuilderMock, histogramTaggerMock, histogramName, dimsAsList, histogramMock, result); }
@Test public void single_arg_constructor_sets_fields_as_expected() { // when SignalFxAwareCodahaleMetricsCollector cmc = new SignalFxAwareCodahaleMetricsCollector(sfxReporterFactoryMock); // then assertThat(cmc.metricRegistry) .isNotNull() .isNotSameAs(metricRegistryMock); verify(sfxReporterFactoryMock).getReporter(cmc.metricRegistry); assertThat(cmc.metricMetadata).isSameAs(metricMetadataMock); verifyRollingWindowTimerBuilder(cmc.timerBuilder, reportingInterval, reportingTimeUnit); verifyRollingWindowHistogramBuilder(cmc.histogramBuilder, reportingInterval, reportingTimeUnit); }
private <M extends Metric, V> void verifyMetricRegistration( Tagger<Gauge<V>> taggerMock, String gaugeName, List<Pair<String, String>> dimensions, Gauge<V> expectedGauge, Gauge<V> actualGauge ) { int numDimensions = (dimensions == null) ? 0 : dimensions.size(); ArgumentCaptor<Gauge> gaugeArgumentCaptor = ArgumentCaptor.forClass(Gauge.class); verify(metricMetadataMock).forMetric(gaugeArgumentCaptor.capture()); verify(taggerMock).withMetricName(gaugeName); if (numDimensions == 0) { verify(taggerMock, never()).withDimension(anyString(), anyString()); } else { for (Pair<String, String> dimension : dimensions) { verify(taggerMock).withDimension(dimension.getKey(), dimension.getValue()); } } verify(taggerMock).register(metricRegistryMock); verifyNoMoreInteractions(metricMetadataMock, taggerMock); Gauge gaugeRegistered = gaugeArgumentCaptor.getValue(); assertThat(gaugeRegistered).isNotNull(); assertThat(gaugeRegistered).isSameAs(actualGauge); assertThat(actualGauge).isSameAs(expectedGauge); }
@DataProvider(value = { "null", "0", "1", "2" }, splitBy = "\\|") @Test public void getNamedHistogram_with_iterable_dimensions_creates_dimensioned_histogram_using_sfx_mechanisms( Integer numDimensions ) { // given String histogramName = UUID.randomUUID().toString(); List<Pair<String, String>> iterableDims = generateIterableDimensions(numDimensions); // when Histogram result = sfxImpl.getNamedHistogram(histogramName, iterableDims); // then verifyMetricCreation(histogramBuilderMock, histogramTaggerMock, histogramName, iterableDims, histogramMock, result); }
@DataProvider(value = { "null", "0", "1", "2" }, splitBy = "\\|") @Test public void getNamedCounter_with_varargs_dimensions_creates_dimensioned_counter_using_sfx_mechanisms( Integer numDimensions ) { // given String counterName = UUID.randomUUID().toString(); Pair<String, String>[] varargDims = generateVarargDimensions(numDimensions); List<Pair<String, String>> dimsAsList = (varargDims == null) ? null : Arrays.asList(varargDims); // when Counter result = sfxImpl.getNamedCounter(counterName, varargDims); // then verifyMetricCreation(MetricBuilder.COUNTERS, counterTaggerMock, counterName, dimsAsList, counterMock, result); }
@Test public void getNamedMetric_creates_metric_using_sfx_mechanisms() { // given String metricName = UUID.randomUUID().toString(); // when Metric result = sfxImpl.getNamedMetric(metricName, genericMetricBuilderMock); // then verifyMetricCreation(genericMetricBuilderMock, genericMetricTaggerMock, metricName, genericMetricMock, result); }
@DataProvider(value = { "null", "0", "1", "2" }, splitBy = "\\|") @Test public void getNamedCounter_with_iterable_dimensions_creates_dimensioned_counter_using_sfx_mechanisms( Integer numDimensions ) { // given String counterName = UUID.randomUUID().toString(); List<Pair<String, String>> iterableDims = generateIterableDimensions(numDimensions); // when Counter result = sfxImpl.getNamedCounter(counterName, iterableDims); // then verifyMetricCreation(MetricBuilder.COUNTERS, counterTaggerMock, counterName, iterableDims, counterMock, result); }
@DataProvider(value = { "null", "0", "1", "2" }, splitBy = "\\|") @Test public void getNamedTimer_with_varargs_dimensions_creates_dimensioned_timer_using_sfx_mechanisms( Integer numDimensions ) { // given String timerName = UUID.randomUUID().toString(); Pair<String, String>[] varargDims = generateVarargDimensions(numDimensions); List<Pair<String, String>> dimsAsList = (varargDims == null) ? null : Arrays.asList(varargDims); // when Timer result = sfxImpl.getNamedTimer(timerName, varargDims); // then verifyMetricCreation(timerBuilderMock, timerTaggerMock, timerName, dimsAsList, timerMock, result); }
@Test public void getNamedHistogram_creates_histogram_using_sfx_mechanisms() { // given String histogramName = UUID.randomUUID().toString(); // when Histogram result = sfxImpl.getNamedHistogram(histogramName); // then verifyMetricCreation(histogramBuilderMock, histogramTaggerMock, histogramName, histogramMock, result); }
@DataProvider(value = { "null", "0", "1", "2" }, splitBy = "\\|") @Test public void getNamedMetric_with_iterable_dimensions_creates_dimensioned_metric_using_sfx_mechanisms( Integer numDimensions ) { // given String metricName = UUID.randomUUID().toString(); List<Pair<String, String>> iterableDims = generateIterableDimensions(numDimensions); // when Metric result = sfxImpl.getNamedMetric(metricName, genericMetricBuilderMock, iterableDims); // then verifyMetricCreation(genericMetricBuilderMock, genericMetricTaggerMock, metricName, iterableDims, genericMetricMock, result); }