@Test public void testGetInstance() throws Exception { MetricsReplicationSource rms = CompatibilitySingletonFactory .getInstance(MetricsReplicationSource.class); assertTrue(rms instanceof MetricsReplicationSourceImpl); }
@Test public void testMetricsSourceBaseSourcePassthrough(){ /* The replication MetricsSource wraps a MetricsReplicationSourceSourceImpl and a MetricsReplicationGlobalSourceSource, so that metrics get written to both namespaces. Both of those classes wrap a MetricsReplicationSourceImpl that implements BaseSource, which allows for custom JMX metrics. This test checks to make sure the BaseSource decorator logic on MetricsSource actually calls down through the two layers of wrapping to the actual BaseSource. */ String id = "id"; DynamicMetricsRegistry mockRegistry = mock(DynamicMetricsRegistry.class); MetricsReplicationSourceImpl singleRms = mock(MetricsReplicationSourceImpl.class); when(singleRms.getMetricsRegistry()).thenReturn(mockRegistry); MetricsReplicationSourceImpl globalRms = mock(MetricsReplicationSourceImpl.class); when(globalRms.getMetricsRegistry()).thenReturn(mockRegistry); MetricsReplicationSourceSource singleSourceSource = new MetricsReplicationSourceSourceImpl(singleRms, id); MetricsReplicationSourceSource globalSourceSource = new MetricsReplicationGlobalSourceSource(globalRms); MetricsSource source = new MetricsSource(id, singleSourceSource, globalSourceSource); String gaugeName = "gauge"; String singleGaugeName = "source.id." + gaugeName; String globalGaugeName = "source." + gaugeName; long delta = 1; String counterName = "counter"; String singleCounterName = "source.id." + counterName; String globalCounterName = "source." + counterName; long count = 2; source.decGauge(gaugeName, delta); source.getMetricsContext(); source.getMetricsDescription(); source.getMetricsJmxContext(); source.getMetricsName(); source.incCounters(counterName, count); source.incGauge(gaugeName, delta); source.init(); source.removeMetric(gaugeName); source.setGauge(gaugeName, delta); source.updateHistogram(counterName, count); verify(singleRms).decGauge(singleGaugeName, delta); verify(globalRms).decGauge(globalGaugeName, delta); verify(globalRms).getMetricsContext(); verify(globalRms).getMetricsJmxContext(); verify(globalRms).getMetricsName(); verify(singleRms).incCounters(singleCounterName, count); verify(globalRms).incCounters(globalCounterName, count); verify(singleRms).incGauge(singleGaugeName, delta); verify(globalRms).incGauge(globalGaugeName, delta); verify(globalRms).init(); verify(singleRms).removeMetric(singleGaugeName); verify(globalRms).removeMetric(globalGaugeName); verify(singleRms).setGauge(singleGaugeName, delta); verify(globalRms).setGauge(globalGaugeName, delta); verify(singleRms).updateHistogram(singleCounterName, count); verify(globalRms).updateHistogram(globalCounterName, count); }