You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2013/12/16 14:28:43 UTC

[05/12] AMBARI-4072. Remove extraneous jmx and ganglia files (ncole)

http://git-wip-us.apache.org/repos/asf/ambari/blob/eb80c2b7/ambari-server/src/main/resources/stacks/HDP/2.0._/services/HDFS/metrics.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0._/services/HDFS/metrics.json b/ambari-server/src/main/resources/stacks/HDP/2.0._/services/HDFS/metrics.json
index 2e70925..f33a0c0 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0._/services/HDFS/metrics.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0._/services/HDFS/metrics.json
@@ -740,7 +740,7 @@
             "temporal": false
           },
           "metrics/jvm/memMaxM":{
-            "metric" : "Hadoop:service=NameNode,name=JvmMetrics.MemMaxM",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemMaxM",
             "pointInTime" : true,
             "temporal" : false
           },
@@ -820,7 +820,7 @@
             "temporal": false
           },
           "metrics/jvm/memNonHeapUsedM": {
-            "metric": "Hadoop:service=NameNode,name=jvm.memNonHeapUsedM",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemNonHeapUsedM",
             "pointInTime": true,
             "temporal": false
           },
@@ -855,7 +855,7 @@
             "temporal": false
           },
           "metrics/jvm/threadsBlocked": {
-            "metric": "Hadoop:service=NameNode,name=jvm.threadsBlocked",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsBlocked",
             "pointInTime": true,
             "temporal": false
           },
@@ -940,7 +940,7 @@
             "temporal": false
           },
           "metrics/jvm/memNonHeapCommittedM": {
-            "metric": "Hadoop:service=NameNode,name=jvm.memNonHeapCommittedM",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemNonHeapCommittedM",
             "pointInTime": true,
             "temporal": false
           },
@@ -1050,7 +1050,7 @@
             "temporal": false
           },
           "metrics/jvm/memHeapCommittedM": {
-            "metric": "Hadoop:service=NameNode,name=jvm.memHeapCommittedM",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemHeapCommittedM",
             "pointInTime": true,
             "temporal": false
           },
@@ -1060,7 +1060,7 @@
             "temporal": false
           },
           "metrics/jvm/threadsRunnable": {
-            "metric": "Hadoop:service=NameNode,name=jvm.threadsRunnable",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsRunnable",
             "pointInTime": true,
             "temporal": false
           },
@@ -1085,7 +1085,7 @@
             "temporal": false
           },
           "metrics/jvm/threadsNew": {
-            "metric": "Hadoop:service=NameNode,name=jvm.threadsNew",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsNew",
             "pointInTime": true,
             "temporal": false
           },
@@ -1150,7 +1150,7 @@
             "temporal": false
           },
           "metrics/jvm/logWarn": {
-            "metric": "Hadoop:service=NameNode,name=jvm.logWarn",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogWarn",
             "pointInTime": true,
             "temporal": false
           },
@@ -1160,12 +1160,12 @@
             "temporal": false
           },
           "metrics/jvm/threadsTimedWaiting": {
-            "metric": "Hadoop:service=NameNode,name=jvm.threadsTimedWaiting",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsTimedWaiting",
             "pointInTime": true,
             "temporal": false
           },
           "metrics/jvm/gcCount": {
-            "metric": "Hadoop:service=NameNode,name=jvm.gcCount",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.GcCount",
             "pointInTime": true,
             "temporal": false
           },
@@ -1200,7 +1200,7 @@
             "temporal": false
           },
           "metrics/jvm/memHeapUsedM": {
-            "metric": "Hadoop:service=NameNode,name=jvm.memHeapUsedM",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemHeapUsedM",
             "pointInTime": true,
             "temporal": false
           },
@@ -1210,7 +1210,7 @@
             "temporal": false
           },
           "metrics/jvm/threadsWaiting": {
-            "metric": "Hadoop:service=NameNode,name=jvm.threadsWaiting",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsWaiting",
             "pointInTime": true,
             "temporal": false
           },
@@ -1220,7 +1220,7 @@
             "temporal": false
           },
           "metrics/jvm/gcTimeMillis": {
-            "metric": "Hadoop:service=NameNode,name=jvm.gcTimeMillis",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.GcTimeMillis",
             "pointInTime": true,
             "temporal": false
           },
@@ -1245,7 +1245,7 @@
             "temporal": false
           },
           "metrics/jvm/threadsTerminated": {
-            "metric": "Hadoop:service=NameNode,name=jvm.threadsTerminated",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.ThreadsTerminated",
             "pointInTime": true,
             "temporal": false
           },
@@ -1290,7 +1290,7 @@
             "temporal": false
           },
           "metrics/jvm/logInfo": {
-            "metric": "Hadoop:service=NameNode,name=jvm.logInfo",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogInfo",
             "pointInTime": true,
             "temporal": false
           },
@@ -1340,7 +1340,7 @@
             "temporal": false
           },
           "metrics/jvm/logError": {
-            "metric": "Hadoop:service=NameNode,name=jvm.logError",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogError",
             "pointInTime": true,
             "temporal": false
           },
@@ -1370,7 +1370,7 @@
             "temporal": false
           },
           "metrics/jvm/logFatal": {
-            "metric": "Hadoop:service=NameNode,name=jvm.logFatal",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.LogFatal",
             "pointInTime": true,
             "temporal": false
           },
@@ -2137,7 +2137,7 @@
             "temporal": false
           },
           "metrics/jvm/memMaxM":{
-            "metric" : "Hadoop:service=NameNode,name=JvmMetrics.MemMaxM",
+            "metric": "Hadoop:service=NameNode,name=JvmMetrics.MemMaxM",
             "pointInTime" : true,
             "temporal" : false
           },

http://git-wip-us.apache.org/repos/asf/ambari/blob/eb80c2b7/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java
index fe95d06..ec4a0e2 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaPropertyProviderTest.java
@@ -17,6 +17,19 @@
  */
 package org.apache.ambari.server.controller.ganglia;
 
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.expect;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import org.apache.ambari.server.configuration.ComponentSSLConfiguration;
 import org.apache.ambari.server.configuration.ComponentSSLConfigurationTest;
 import org.apache.ambari.server.controller.internal.PropertyInfo;
@@ -27,7 +40,6 @@ import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.SystemException;
 import org.apache.ambari.server.controller.spi.TemporalInfo;
 import org.apache.ambari.server.controller.utilities.PropertyHelper;
-import org.apache.ambari.server.controller.utilities.PropertyHelper.MetricsVersion;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.Predicate;
 import org.apache.http.NameValuePair;
@@ -36,23 +48,9 @@ import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.anyObject;
 import org.powermock.api.easymock.PowerMock;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 /**
  * Test the Ganglia property provider.
  */
@@ -71,8 +69,7 @@ public class GangliaPropertyProviderTest {
   private static final String HOST_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("HostRoles", "host_name");
   private static final String COMPONENT_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("HostRoles", "component_name");
   
-  private static final String RM_CATEGORY_1 = "metrics/yarn/Queue/root/default";
-  private static final String RM_AVAILABLE_MEMORY_PROPERTY = PropertyHelper.getPropertyId(RM_CATEGORY_1, "AvailableMB");
+
   
   private ComponentSSLConfiguration configuration;
 
@@ -103,7 +100,7 @@ public class GangliaPropertyProviderTest {
     TestStreamProvider streamProvider  = new TestStreamProvider("temporal_ganglia_data.txt");
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
-    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1);
+    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent);
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
         gangliaPropertyIds,
         streamProvider,
@@ -209,7 +206,7 @@ public class GangliaPropertyProviderTest {
         "isGangliaCollectorHostLive", "isGangliaCollectorComponentLive");
 
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),
         streamProvider,
         configuration,
         hostProvider,
@@ -250,7 +247,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.Host, PropertyHelper.MetricsVersion.HDP1),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.Host),
         streamProvider,
         configuration,
         hostProvider,
@@ -309,7 +306,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.Host, PropertyHelper.MetricsVersion.HDP1),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.Host),
         streamProvider,
         configuration,
         hostProvider,
@@ -362,59 +359,12 @@ public class GangliaPropertyProviderTest {
     Assert.assertTrue(isUrlParamsEquals(actualUri, expectedUri));
   }
   
-  class PopulateResourceManagerResourcesTest{
-    public void testProperty(String property, String jmxMetricName) throws SystemException{
-      TestStreamProvider streamProvider  = new TestStreamProvider("yarn_ganglia_data.txt");
-      TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
-
-      GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-          PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP2),
-          streamProvider,
-          configuration,
-          hostProvider,
-          CLUSTER_NAME_PROPERTY_ID,
-          HOST_NAME_PROPERTY_ID,
-          COMPONENT_NAME_PROPERTY_ID);
-
-      // flume
-      Resource resource = new ResourceImpl(Resource.Type.HostComponent);
-
-      resource.setProperty(HOST_NAME_PROPERTY_ID, "ip-10-39-113-33.ec2.internal");
-      resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "RESOURCEMANAGER");
-
-      // only ask for one property
-      Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
-      temporalInfoMap.put(property, new TemporalInfoImpl(10L, 20L, 1L));
-      Request  request = PropertyHelper.getReadRequest(Collections.singleton(property), temporalInfoMap);
-
-      Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
-
-      String expected = (configuration.isGangliaSSL() ? "https" : "http") +
-          String.format("://domU-12-31-39-0E-34-E1.compute-1.internal/cgi-bin/rrd.py?c=HDPResourceManager&h=ip-10-39-113-33.ec2.internal&m=%s&s=10&e=20&r=1",jmxMetricName);
-      Assert.assertEquals(expected, streamProvider.getLastSpec());
-
-      Assert.assertEquals(3, PropertyHelper.getProperties(resource).size());
-      Assert.assertNotNull(resource.getPropertyValue(property));
-    }
-  }
-  
-  @Test
-  public void testPopulateResources_resourcemanager_clustermetrics() throws Exception {
-	  PopulateResourceManagerResourcesTest tester = new PopulateResourceManagerResourcesTest();
-	  tester.testProperty("metrics/yarn/ClusterMetrics/NumActiveNMs","yarn.ClusterMetrics.NumActiveNMs");
-	  tester.testProperty("metrics/yarn/ClusterMetrics/NumDecommissionedNMs","yarn.ClusterMetrics.NumDecommissionedNMs");
-	  tester.testProperty("metrics/yarn/ClusterMetrics/NumLostNMs", "yarn.ClusterMetrics.NumLostNMs");
-	  tester.testProperty("metrics/yarn/ClusterMetrics/NumUnhealthyNMs", "yarn.ClusterMetrics.NumUnhealthyNMs");
-	  tester.testProperty("metrics/yarn/ClusterMetrics/NumRebootedNMs", "yarn.ClusterMetrics.NumRebootedNMs");
-  }
-
-
   @Test
   public void testPopulateResources_params() throws Exception {
     TestStreamProvider streamProvider  = new TestStreamProvider("flume_ganglia_data.txt");
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
-    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1);
+    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent);
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
         gangliaPropertyIds,
         streamProvider,
@@ -472,7 +422,7 @@ public class GangliaPropertyProviderTest {
     TestStreamProvider streamProvider  = new TestStreamProvider("flume_ganglia_data.txt");
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
-    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1);
+    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent);
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
         gangliaPropertyIds,
         streamProvider,
@@ -536,7 +486,7 @@ public class GangliaPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),
         streamProvider,
         configuration,
         hostProvider,
@@ -568,7 +518,7 @@ public class GangliaPropertyProviderTest {
     TestStreamProvider streamProvider  = new TestStreamProvider("flume_ganglia_data.txt");
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
-    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1);
+    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent);
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
         gangliaPropertyIds,
         streamProvider,
@@ -626,7 +576,7 @@ public class GangliaPropertyProviderTest {
     TestStreamProvider streamProvider  = new TestStreamProvider("flume_ganglia_data.txt");
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
-    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1);
+    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent);
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
         gangliaPropertyIds,
         streamProvider,
@@ -684,7 +634,7 @@ public class GangliaPropertyProviderTest {
     TestStreamProvider streamProvider  = new TestStreamProvider("flume_ganglia_data.txt");
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
-    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1);
+    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent);
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
         gangliaPropertyIds,
         streamProvider,
@@ -743,7 +693,7 @@ public class GangliaPropertyProviderTest {
     TestStreamProvider streamProvider  = new TestStreamProvider("flume_ganglia_data.txt");
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
-    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP1);
+    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent);
     GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
         gangliaPropertyIds,
         streamProvider,
@@ -797,171 +747,9 @@ public class GangliaPropertyProviderTest {
     Assert.assertNotNull(resource.getPropertyValue(FLUME_CHANNEL_CAPACITY_PROPERTY));
   }
   
-  @Test
-  public void testPopulateResources_params_category5() throws Exception {
-    TestStreamProvider streamProvider  = new TestStreamProvider("temporal_ganglia_data_yarn_queues.txt");
-    TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
-    Map<String, Map<String, PropertyInfo>> gangliaPropertyIds = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP2);
-    GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        gangliaPropertyIds,
-        streamProvider,
-        configuration,
-        hostProvider,
-        CLUSTER_NAME_PROPERTY_ID,
-        HOST_NAME_PROPERTY_ID,
-        COMPONENT_NAME_PROPERTY_ID);
-    
-    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
 
-    resource.setProperty(HOST_NAME_PROPERTY_ID, "dev01.ambari.apache.org");
-    resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "RESOURCEMANAGER");
-
-    // only ask for one property
-    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
-    temporalInfoMap.put(RM_CATEGORY_1, new TemporalInfoImpl(10L, 20L, 1L));
-    
-    Request  request = PropertyHelper.getReadRequest(Collections.singleton(RM_CATEGORY_1), temporalInfoMap);
-
-    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
-    
-    List<String> metricsRegexes = new ArrayList<String>();
-    
-    metricsRegexes.add("metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/");
 
-    String metricsList = getMetricsRegexes(metricsRegexes, gangliaPropertyIds, "RESOURCEMANAGER");
-    
-    URIBuilder expectedUri = new URIBuilder();
-
-    expectedUri.setScheme((configuration.isGangliaSSL() ? "https" : "http"));
-    expectedUri.setHost("domU-12-31-39-0E-34-E1.compute-1.internal");
-    expectedUri.setPath("/cgi-bin/rrd.py");
-    expectedUri.setParameter("c", "HDPResourceManager");
-    expectedUri.setParameter("h", "dev01.ambari.apache.org");
-    expectedUri.setParameter("m", metricsList);
-    expectedUri.setParameter("s", "10");
-    expectedUri.setParameter("e", "20");
-    expectedUri.setParameter("r", "1");
-    
-    URIBuilder actualUri = new URIBuilder(streamProvider.getLastSpec());
-
-    Assert.assertEquals(expectedUri.getScheme(), actualUri.getScheme());
-    Assert.assertEquals(expectedUri.getHost(), actualUri.getHost());
-    Assert.assertEquals(expectedUri.getPath(), actualUri.getPath());
-    
-    Assert.assertTrue(isUrlParamsEquals(actualUri, expectedUri));    
-    
-    
-    Assert.assertTrue(PropertyHelper.getProperties(resource).size() > 2);
-    Assert.assertNotNull(resource.getPropertyValue(RM_AVAILABLE_MEMORY_PROPERTY));
-  }
-
-  @Test
-  public void testPopulateResources_journalNode() throws Exception {
-    TestStreamProvider streamProvider = new TestStreamProvider("journalnode_ganglia_data.txt");
-    TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
-
-    GangliaPropertyProvider propertyProvider = new GangliaHostComponentPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, MetricsVersion.HDP2),
-        streamProvider,
-        configuration,
-        hostProvider,
-        CLUSTER_NAME_PROPERTY_ID,
-        HOST_NAME_PROPERTY_ID,
-        COMPONENT_NAME_PROPERTY_ID);
-
-    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
-
-    resource.setProperty(HOST_NAME_PROPERTY_ID, "ip-10-39-113-33.ec2.internal");
-    resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "JOURNALNODE");
-
-
-    Object[][] testData = {
-      {"metrics", "boottime", 1378290058.0},
-      {"metrics/cpu", "cpu_aidle", 0.0},
-      {"metrics/cpu", "cpu_idle", 88.2},
-      {"metrics/cpu", "cpu_nice", 0.0},
-      {"metrics/cpu", "cpu_num", 2.0},
-      {"metrics/cpu", "cpu_speed", 3583.0},
-      {"metrics/cpu", "cpu_system", 8.4},
-      {"metrics/cpu", "cpu_user", 3.3},
-      {"metrics/cpu", "cpu_wio", 0.1},
-      {"metrics/disk", "disk_free", 92.428},
-      {"metrics/disk", "disk_total", 101.515},
-      {"metrics/disk", "part_max_used", 12.8},
-      {"metrics/load", "load_fifteen", 0.026},
-      {"metrics/load", "load_five", 0.114},
-      {"metrics/load", "load_one", 0.226},
-      {"metrics/memory", "mem_buffers", 129384.0},
-      {"metrics/memory", "mem_cached", 589576.0},
-      {"metrics/memory", "mem_free", 1365496.0},
-      {"metrics/memory", "mem_shared", 0.0},
-      {"metrics/memory", "mem_total", 4055144.0},
-      {"metrics/memory", "swap_free", 4128760.0},
-      {"metrics/memory", "swap_total", 4128760.0},
-      {"metrics/network", "bytes_in", 22547.48},
-      {"metrics/network", "bytes_out", 5772.33},
-      {"metrics/network", "pkts_in", 24.0},
-      {"metrics/network", "pkts_out", 35.4},
-      {"metrics/process", "proc_run", 4.0},
-      {"metrics/process", "proc_total", 657.0},
-      {"metrics/dfs/journalNode", "batchesWritten", 0.0},
-      {"metrics/dfs/journalNode", "batchesWrittenWhileLagging", 0.0},
-      {"metrics/dfs/journalNode", "bytesWritten", 0.0},
-      {"metrics/dfs/journalNode", "currentLagTxns", 0.0},
-      {"metrics/dfs/journalNode", "lastPromisedEpoch", 5.0},
-      {"metrics/dfs/journalNode", "lastWriterEpoch", 5.0},
-      {"metrics/dfs/journalNode", "lastWrittenTxId", 613.0},
-      {"metrics/dfs/journalNode", "syncs60s50thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs60s75thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs60s90thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs60s95thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs60s99thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs60s_num_ops", 0.0},
-      {"metrics/dfs/journalNode", "syncs300s50thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs300s75thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs300s90thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs300s95thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs300s99thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs300s_num_ops", 0.0},
-      {"metrics/dfs/journalNode", "syncs3600s50thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs3600s75thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs3600s90thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs3600s95thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs3600s99thPercentileLatencyMicros", 0.0},
-      {"metrics/dfs/journalNode", "syncs3600s_num_ops", 0.0},
-      {"metrics/dfs/journalNode", "txnsWritten", 0.0}
-    };
-
-    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
-    Set<String> properties = new LinkedHashSet<String>();
-
-    for (Object[] row : testData) {
-      properties.add(PropertyHelper.getPropertyId(row[0].toString(), row[1].toString()));
-    }
-
-    Request request = PropertyHelper.getReadRequest(properties, temporalInfoMap);
-
-    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
-
-    Map<String, Object> p = PropertyHelper.getProperties(resource);
-
-    for (String key : p.keySet()) {
-      if (!properties.contains(key)) {
-        System.out.printf(key);
-      }
-    }
-
-
-
-
-    Assert.assertEquals(properties.size() + 2, PropertyHelper.getProperties(resource).size());
-
-    int i = 0;
-    for (String property : properties) {
-      Assert.assertEquals(testData[i++][2], resource.getPropertyValue(property));
-    }
-  }
   
   private boolean isUrlParamsEquals(URIBuilder actualUri, URIBuilder expectedUri) {
     for (final NameValuePair expectedParam : expectedUri.getQueryParams()) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/eb80c2b7/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java
index 5b13e31..1ae17b3 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/ganglia/GangliaReportPropertyProviderTest.java
@@ -77,7 +77,7 @@ public class GangliaReportPropertyProviderTest {
     TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
 
     GangliaReportPropertyProvider propertyProvider = new GangliaReportPropertyProvider(
-        PropertyHelper.getGangliaPropertyIds(Resource.Type.Cluster, PropertyHelper.MetricsVersion.HDP1),
+        PropertyHelper.getGangliaPropertyIds(Resource.Type.Cluster),
         streamProvider,
         configuration,
         hostProvider,

http://git-wip-us.apache.org/repos/asf/ambari/blob/eb80c2b7/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java
index 02ce79e..ff2d0d2 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractPropertyProviderTest.java
@@ -37,14 +37,14 @@ public class AbstractPropertyProviderTest {
 
   @Test
   public void testGetComponentMetrics() {
-    Map<String, Map<String, PropertyInfo>> componentMetrics = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1);
+    Map<String, Map<String, PropertyInfo>> componentMetrics = PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent);
     AbstractPropertyProvider provider = new TestPropertyProvider(componentMetrics);
     Assert.assertEquals(componentMetrics, provider.getComponentMetrics());
   }
 
   @Test
   public void testGetPropertyInfoMap() {
-    AbstractPropertyProvider provider = new TestPropertyProvider(PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent, PropertyHelper.MetricsVersion.HDP1));
+    AbstractPropertyProvider provider = new TestPropertyProvider(PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent));
 
     // specific property
     Map<String, PropertyInfo> propertyInfoMap = provider.getPropertyInfoMap("NAMENODE", "metrics/cpu/cpu_aidle");
@@ -92,8 +92,7 @@ public class AbstractPropertyProviderTest {
   @Test
   public void testUpdateComponentMetricMapHDP1() {
     Map<String, Map<String, PropertyInfo>> componentMetrics =
-      PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent,
-      PropertyHelper.MetricsVersion.HDP1);
+      PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent);
 
     AbstractPropertyProvider provider = new TestPropertyProvider(componentMetrics);
 
@@ -116,36 +115,8 @@ public class AbstractPropertyProviderTest {
       flumeMetrics.get(specificMetric).getPropertyId());
   }
 
-  @Test
-  public void testUpdateComponentMetricMapHDP2() {
-    Map<String, Map<String, PropertyInfo>> componentMetrics =
-      PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent,
-      PropertyHelper.MetricsVersion.HDP2);
-
-    AbstractPropertyProvider provider = new TestPropertyProvider(componentMetrics);
-
-    Map<String, PropertyInfo> resourceManagerMetrics = provider.getComponentMetrics().get(
-      "RESOURCEMANAGER");
-
-    int metricsBefore = resourceManagerMetrics.size();
-    String specificMetric =
-      "metrics/yarn/Queue/specificQueue1/specificQueue2/AvailableMB";
-    String specificPropertyInfoId =
-      "yarn.QueueMetrics.Queue=specificQueue1.specificQueue2.AvailableMB";
-    Map<String, PropertyInfo> componentMetricMap =
-      provider.getComponentMetrics().get("RESOURCEMANAGER");
-
-    Assert.assertNull(resourceManagerMetrics.get(specificMetric));
-
-    provider.updateComponentMetricMap(componentMetricMap, specificMetric);
-
-    Assert.assertEquals(metricsBefore + 1, resourceManagerMetrics.size());
-    Assert.assertNotNull(resourceManagerMetrics.get(specificMetric));
-    Assert.assertEquals(specificPropertyInfoId,
-      resourceManagerMetrics.get(specificMetric).getPropertyId());
-  }
 
-  static class TestPropertyProvider extends AbstractPropertyProvider {
+  private static class TestPropertyProvider extends AbstractPropertyProvider {
 
     public TestPropertyProvider(Map<String, Map<String, PropertyInfo>> componentMetrics) {
       super(componentMetrics);

http://git-wip-us.apache.org/repos/asf/ambari/blob/eb80c2b7/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractProviderModuleTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractProviderModuleTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractProviderModuleTest.java
deleted file mode 100644
index 36410c9..0000000
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AbstractProviderModuleTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package org.apache.ambari.server.controller.internal;
-
-import org.apache.ambari.server.controller.spi.NoSuchParentResourceException;
-import org.apache.ambari.server.controller.spi.NoSuchResourceException;
-import org.apache.ambari.server.controller.spi.Predicate;
-import org.apache.ambari.server.controller.spi.Request;
-import org.apache.ambari.server.controller.spi.RequestStatus;
-import org.apache.ambari.server.controller.spi.Resource;
-import org.apache.ambari.server.controller.spi.ResourceAlreadyExistsException;
-import org.apache.ambari.server.controller.spi.ResourceProvider;
-import org.apache.ambari.server.controller.spi.SystemException;
-import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
-import org.apache.ambari.server.controller.utilities.PropertyHelper;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * AbstractProviderModule tests.
- */
-public class AbstractProviderModuleTest {
-  @Test
-  public void testGetMetricsVersion() throws Exception {
-
-    TestAbstractProviderModule module = new TestAbstractProviderModule("HDP-1.0");
-    PropertyHelper.MetricsVersion version = module.getMetricsVersion("c1");
-    Assert.assertEquals(PropertyHelper.MetricsVersion.HDP1, version);
-    version = module.getMetricsVersion("c2");
-    Assert.assertNull(version);
-
-    module = new TestAbstractProviderModule("HDPLocal-1.3.2");
-    version = module.getMetricsVersion("c1");
-    Assert.assertEquals(PropertyHelper.MetricsVersion.HDP1, version);
-
-    module = new TestAbstractProviderModule("HDP-2.0.1");
-    version = module.getMetricsVersion("c1");
-    Assert.assertEquals(PropertyHelper.MetricsVersion.HDP2, version);
-
-    module = new TestAbstractProviderModule("HDP-2.0.1.x");
-    version = module.getMetricsVersion("c1");
-    Assert.assertEquals(PropertyHelper.MetricsVersion.HDP2, version);
-
-    module = new TestAbstractProviderModule("HDP-9.9.9");
-    version = module.getMetricsVersion("c1");
-    Assert.assertEquals(PropertyHelper.MetricsVersion.HDP2, version);
-
-    module = new TestAbstractProviderModule("HDPLocal-2.0.0");
-    version = module.getMetricsVersion("c1");
-    Assert.assertEquals(PropertyHelper.MetricsVersion.HDP2, version);
-  }
-
-  private static class TestAbstractProviderModule extends AbstractProviderModule {
-    private final String clusterVersion;
-
-    private TestAbstractProviderModule(String clusterVersion) {
-      this.clusterVersion = clusterVersion;
-    }
-
-    @Override
-    protected ResourceProvider createResourceProvider(Resource.Type type) {
-      return new TestResourceProvider(type, clusterVersion);
-    }
-  }
-
-  private static class TestResourceProvider implements ResourceProvider {
-    private final Resource.Type type;
-    private final String clusterVersion;
-
-    private TestResourceProvider(Resource.Type type, String clusterVersion) {
-      this.type = type;
-      this.clusterVersion = clusterVersion;
-    }
-
-    @Override
-    public RequestStatus createResources(Request request)
-        throws SystemException, UnsupportedPropertyException,
-        ResourceAlreadyExistsException, NoSuchParentResourceException {
-      return null;
-    }
-
-    @Override
-    public Set<Resource> getResources(Request request, Predicate predicate)
-        throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
-
-      if (type == Resource.Type.Cluster) {
-        Resource cluster = new ResourceImpl(Resource.Type.Cluster);
-        cluster.setProperty(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID, 1);
-        cluster.setProperty(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID, "c1");
-        cluster.setProperty(ClusterResourceProvider.CLUSTER_VERSION_PROPERTY_ID, clusterVersion);
-
-        return Collections.singleton(cluster);
-      }
-      return Collections.emptySet();
-    }
-
-    @Override
-    public RequestStatus updateResources(Request request, Predicate predicate)
-        throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
-      return null;
-    }
-
-    @Override
-    public RequestStatus deleteResources(Predicate predicate)
-        throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
-      return null;
-    }
-
-    @Override
-    public Map<Resource.Type, String> getKeyPropertyIds() {
-      return null;
-    }
-
-    @Override
-    public Set<String> checkPropertyIds(Set<String> propertyIds) {
-      return null;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/eb80c2b7/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java
index 451e34f..607fc6f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java
@@ -19,12 +19,19 @@ package org.apache.ambari.server.controller.internal;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.ambari.server.controller.ganglia.GangliaHostComponentPropertyProvider;
+import org.apache.ambari.server.controller.ganglia.GangliaPropertyProvider;
 import org.apache.ambari.server.controller.ganglia.GangliaPropertyProviderTest.TestGangliaHostProvider;
+import org.apache.ambari.server.controller.jmx.JMXPropertyProvider;
+import org.apache.ambari.server.controller.jmx.TestStreamProvider;
 import org.apache.ambari.server.controller.jmx.JMXPropertyProviderTest.TestJMXHostProvider;
 import org.apache.ambari.server.controller.spi.Predicate;
 import org.apache.ambari.server.controller.spi.PropertyProvider;
@@ -41,6 +48,7 @@ import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.Host;
 import org.apache.ambari.server.state.StackId;
 import org.apache.ambari.server.state.stack.Metric;
+import org.apache.http.client.utils.URIBuilder;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -54,6 +62,12 @@ import com.google.inject.persist.PersistService;
  * Tests the stack defined property provider.
  */
 public class StackDefinedPropertyProviderTest {
+  private static final String HOST_COMPONENT_HOST_NAME_PROPERTY_ID = "HostRoles/host_name";
+  private static final String HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID = "HostRoles/component_name";
+  private static final String HOST_COMPONENT_STATE_PROPERTY_ID = "HostRoles/state";    
+
+  
+  private Clusters clusters = null;
   private Injector injector = null;
 
   @Before
@@ -64,7 +78,7 @@ public class StackDefinedPropertyProviderTest {
     injector.getInstance(GuiceJpaInitializer.class);
     StackDefinedPropertyProvider.init(injector);
     
-    Clusters clusters = injector.getInstance(Clusters.class);
+    clusters = injector.getInstance(Clusters.class);
     clusters.addCluster("c1");
     
     Cluster cluster = clusters.getCluster("c1");
@@ -114,6 +128,7 @@ public class StackDefinedPropertyProviderTest {
     Assert.assertTrue("Expected Ganglia metric 'metrics/rpcdetailed'", values.containsKey("metrics/rpcdetailed"));
   }
   
+  
   @Test
   public void testCustomProviders() throws Exception {
     
@@ -193,7 +208,7 @@ public class StackDefinedPropertyProviderTest {
   }
   
   /**
-   * Test for empty constructor.
+   * Test for empty constructor.  Public since instantiated via reflection.
    */
   public static class CustomMetricProvider1 implements PropertyProvider {
     @Override
@@ -214,7 +229,7 @@ public class StackDefinedPropertyProviderTest {
   }
 
   /**
-   * Test map constructors.
+   * Test map constructors.  Public since instantiated via reflection.
    */
   public static class CustomMetricProvider2 implements PropertyProvider {
     private Map<String, String> providerProperties = null;
@@ -239,7 +254,7 @@ public class StackDefinedPropertyProviderTest {
   }
 
   /**
-   * Test singleton accessor.
+   * Test singleton accessor.  Public since instantiated via reflection.
    */
   public static class CustomMetricProvider3 implements PropertyProvider {
     private static CustomMetricProvider3 instance = null;
@@ -268,5 +283,662 @@ public class StackDefinedPropertyProviderTest {
     }
   }
   
+  @Test
+  public void testPopulateResources_HDP2() throws Exception {
+    
+    StreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(true);
+    TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider();
+
+    StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider(
+        Resource.Type.HostComponent,
+        hostProvider,
+        gangliaHostProvider,
+        streamProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        new EmptyPropertyProvider(),
+        new EmptyPropertyProvider());
+
+    // resourcemanager
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty("HostRoles/cluster_name", "c1");
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "domu-12-31-39-0e-34-e1.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "RESOURCEMANAGER");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    // request with an empty set should get all supported properties
+    Request request = PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+
+    // see test/resources/resourcemanager_jmx.json for values
+    Assert.assertEquals(6,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AggregateContainersAllocated")));
+    Assert.assertEquals(6,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AggregateContainersReleased")));
+    Assert.assertEquals(8192,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AvailableMB")));
+    Assert.assertEquals(1,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AvailableVCores")));
+    Assert.assertEquals(2,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AppsSubmitted")));
+    
+    Assert.assertEquals(1,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/ClusterMetrics", "NumActiveNMs")));
+    Assert.assertEquals(0,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/ClusterMetrics", "NumDecommissionedNMs")));
+    Assert.assertEquals(0,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/ClusterMetrics", "NumLostNMs")));
+    Assert.assertEquals(0,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/ClusterMetrics", "NumUnhealthyNMs")));
+    Assert.assertEquals(0,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/ClusterMetrics", "NumRebootedNMs")));
+
+    Assert.assertEquals(932118528,  resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "HeapMemoryMax")));
+
+    //namenode
+    resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty("HostRoles/cluster_name", "c1");
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "domu-12-31-39-0e-34-e1.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "NAMENODE");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    // request with an empty set should get all supported properties
+    request = PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+  }  
+  
+  @Test
+  public void testPopulateResources_HDP2_params() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+    TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider();
+
+    StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider(
+        Resource.Type.HostComponent,
+        hostProvider,
+        gangliaHostProvider,
+        streamProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        new EmptyPropertyProvider(),
+        new EmptyPropertyProvider());
+
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty("HostRoles/cluster_name", "c1");
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "h1");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "RESOURCEMANAGER");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    // request with an empty set should get all supported properties
+    Request request = PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+
+    // see test/resources/resourcemanager_jmx.json for values
+    Assert.assertEquals(6,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AggregateContainersAllocated")));
+    Assert.assertEquals(6,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AggregateContainersReleased")));
+    Assert.assertEquals(8192, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AvailableMB")));
+    Assert.assertEquals(1,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AvailableVCores")));
+    Assert.assertEquals(2,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AppsSubmitted")));
+    
+    Assert.assertEquals(15,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AggregateContainersAllocated")));
+    Assert.assertEquals(12,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AggregateContainersReleased")));
+    Assert.assertEquals(8192, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AvailableMB")));
+    Assert.assertEquals(1,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AvailableVCores")));
+    Assert.assertEquals(47,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AppsSubmitted")));
+    
+    Assert.assertEquals(4,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AggregateContainersAllocated")));
+    Assert.assertEquals(4,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AggregateContainersReleased")));
+    Assert.assertEquals(6048, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AvailableMB")));
+    Assert.assertEquals(1,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AvailableVCores")));
+    Assert.assertEquals(1,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AppsSubmitted")));
+  }  
+
+
+  @Test
+  public void testPopulateResources_HDP2_params_singleProperty() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+    TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider();
+
+    StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider(
+        Resource.Type.HostComponent,
+        hostProvider,
+        gangliaHostProvider,
+        streamProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        new EmptyPropertyProvider(),
+        new EmptyPropertyProvider());
+
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty("HostRoles/cluster_name", "c1");
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "h1");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "RESOURCEMANAGER");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    // only ask for one property
+    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
+    Request  request = PropertyHelper.getReadRequest(Collections.singleton("metrics/yarn/Queue/root/AvailableMB"), temporalInfoMap);
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+
+    // see test/resources/resourcemanager_jmx.json for values
+    Assert.assertEquals(8192, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AvailableMB")));
+    Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AvailableVCores")));
+  }
+  
+  @Test
+  public void testPopulateResources_HDP2_params_category() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+    TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider();
+
+    StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider(
+        Resource.Type.HostComponent,
+        hostProvider,
+        gangliaHostProvider,
+        streamProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        new EmptyPropertyProvider(),
+        new EmptyPropertyProvider());
+
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty("HostRoles/cluster_name", "c1");
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "h1");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "RESOURCEMANAGER");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    // only ask for one property
+    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
+    Request  request = PropertyHelper.getReadRequest(Collections.singleton("metrics/yarn/Queue"), temporalInfoMap);
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+
+    // see test/resources/resourcemanager_jmx.json for values
+    Assert.assertEquals(6,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AggregateContainersAllocated")));
+    Assert.assertEquals(6,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AggregateContainersReleased")));
+    Assert.assertEquals(8192, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AvailableMB")));
+    Assert.assertEquals(1,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AvailableVCores")));
+    Assert.assertEquals(2,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AppsSubmitted")));
+
+    Assert.assertEquals(15,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AggregateContainersAllocated")));
+    Assert.assertEquals(12,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AggregateContainersReleased")));
+    Assert.assertEquals(8192, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AvailableMB")));
+    Assert.assertEquals(1,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AvailableVCores")));
+    Assert.assertEquals(47,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AppsSubmitted")));
+
+    Assert.assertEquals(4,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AggregateContainersAllocated")));
+    Assert.assertEquals(4,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AggregateContainersReleased")));
+    Assert.assertEquals(6048, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AvailableMB")));
+    Assert.assertEquals(1,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AvailableVCores")));
+    Assert.assertEquals(1,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AppsSubmitted")));
+  }
+
+  @Test
+  public void testPopulateResources_HDP2_params_category2() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+    TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider();
+
+    StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider(
+        Resource.Type.HostComponent,
+        hostProvider,
+        gangliaHostProvider,
+        streamProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        new EmptyPropertyProvider(),
+        new EmptyPropertyProvider());
+
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty("HostRoles/cluster_name", "c1");
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "h1");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "RESOURCEMANAGER");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    // only ask for one property
+    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
+    Request  request = PropertyHelper.getReadRequest(Collections.singleton("metrics/yarn/Queue/root/default"), temporalInfoMap);
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+
+    // see test/resources/resourcemanager_jmx.json for values
+    Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AggregateContainersAllocated")));
+    Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AggregateContainersReleased")));
+    Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AvailableMB")));
+    Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AvailableVCores")));
+    Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root", "AppsSubmitted")));
+
+    Assert.assertEquals(15,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AggregateContainersAllocated")));
+    Assert.assertEquals(12,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AggregateContainersReleased")));
+    Assert.assertEquals(8192, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AvailableMB")));
+    Assert.assertEquals(1,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AvailableVCores")));
+    Assert.assertEquals(47,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default", "AppsSubmitted")));
+
+    Assert.assertEquals(99,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default/sub_queue", "AggregateContainersAllocated")));
+    Assert.assertEquals(98,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default/sub_queue", "AggregateContainersReleased")));
+    Assert.assertEquals(9898, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default/sub_queue", "AvailableMB")));
+    Assert.assertEquals(2,    resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default/sub_queue", "AvailableVCores")));
+    Assert.assertEquals(97,   resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/default/sub_queue", "AppsSubmitted")));
+
+    Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AggregateContainersAllocated")));
+    Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AggregateContainersReleased")));
+    Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AvailableMB")));
+    Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AvailableVCores")));
+    Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/yarn/Queue/root/second_queue", "AppsSubmitted")));
+  }  
+
+  @Test
+  public void testPopulateResources_jmx_JournalNode() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+    TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider();
+
+    StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider(
+        Resource.Type.HostComponent,
+        hostProvider,
+        gangliaHostProvider,
+        streamProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        new EmptyPropertyProvider(),
+        new EmptyPropertyProvider());
+
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty("HostRoles/cluster_name", "c1");
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "domu-12-31-39-0e-34-e1.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "JOURNALNODE");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    // request with an empty set should get all supported properties
+    Request request = PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+
+    // see test/resources/hdfs_journalnode_jmx.json for values
+    Assert.assertEquals(1377795104272L, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "startTime")));
+    Assert.assertEquals(954466304, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "HeapMemoryMax")));
+    Assert.assertEquals(14569736, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "HeapMemoryUsed")));
+    Assert.assertEquals(136314880, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "NonHeapMemoryMax")));
+    Assert.assertEquals(24993392, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "NonHeapMemoryUsed")));
+    Assert.assertEquals(9100, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "gcCount")));
+    Assert.assertEquals(31641, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "gcTimeMillis")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "logError")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "logFatal")));
+    Assert.assertEquals(4163, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "logInfo")));
+    Assert.assertEquals(1, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "logWarn")));
+    Assert.assertEquals(29.8125, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "memHeapCommittedM")));
+    Assert.assertEquals(13.894783, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "memHeapUsedM")));
+    Assert.assertEquals(24.9375, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "memNonHeapCommittedM")));
+    Assert.assertEquals(23.835556, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "memNonHeapUsedM")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "threadsBlocked")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "threadsNew")));
+    Assert.assertEquals(6, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "threadsRunnable")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "threadsTerminated")));
+    Assert.assertEquals(3, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "threadsTimedWaiting")));
+    Assert.assertEquals(8, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", "threadsWaiting")));
+
+    Assert.assertEquals(1, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "NumOpenConnections")));
+    Assert.assertEquals(4928861, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "ReceivedBytes")));
+    Assert.assertEquals(13.211112159230245, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "RpcProcessingTime_avg_time")));
+    Assert.assertEquals(25067, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "RpcProcessingTime_num_ops")));
+    Assert.assertEquals(0.19686821997924706, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "RpcQueueTime_avg_time")));
+    Assert.assertEquals(25067, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "RpcQueueTime_num_ops")));
+    Assert.assertEquals(6578899, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "SentBytes")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "callQueueLen")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "rpcAuthenticationFailures")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "rpcAuthenticationSuccesses")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "rpcAuthorizationFailures")));
+    Assert.assertEquals(12459, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", "rpcAuthorizationSuccesses")));
+
+    Assert.assertEquals(2, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "getJournalState_num_ops")));
+    Assert.assertEquals(0.0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "getJournalState_avg_time")));
+    Assert.assertEquals(2, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "newEpoch_num_ops")));
+    Assert.assertEquals(60.0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "newEpoch_avg_time")));
+    Assert.assertEquals(4129, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "startLogSegment_num_ops")));
+    Assert.assertEquals(38.25951359084413, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "startLogSegment_avg_time")));
+    Assert.assertEquals(8265, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "journal_num_ops")));
+    Assert.assertEquals(2.1832618025751187, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "journal_avg_time")));
+    Assert.assertEquals(4129, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "finalizeLogSegment_num_ops")));
+    Assert.assertEquals(11.575679542203101, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "finalizeLogSegment_avg_time")));
+    Assert.assertEquals(8536, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "getEditLogManifest_num_ops")));
+    Assert.assertEquals(12.55427859318747, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "getEditLogManifest_avg_time")));
+    Assert.assertEquals(1, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "prepareRecovery_num_ops")));
+    Assert.assertEquals(10.0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "prepareRecovery_avg_time")));
+    Assert.assertEquals(1, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "acceptRecovery_num_ops")));
+    Assert.assertEquals(30.0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpcdetailed", "acceptRecovery_avg_time")));
+
+    Assert.assertEquals(0.0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/ugi", "loginFailure_avg_time")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/ugi", "loginFailure_num_ops")));
+    Assert.assertEquals(0.0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/ugi", "loginSuccess_avg_time")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/ugi", "loginSuccess_num_ops")));
+
+    Assert.assertEquals("{\"mycluster\":{\"Formatted\":\"true\"}}", resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode", "journalsStatus")));
+
+    Assert.assertEquals(2, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs60s_num_ops")));
+    Assert.assertEquals(988, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs60s50thPercentileLatencyMicros")));
+    Assert.assertEquals(988, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs60s75thPercentileLatencyMicros")));
+    Assert.assertEquals(988, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs60s90thPercentileLatencyMicros")));
+    Assert.assertEquals(988, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs60s95thPercentileLatencyMicros")));
+    Assert.assertEquals(988, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs60s99thPercentileLatencyMicros")));
+    Assert.assertEquals(4, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs300s_num_ops")));
+    Assert.assertEquals(1027, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs300s50thPercentileLatencyMicros")));
+    Assert.assertEquals(1037, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs300s75thPercentileLatencyMicros")));
+    Assert.assertEquals(1037, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs300s90thPercentileLatencyMicros")));
+    Assert.assertEquals(1037, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs300s95thPercentileLatencyMicros")));
+    Assert.assertEquals(1037, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs300s99thPercentileLatencyMicros")));
+    Assert.assertEquals(60, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs3600s_num_ops")));
+    Assert.assertEquals(1122, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs3600s50thPercentileLatencyMicros")));
+    Assert.assertEquals(1344, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs3600s75thPercentileLatencyMicros")));
+    Assert.assertEquals(1554, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs3600s90thPercentileLatencyMicros")));
+    Assert.assertEquals(1980, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs3600s95thPercentileLatencyMicros")));
+    Assert.assertEquals(8442, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "syncs3600s99thPercentileLatencyMicros")));
+    Assert.assertEquals(8265, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "batchesWritten")));
+    Assert.assertEquals(8265, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "txnsWritten")));
+    Assert.assertEquals(107837, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "bytesWritten")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "batchesWrittenWhileLagging")));
+    Assert.assertEquals(2, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "lastPromisedEpoch")));
+    Assert.assertEquals(2, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "lastWriterEpoch")));
+    Assert.assertEquals(0, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "currentLagTxns")));
+    Assert.assertEquals(8444, resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/journalnode/cluster/mycluster", "lastWrittenTxId")));
+  }  
+
+  @Test
+  public void testPopulateResources_NoRegionServer() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+    TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider();
+
+    StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider(
+        Resource.Type.HostComponent,
+        hostProvider,
+        gangliaHostProvider,
+        streamProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        null,
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        new EmptyPropertyProvider(),
+        new EmptyPropertyProvider());
+
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty("HostRoles/cluster_name", "c1");
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "domu-12-31-39-0e-34-e1.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "HBASE_REGIONSERVER");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    int preSize = resource.getPropertiesMap().size();
+    
+    // request with an empty set should get all supported properties
+    Request request = PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+
+    Assert.assertEquals(preSize, resource.getPropertiesMap().size());
+  }
+
+  @Test
+  public void testPopulateResources_HBaseMaster2() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+    TestGangliaHostProvider gangliaHostProvider = new TestGangliaHostProvider();
+
+    StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider(
+        Resource.Type.HostComponent,
+        hostProvider,
+        gangliaHostProvider,
+        streamProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        new EmptyPropertyProvider(),
+        new EmptyPropertyProvider());
+
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+    
+    resource.setProperty("HostRoles/cluster_name", "c1");
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "domu-12-31-39-0e-34-e1.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "HBASE_MASTER");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    
+    // request with an empty set should get all supported properties
+    Request request = PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    Set<Resource> res = propertyProvider.populateResources(Collections.singleton(resource), request, null);
+    Assert.assertEquals(1, res.size());
+    
+    Map<String, Map<String, Object>> map = res.iterator().next().getPropertiesMap();
+
+    Assert.assertTrue(map.containsKey("metrics/hbase/master"));
+    // uses 'tag.isActiveMaster' (name with a dot)
+    Assert.assertTrue(map.get("metrics/hbase/master").containsKey("IsActiveMaster"));
+  }    
+
+  
+  @Test
+  public void testPopulateResources_params_category5() throws Exception {
+    org.apache.ambari.server.controller.ganglia.TestStreamProvider streamProvider =
+        new org.apache.ambari.server.controller.ganglia.TestStreamProvider("temporal_ganglia_data_yarn_queues.txt");
+
+    TestJMXHostProvider jmxHostProvider = new TestJMXHostProvider(true);
+    TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
+    
+    StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider(
+        Resource.Type.HostComponent,
+        jmxHostProvider,
+        hostProvider,
+        streamProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        new EmptyPropertyProvider(),
+        new EmptyPropertyProvider());
+    
+    
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty("HostRoles/cluster_name", "c1");
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "dev01.ambari.apache.org");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "RESOURCEMANAGER");
+
+    String RM_CATEGORY_1 = "metrics/yarn/Queue/root/default";
+    String RM_AVAILABLE_MEMORY_PROPERTY = PropertyHelper.getPropertyId(RM_CATEGORY_1, "AvailableMB");
+    
+    // only ask for one property
+    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
+    temporalInfoMap.put(RM_CATEGORY_1, new TemporalInfoImpl(10L, 20L, 1L));
+    
+    Request  request = PropertyHelper.getReadRequest(Collections.singleton(RM_CATEGORY_1), temporalInfoMap);
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+    
+    List<String> metricsRegexes = new ArrayList<String>();
+    
+    metricsRegexes.add("metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/");
+
+    Assert.assertTrue(PropertyHelper.getProperties(resource).size() > 2);
+    Assert.assertNotNull(resource.getPropertyValue(RM_AVAILABLE_MEMORY_PROPERTY));
+  }  
+
+  @Test
+  public void testPopulateResources_ganglia_JournalNode() throws Exception {
+    org.apache.ambari.server.controller.ganglia.TestStreamProvider streamProvider =
+        new org.apache.ambari.server.controller.ganglia.TestStreamProvider("journalnode_ganglia_data.txt");
+
+    TestJMXHostProvider jmxHostProvider = new TestJMXHostProvider(true);
+    TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
+    
+    StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider(
+        Resource.Type.HostComponent,
+        jmxHostProvider,
+        hostProvider,
+        streamProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        new EmptyPropertyProvider(),
+        new EmptyPropertyProvider());
+
+
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty("HostRoles/cluster_name", "c1");
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "ip-10-39-113-33.ec2.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "JOURNALNODE");
+
+
+    Object[][] testData = {
+      {"metrics", "boottime", 1378290058.0},
+      {"metrics/cpu", "cpu_aidle", 0.0},
+      {"metrics/cpu", "cpu_idle", 88.2},
+      {"metrics/cpu", "cpu_nice", 0.0},
+      {"metrics/cpu", "cpu_num", 2.0},
+      {"metrics/cpu", "cpu_speed", 3583.0},
+      {"metrics/cpu", "cpu_system", 8.4},
+      {"metrics/cpu", "cpu_user", 3.3},
+      {"metrics/cpu", "cpu_wio", 0.1},
+      {"metrics/disk", "disk_free", 92.428},
+      {"metrics/disk", "disk_total", 101.515},
+      {"metrics/disk", "part_max_used", 12.8},
+      {"metrics/load", "load_fifteen", 0.026},
+      {"metrics/load", "load_five", 0.114},
+      {"metrics/load", "load_one", 0.226},
+      {"metrics/memory", "mem_buffers", 129384.0},
+      {"metrics/memory", "mem_cached", 589576.0},
+      {"metrics/memory", "mem_free", 1365496.0},
+      {"metrics/memory", "mem_shared", 0.0},
+      {"metrics/memory", "mem_total", 4055144.0},
+      {"metrics/memory", "swap_free", 4128760.0},
+      {"metrics/memory", "swap_total", 4128760.0},
+      {"metrics/network", "bytes_in", 22547.48},
+      {"metrics/network", "bytes_out", 5772.33},
+      {"metrics/network", "pkts_in", 24.0},
+      {"metrics/network", "pkts_out", 35.4},
+      {"metrics/process", "proc_run", 4.0},
+      {"metrics/process", "proc_total", 657.0},
+      {"metrics/dfs/journalNode", "batchesWritten", 0.0},
+      {"metrics/dfs/journalNode", "batchesWrittenWhileLagging", 0.0},
+      {"metrics/dfs/journalNode", "bytesWritten", 0.0},
+      {"metrics/dfs/journalNode", "currentLagTxns", 0.0},
+      {"metrics/dfs/journalNode", "lastPromisedEpoch", 5.0},
+      {"metrics/dfs/journalNode", "lastWriterEpoch", 5.0},
+      {"metrics/dfs/journalNode", "lastWrittenTxId", 613.0},
+      {"metrics/dfs/journalNode", "syncs60s50thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs60s75thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs60s90thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs60s95thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs60s99thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs60s_num_ops", 0.0},
+      {"metrics/dfs/journalNode", "syncs300s50thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs300s75thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs300s90thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs300s95thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs300s99thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs300s_num_ops", 0.0},
+      {"metrics/dfs/journalNode", "syncs3600s50thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs3600s75thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs3600s90thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs3600s95thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs3600s99thPercentileLatencyMicros", 0.0},
+      {"metrics/dfs/journalNode", "syncs3600s_num_ops", 0.0},
+      {"metrics/dfs/journalNode", "txnsWritten", 0.0}
+    };
+
+    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
+    Set<String> properties = new LinkedHashSet<String>();
+
+    for (Object[] row : testData) {
+      properties.add(PropertyHelper.getPropertyId(row[0].toString(), row[1].toString()));
+    }
+
+    Request request = PropertyHelper.getReadRequest(properties, temporalInfoMap);
+
+    Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+
+    Map<String, Object> p = PropertyHelper.getProperties(resource);
+
+    for (String key : p.keySet()) {
+      if (!properties.contains(key)) {
+        System.out.printf(key);
+      }
+    }
+
+    // size + properties defined before "Object[][] testData ... " above 
+    Assert.assertEquals(properties.size() + 3, PropertyHelper.getProperties(resource).size());
+
+    int i = 0;
+    for (String property : properties) {
+      Assert.assertEquals(testData[i++][2], resource.getPropertyValue(property));
+    }
+  }  
+
+  @Test
+  public void testPopulateResources_resourcemanager_clustermetrics() throws Exception {
+    
+    String[] metrics = new String[] {
+      "metrics/yarn/ClusterMetrics/NumActiveNMs",
+      "metrics/yarn/ClusterMetrics/NumDecommissionedNMs",
+      "metrics/yarn/ClusterMetrics/NumLostNMs",
+      "metrics/yarn/ClusterMetrics/NumUnhealthyNMs",
+      "metrics/yarn/ClusterMetrics/NumRebootedNMs"
+    };
+    
+    org.apache.ambari.server.controller.ganglia.TestStreamProvider streamProvider =
+        new org.apache.ambari.server.controller.ganglia.TestStreamProvider("yarn_ganglia_data.txt");
+
+    TestJMXHostProvider jmxHostProvider = new TestJMXHostProvider(true);
+    TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();
+    
+    StackDefinedPropertyProvider propertyProvider = new StackDefinedPropertyProvider(
+        Resource.Type.HostComponent,
+        jmxHostProvider,
+        hostProvider,
+        streamProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"),
+        new EmptyPropertyProvider(),
+        new EmptyPropertyProvider());
+
+    for (String metric : metrics) {
+      Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+      resource.setProperty("HostRoles/cluster_name", "c1");
+      resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, "ip-10-39-113-33.ec2.internal");
+      resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "RESOURCEMANAGER");
+      
+      // only ask for one property
+      Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
+      temporalInfoMap.put(metric, new TemporalInfoImpl(10L, 20L, 1L));
+      Request  request = PropertyHelper.getReadRequest(Collections.singleton(metric), temporalInfoMap);
+
+      Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size());
+      
+      Assert.assertEquals(4, PropertyHelper.getProperties(resource).size());
+      Assert.assertNotNull(resource.getPropertyValue(metric));
+      
+    }
+    
+  }  
   
 }