@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); }
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 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); } }