diff --git hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/source/TestJvmMetrics.java hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/source/TestJvmMetrics.java index aa1b009..6b3eae7 100644 --- hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/source/TestJvmMetrics.java +++ hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/source/TestJvmMetrics.java @@ -200,4 +200,14 @@ public void alert(GcTimeMonitor.GcData gcData) { Assert.assertTrue(alerter.numAlerts > 0); Assert.assertTrue(alerter.maxGcTimePercentage >= alertGcPerc); } + + @Test + public void testJvmMetricsSingleton() { + JvmMetrics jvmMetrics1 = org.apache.hadoop.metrics2.source.JvmMetrics + .initSingleton("test", null); + JvmMetrics jvmMetrics2 = org.apache.hadoop.metrics2.source.JvmMetrics + .initSingleton("test", null); + Assert.assertTrue("initSingleton should return the singleton instance", + jvmMetrics1.equals(jvmMetrics2)); + } } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/metrics/NodeManagerMetrics.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/metrics/NodeManagerMetrics.java index 1e7149b..f98b3f1 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/metrics/NodeManagerMetrics.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/metrics/NodeManagerMetrics.java @@ -99,7 +99,7 @@ private long availableMB; private long allocatedOpportunisticMB; - public NodeManagerMetrics(JvmMetrics jvmMetrics) { + private NodeManagerMetrics(JvmMetrics jvmMetrics) { this.jvmMetrics = jvmMetrics; } @@ -107,8 +107,8 @@ public static NodeManagerMetrics create() { return create(DefaultMetricsSystem.instance()); } - static NodeManagerMetrics create(MetricsSystem ms) { - JvmMetrics jm = JvmMetrics.create("NodeManager", null, ms); + private static NodeManagerMetrics create(MetricsSystem ms) { + JvmMetrics jm = JvmMetrics.initSingleton("NodeManager", null); return ms.register(new NodeManagerMetrics(jm)); } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/metrics/TestNodeManagerMetrics.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/metrics/TestNodeManagerMetrics.java index 5dead91..d21e7ad 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/metrics/TestNodeManagerMetrics.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/metrics/TestNodeManagerMetrics.java @@ -19,19 +19,40 @@ import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem; import org.apache.hadoop.metrics2.MetricsRecordBuilder; +import org.apache.hadoop.metrics2.source.JvmMetrics; import static org.apache.hadoop.test.MetricsAsserts.*; import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.util.Records; +import org.junit.After; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; public class TestNodeManagerMetrics { static final int GiB = 1024; // MiB - @Test public void testNames() { + private NodeManagerMetrics metrics; + + @Before + public void setup() { DefaultMetricsSystem.initialize("NodeManager"); - NodeManagerMetrics metrics = NodeManagerMetrics.create(); + metrics = NodeManagerMetrics.create(); + } + + @After + public void tearDown() { + DefaultMetricsSystem.shutdown(); + } + + @Test + public void testReferenceOfSingletonJvmMetrics() { + JvmMetrics jvmMetrics = JvmMetrics.initSingleton("NodeManagerModule", null); + Assert.assertEquals("NodeManagerMetrics should reference the singleton" + + " JvmMetrics instance", jvmMetrics, metrics.getJvmMetrics()); + } + + @Test public void testNames() { Resource total = Records.newRecord(Resource.class); total.setMemorySize(8*GiB); total.setVirtualCores(16);