Notify all metric reporters when metric registry has been changed

With existing implementation, it is difficult to notify the
metric reports on metric registry changes. With this commit,
we can spontaneously notify all reporters about the metric
registry changes, so that newly added metrics can be automatically
reported to third party monitoring system.

Change-Id: I1273194553900f6bb03e2ef6bb1b54838af1da00
diff --git a/apps/graphitemetrics/src/test/java/org/onosproject/graphitemetrics/GraphiteMetricsReporterTest.java b/apps/graphitemetrics/src/test/java/org/onosproject/graphitemetrics/GraphiteMetricsReporterTest.java
index 2e22816..60c8f54 100644
--- a/apps/graphitemetrics/src/test/java/org/onosproject/graphitemetrics/GraphiteMetricsReporterTest.java
+++ b/apps/graphitemetrics/src/test/java/org/onosproject/graphitemetrics/GraphiteMetricsReporterTest.java
@@ -15,35 +15,20 @@
  */
 package org.onosproject.graphitemetrics;
 
-import com.codahale.metrics.Counter;
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.Histogram;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.Metric;
-import com.codahale.metrics.MetricFilter;
 import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.Timer;
 import com.google.common.collect.ImmutableSet;
 import org.junit.Before;
 import org.junit.Test;
-import org.onlab.metrics.MetricsComponent;
-import org.onlab.metrics.MetricsFeature;
-import org.onlab.metrics.MetricsService;
-import org.onosproject.cfg.ComponentConfigAdapter;
-import org.onosproject.core.CoreServiceAdapter;
-
-import java.util.Map;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertNotNull;
 
 /**
  * Unit test for metrics reporter of graphite.
  */
 public class GraphiteMetricsReporterTest {
 
-    private GraphiteMetricsReporter gmr;
+    private DefaultGraphiteMetricsReporter gmr;
 
     private static final String METRIC_NAME1 = "consistentMap.onos-app-ids.putIfAbsent";
     private static final String METRIC_NAME2 = "consistentMap.onos-hosts.entrySet";
@@ -60,11 +45,7 @@
      */
     @Before
     public void setUp() {
-        gmr = new GraphiteMetricsReporter();
-        gmr.coreService = new CoreServiceAdapter();
-        gmr.cfgService = new ComponentConfigAdapter();
-        gmr.metricsService = new TestMetricsService();
-        gmr.activate();
+        gmr = new DefaultGraphiteMetricsReporter();
     }
 
     /**
@@ -135,116 +116,4 @@
                 .containsAll(ImmutableSet.of(METRIC_NAME1, METRIC_NAME2,
                         METRIC_NAME3, METRIC_NAME4)));
     }
-
-    /**
-     * Tests whether the methods of MetricsService receives null value parameter.
-     */
-    private class TestMetricsService implements MetricsService {
-
-        @Override
-        public MetricsComponent registerComponent(String name) {
-            assertNotNull("Component name is null.", name);
-            return null;
-        }
-
-        @Override
-        public MetricRegistry getMetricRegistry() {
-            return null;
-        }
-
-        @Override
-        public Counter createCounter(MetricsComponent component,
-                                     MetricsFeature feature, String metricName) {
-            assertNotNull("MetricsComponent is null.", component);
-            assertNotNull("MetricsFeature is null.", feature);
-            assertNotNull("Metric name is null.", metricName);
-            return null;
-        }
-
-        @Override
-        public Histogram createHistogram(MetricsComponent component,
-                                         MetricsFeature feature, String metricName) {
-            assertNotNull("MetricsComponent is null.", component);
-            assertNotNull("MetricsFeature is null.", feature);
-            assertNotNull("Metric name is null.", metricName);
-            return null;
-        }
-
-        @Override
-        public Timer createTimer(MetricsComponent component,
-                                 MetricsFeature feature, String metricName) {
-            assertNotNull("MetricsComponent is null.", component);
-            assertNotNull("MetricsFeature is null.", feature);
-            assertNotNull("Metric name is null.", metricName);
-            return null;
-        }
-
-        @Override
-        public Meter createMeter(MetricsComponent component,
-                                 MetricsFeature feature, String metricName) {
-            assertNotNull("MetricsComponent is null.", component);
-            assertNotNull("MetricsFeature is null.", feature);
-            assertNotNull("Metric name is null.", metricName);
-            return null;
-        }
-
-        @Override
-        public <T extends Metric> T registerMetric(MetricsComponent component,
-                                                   MetricsFeature feature, String metricName, T metric) {
-            assertNotNull("MetricsComponent is null.", component);
-            assertNotNull("MetricsFeature is null.", feature);
-            assertNotNull("Metric name is null.", metricName);
-            assertNotNull("Metric is null.", metric);
-            return null;
-        }
-
-        @Override
-        public boolean removeMetric(MetricsComponent component,
-                                    MetricsFeature feature, String metricName) {
-            assertNotNull("MetricsComponent is null.", component);
-            assertNotNull("MetricsFeature is null.", feature);
-            assertNotNull("Metric name is null.", metricName);
-            return false;
-        }
-
-        @Override
-        public Map<String, Timer> getTimers(MetricFilter filter) {
-            assertNotNull("MetricFilter is null.", filter);
-            return null;
-        }
-
-        @Override
-        public Map<String, Gauge> getGauges(MetricFilter filter) {
-            assertNotNull("MetricFilter is null.", filter);
-            return null;
-        }
-
-        @Override
-        public Map<String, Counter> getCounters(MetricFilter filter) {
-            assertNotNull("MetricFilter is null.", filter);
-            return null;
-        }
-
-        @Override
-        public Map<String, Meter> getMeters(MetricFilter filter) {
-            assertNotNull("MetricFilter is null.", filter);
-            return null;
-        }
-
-        @Override
-        public Map<String, Histogram> getHistograms(MetricFilter filter) {
-            assertNotNull("MetricFilter is null.", filter);
-            return null;
-        }
-
-        @Override
-        public Map<String, Metric> getMetrics() {
-            return null;
-        }
-
-        @Override
-        public void removeMatching(MetricFilter filter) {
-            assertNotNull("MetricFilter is null.", filter);
-        }
-    }
 }