http://git-wip-us.apache.org/repos/asf/ambari/blob/cc4dfe35/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
deleted file mode 100644
index 24734f8..0000000
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/jmx/JMXPropertyProviderTest.java
+++ /dev/null
@@ -1,513 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ambari.server.controller.jmx;
-
-import org.apache.ambari.server.controller.internal.ResourceImpl;
-import org.apache.ambari.server.controller.spi.Request;
-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.junit.Assert;
-import org.junit.Test;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-
-/**
- * JMX property provider tests.
- */
-public class JMXPropertyProviderTest {
-  protected static final String HOST_COMPONENT_HOST_NAME_PROPERTY_ID = 
PropertyHelper.getPropertyId("HostRoles", "host_name");
-  protected static final String HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID = 
PropertyHelper.getPropertyId("HostRoles", "component_name");
-  protected static final String HOST_COMPONENT_STATE_PROPERTY_ID = 
PropertyHelper.getPropertyId("HostRoles", "state");
-
-  public static final int NUMBER_OF_RESOURCES = 400;
-
-  @Test
-  public void testPopulateResources() throws Exception {
-    TestStreamProvider  streamProvider = new TestStreamProvider();
-    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
-
-    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
-        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
-        streamProvider,
-        hostProvider,
-        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
-        PropertyHelper.getPropertyId("HostRoles", "host_name"),
-        PropertyHelper.getPropertyId("HostRoles", "component_name"),
-        PropertyHelper.getPropertyId("HostRoles", "state"),
-        Collections.singleton("STARTED"));
-
-    // namenode
-    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
-
-    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 request = 
PropertyHelper.getReadRequest(Collections.<String>emptySet());
-
-    Assert.assertEquals(1, 
propertyProvider.populateResources(Collections.singleton(resource), request, 
null).size());
-
-    
Assert.assertEquals(propertyProvider.getSpec("domu-12-31-39-0e-34-e1.compute-1.internal",
 "50070"), streamProvider.getLastSpec());
-
-    // see test/resources/hdfs_namenode_jmx.json for values
-    Assert.assertEquals(13670605,  
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", 
"ReceivedBytes")));
-    Assert.assertEquals(28,      
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/namenode", 
"CreateFileOps")));
-    Assert.assertEquals(1006632960, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
-    Assert.assertEquals(473433016, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
-    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
-    Assert.assertEquals(23634400, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
-    Assert.assertEquals(887717691390L, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/FSNamesystem",
 "CapacityTotal")));
-    Assert.assertEquals(184320, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/FSNamesystem",
 "CapacityUsed")));
-    Assert.assertEquals(842207944704L, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/FSNamesystem",
 "CapacityRemaining")));
-    Assert.assertEquals(45509562366L, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/FSNamesystem",
 "CapacityNonDFSUsed")));
-
-    // datanode
-    resource = new ResourceImpl(Resource.Type.HostComponent);
-
-    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
-    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"DATANODE");
-
-    // request with an empty set should get all supported properties
-    request = PropertyHelper.getReadRequest(Collections.<String>emptySet());
-
-    propertyProvider.populateResources(Collections.singleton(resource), 
request, null);
-
-    
Assert.assertEquals(propertyProvider.getSpec("domu-12-31-39-14-ee-b3.compute-1.internal",
 "50075"), streamProvider.getLastSpec());
-
-    // see test/resources/hdfs_datanode_jmx.json for values
-    Assert.assertEquals(856,  
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", 
"ReceivedBytes")));
-    Assert.assertEquals(954466304, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
-    Assert.assertEquals(9772616, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
-    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
-    Assert.assertEquals(21933376, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
-
-
-    // jobtracker
-    resource = new ResourceImpl(Resource.Type.HostComponent);
-
-    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
-    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"JOBTRACKER");
-
-    // only ask for specific properties
-    Set<String> properties = new HashSet<String>();
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"threadsWaiting"));
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax"));
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed"));
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax"));
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"jobs_submitted"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"jobs_completed"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"jobs_failed"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"maps_launched"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"maps_completed"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"maps_failed"));
-
-    request = PropertyHelper.getReadRequest(properties);
-
-    propertyProvider.populateResources(Collections.singleton(resource), 
request, null);
-
-    
Assert.assertEquals(propertyProvider.getSpec("domu-12-31-39-14-ee-b3.compute-1.internal",
 "50030"), streamProvider.getLastSpec());
-
-    // see test/resources/mapreduce_jobtracker_jmx.json for values
-    Assert.assertEquals(13, PropertyHelper.getProperties(resource).size());
-    Assert.assertEquals(59, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"threadsWaiting")));
-    Assert.assertEquals(1052770304, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
-    Assert.assertEquals(43580400, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
-    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
-    Assert.assertEquals(29602888, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
-    Assert.assertEquals(2, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "jobs_submitted")));
-    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "jobs_completed")));
-    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "jobs_failed")));
-    Assert.assertEquals(2, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "maps_launched")));
-    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "maps_completed")));
-    Assert.assertEquals(0, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "maps_failed")));
-
-    
Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm",
 "gcCount")));
-
-    // tasktracker
-    resource = new ResourceImpl(Resource.Type.HostComponent);
-
-    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
-    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"TASKTRACKER");
-
-    // only ask for specific properties
-    properties = new HashSet<String>();
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax"));
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed"));
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax"));
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed"));
-    
properties.add(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", 
"shuffle_exceptions_caught"));
-    
properties.add(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", 
"shuffle_failed_outputs"));
-    
properties.add(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", 
"shuffle_output_bytes"));
-    
properties.add(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", 
"shuffle_success_outputs"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"maps_running"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"reduces_running"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"mapTaskSlots"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"reduceTaskSlots"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"failedDirs"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"tasks_completed"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"tasks_failed_timeout"));
-    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"tasks_failed_ping"));
-
-    request = PropertyHelper.getReadRequest(properties);
-
-    propertyProvider.populateResources(Collections.singleton(resource), 
request, null);
-
-    
Assert.assertEquals(propertyProvider.getSpec("domu-12-31-39-14-ee-b3.compute-1.internal",
 "50060"), streamProvider.getLastSpec());
-
-    Assert.assertEquals(18, PropertyHelper.getProperties(resource).size());
-    Assert.assertEquals(954466304, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
-    Assert.assertEquals(18330984, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
-    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
-    Assert.assertEquals(24235104, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
-    Assert.assertEquals(0, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput",
 "shuffle_exceptions_caught")));
-    Assert.assertEquals(0, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput",
 "shuffle_failed_outputs")));
-    Assert.assertEquals(1841, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput",
 "shuffle_output_bytes")));
-    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput",
 "shuffle_success_outputs")));
-    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "maps_running")));
-    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "reduces_running")));
-    Assert.assertEquals(4, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "mapTaskSlots")));
-    Assert.assertEquals(2, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "reduceTaskSlots")));
-    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "failedDirs")));
-    Assert.assertEquals(4, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "tasks_completed")));
-    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "tasks_failed_timeout")));
-    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "tasks_failed_ping")));
-
-
-    
Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm",
 "gcCount")));
-
-    // hbase master
-    resource = new ResourceImpl(Resource.Type.HostComponent);
-
-    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
-    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"HBASE_MASTER");
-    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
-
-    // only ask for specific properties
-    properties = new HashSet<String>();
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax"));
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed"));
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax"));
-    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed"));
-    properties.add(PropertyHelper.getPropertyId("metrics/load", 
"AverageLoad"));
-    request = PropertyHelper.getReadRequest(properties);
-
-    propertyProvider.populateResources(Collections.singleton(resource), 
request, null);
-
-    
Assert.assertEquals(propertyProvider.getSpec("domu-12-31-39-14-ee-b3.compute-1.internal",
 "60010"), streamProvider.getLastSpec());
-
-    Assert.assertEquals(8, PropertyHelper.getProperties(resource).size());
-    Assert.assertEquals(1069416448, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
-    Assert.assertEquals(4806976, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
-    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
-    Assert.assertEquals(28971240, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
-    Assert.assertEquals(3.0, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/load", 
"AverageLoad")));
-
-    
Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm",
 "gcCount")));
-  }
-
-  @Test
-  public void testPopulateResources_singleProperty() throws Exception {
-    TestStreamProvider  streamProvider = new TestStreamProvider();
-    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
-
-    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
-        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
-        streamProvider,
-        hostProvider,
-        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
-        PropertyHelper.getPropertyId("HostRoles", "host_name"),
-        PropertyHelper.getPropertyId("HostRoles", "component_name"),
-        PropertyHelper.getPropertyId("HostRoles", "state"),
-        Collections.singleton("STARTED"));
-
-    // namenode
-    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
-
-    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");
-
-    // only ask for one property
-    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, 
TemporalInfo>();
-    Request  request = 
PropertyHelper.getReadRequest(Collections.singleton("metrics/rpc/ReceivedBytes"),
 temporalInfoMap);
-
-    Assert.assertEquals(1, 
propertyProvider.populateResources(Collections.singleton(resource), request, 
null).size());
-
-    
Assert.assertEquals(propertyProvider.getSpec("domu-12-31-39-0e-34-e1.compute-1.internal",
 "50070"), streamProvider.getLastSpec());
-
-    // see test/resources/hdfs_namenode_jmx.json for values
-    Assert.assertEquals(13670605,  
resource.getPropertyValue("metrics/rpc/ReceivedBytes"));
-    
Assert.assertNull(resource.getPropertyValue("metrics/dfs/namenode/CreateFileOps"));
-  }
-
-  @Test
-  public void testPopulateResources_category() throws Exception {
-    TestStreamProvider  streamProvider = new TestStreamProvider();
-    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
-
-    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
-        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
-        streamProvider,
-        hostProvider,
-        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
-        PropertyHelper.getPropertyId("HostRoles", "host_name"),
-        PropertyHelper.getPropertyId("HostRoles", "component_name"),
-        PropertyHelper.getPropertyId("HostRoles", "state"),
-        Collections.singleton("STARTED"));
-
-    // namenode
-    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
-
-    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
-    // only ask for one property
-    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, 
TemporalInfo>();
-    Request  request = 
PropertyHelper.getReadRequest(Collections.singleton("metrics/dfs"), 
temporalInfoMap);
-
-    Assert.assertEquals(1, 
propertyProvider.populateResources(Collections.singleton(resource), request, 
null).size());
-
-    
Assert.assertEquals(propertyProvider.getSpec("domu-12-31-39-0e-34-e1.compute-1.internal",
 "50070"), streamProvider.getLastSpec());
-
-    // see test/resources/hdfs_namenode_jmx.json for values
-    Assert.assertEquals(184320,  
resource.getPropertyValue("metrics/dfs/FSNamesystem/CapacityUsed"));
-    Assert.assertEquals(21,  
resource.getPropertyValue("metrics/dfs/FSNamesystem/UnderReplicatedBlocks"));
-    Assert.assertNull(resource.getPropertyValue("metrics/rpc/ReceivedBytes"));
-  }
-
-  @Test
-  public void testPopulateResourcesWithUnknownPort() throws Exception {
-    TestStreamProvider  streamProvider = new TestStreamProvider();
-    TestJMXHostProvider hostProvider = new TestJMXHostProvider(true);
-
-    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
-        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
-        streamProvider,
-        hostProvider,
-        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
-        PropertyHelper.getPropertyId("HostRoles", "host_name"),
-        PropertyHelper.getPropertyId("HostRoles", "component_name"),
-        PropertyHelper.getPropertyId("HostRoles", "state"),
-        Collections.singleton("STARTED"));
-
-    // namenode
-    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
-
-    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");
-
-    // 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(propertyProvider.getSpec("domu-12-31-39-0e-34-e1.compute-1.internal",
 "50070"), streamProvider.getLastSpec());
-
-    // see test/resources/hdfs_namenode_jmx.json for values
-    Assert.assertEquals(13670605,  
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", 
"ReceivedBytes")));
-    Assert.assertEquals(28,      
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/namenode", 
"CreateFileOps")));
-    Assert.assertEquals(1006632960, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
-    Assert.assertEquals(473433016, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
-    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
-    Assert.assertEquals(23634400, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
-  }
-
-  @Test
-  public void testPopulateResourcesUnhealthyResource() throws Exception {
-    TestStreamProvider  streamProvider = new TestStreamProvider();
-    TestJMXHostProvider hostProvider = new TestJMXHostProvider(true);
-
-    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
-        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
-        streamProvider,
-        hostProvider,
-        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
-        PropertyHelper.getPropertyId("HostRoles", "host_name"),
-        PropertyHelper.getPropertyId("HostRoles", "component_name"),
-        PropertyHelper.getPropertyId("HostRoles", "state"),
-        Collections.singleton("STARTED"));
-
-    // namenode
-    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
-
-    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, "INSTALLED");
-
-    // 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 that the stream provider was never called.
-    Assert.assertNull(streamProvider.getLastSpec());
-  }
-
-  @Test
-  public void testPopulateResourcesMany() throws Exception {
-    // Set the provider to take 50 millis to return the JMX values
-    TestStreamProvider  streamProvider = new TestStreamProvider(50L);
-    TestJMXHostProvider hostProvider = new TestJMXHostProvider(true);
-    Set<Resource> resources = new HashSet<Resource>();
-
-    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
-        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
-        streamProvider,
-        hostProvider,
-        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
-        PropertyHelper.getPropertyId("HostRoles", "host_name"),
-        PropertyHelper.getPropertyId("HostRoles", "component_name"),
-        PropertyHelper.getPropertyId("HostRoles", "state"),
-        Collections.singleton("STARTED"));
-
-    for (int i = 0; i < NUMBER_OF_RESOURCES; ++i) {
-      // datanode
-      Resource resource = new ResourceImpl(Resource.Type.HostComponent);
-
-      resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
-      resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"DATANODE");
-      resource.setProperty("unique_id", i);
-
-      resources.add(resource);
-    }
-
-    // request with an empty set should get all supported properties
-    Request request = 
PropertyHelper.getReadRequest(Collections.<String>emptySet());
-
-    Set<Resource> resourceSet = propertyProvider.populateResources(resources, 
request, null);
-
-    Assert.assertEquals(NUMBER_OF_RESOURCES, resourceSet.size());
-
-    for (Resource resource : resourceSet) {
-      // see test/resources/hdfs_datanode_jmx.json for values
-      Assert.assertEquals(856,  
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", 
"ReceivedBytes")));
-      Assert.assertEquals(954466304, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
-      Assert.assertEquals(9772616, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
-      Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
-      Assert.assertEquals(21933376, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
-    }
-  }
-
-  @Test
-  public void testPopulateResourcesTimeout() throws Exception {
-    // Set the provider to take 100 millis to return the JMX values
-    TestStreamProvider  streamProvider = new TestStreamProvider(100L);
-    TestJMXHostProvider hostProvider = new TestJMXHostProvider(true);
-    Set<Resource> resources = new HashSet<Resource>();
-
-    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
-        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
-        streamProvider,
-        hostProvider,
-        "HostRoles/cluster_name",
-        "HostRoles/host_name",
-        "HostRoles/component_name",
-        "HostRoles/state",
-        Collections.singleton("STARTED"));
-
-    // set the provider timeout to 50 millis
-    propertyProvider.setPopulateTimeout(50L);
-
-    // datanode
-    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
-
-    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
-    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"DATANODE");
-
-    resources.add(resource);
-
-    // request with an empty set should get all supported properties
-    Request request = 
PropertyHelper.getReadRequest(Collections.<String>emptySet());
-
-    Set<Resource> resourceSet = propertyProvider.populateResources(resources, 
request, null);
-
-    // make sure that the thread running the stream provider has completed
-    Thread.sleep(150L);
-
-    Assert.assertEquals(0, resourceSet.size());
-
-    // assert that properties never get set on the resource
-    Assert.assertNull(resource.getPropertyValue("metrics/rpc/ReceivedBytes"));
-    Assert.assertNull(resource.getPropertyValue("metrics/jvm/HeapMemoryMax"));
-    Assert.assertNull(resource.getPropertyValue("metrics/jvm/HeapMemoryUsed"));
-    
Assert.assertNull(resource.getPropertyValue("metrics/jvm/NonHeapMemoryMax"));
-    
Assert.assertNull(resource.getPropertyValue("metrics/jvm/NonHeapMemoryUsed"));
-  }
-
-  public static class TestJMXHostProvider implements JMXHostProvider {
-    private final boolean unknownPort;
-
-    public TestJMXHostProvider(boolean unknownPort) {
-      this.unknownPort = unknownPort;
-    }
-
-    @Override
-    public String getHostName(String clusterName, String componentName) {
-      return null;
-    }
-
-    @Override
-    public Set<String> getHostNames(String clusterName, String componentName) {
-      return null;
-    }
-
-    @Override
-    public String getPort(String clusterName, String componentName) throws
-      SystemException {
-
-      if (unknownPort) {
-        return null;
-      }
-      
-      if (componentName.equals("NAMENODE"))
-        return "50070";
-      else if (componentName.equals("DATANODE"))
-        return "50075";
-      else if (componentName.equals("JOBTRACKER"))
-        return "50030";
-      else if (componentName.equals("TASKTRACKER"))
-        return "50060";
-      else if (componentName.equals("HBASE_MASTER"))
-        return null == clusterName ? "60010" : "60011";
-      else  if (componentName.equals("JOURNALNODE"))
-        return "8480";
-      else  if (componentName.equals("STORM_REST_API"))
-        return "8745";
-      else
-        return null;
-    }
-
-    @Override
-    public String getJMXProtocol(String clusterName, String componentName) {
-      return "http";
-    }
-    
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/cc4dfe35/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/JMXPropertyProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/JMXPropertyProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/JMXPropertyProviderTest.java
new file mode 100644
index 0000000..6bb7c69
--- /dev/null
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/metrics/JMXPropertyProviderTest.java
@@ -0,0 +1,522 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.controller.metrics;
+
+import org.apache.ambari.server.controller.internal.ResourceImpl;
+import org.apache.ambari.server.controller.jmx.JMXHostProvider;
+import org.apache.ambari.server.controller.jmx.JMXPropertyProvider;
+import org.apache.ambari.server.controller.jmx.TestStreamProvider;
+import org.apache.ambari.server.controller.spi.Request;
+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.junit.Assert;
+import org.junit.Test;
+
+import java.util.*;
+
+
+/**
+ * JMX property provider tests.
+ */
+public class JMXPropertyProviderTest {
+  protected static final String HOST_COMPONENT_HOST_NAME_PROPERTY_ID = 
PropertyHelper.getPropertyId("HostRoles", "host_name");
+  protected static final String HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID = 
PropertyHelper.getPropertyId("HostRoles", "component_name");
+  protected static final String HOST_COMPONENT_STATE_PROPERTY_ID = 
PropertyHelper.getPropertyId("HostRoles", "state");
+
+  public static final int NUMBER_OF_RESOURCES = 400;
+
+  @Test
+  public void testPopulateResources() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+    TestMetricsHostProvider metricsHostProvider = new 
TestMetricsHostProvider();
+
+    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
+        streamProvider,
+        hostProvider,
+        metricsHostProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"));
+
+    // namenode
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    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 request = 
PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    Assert.assertEquals(1, 
propertyProvider.populateResources(Collections.singleton(resource), request, 
null).size());
+
+    Assert.assertEquals(propertyProvider.getSpec("http", 
"domu-12-31-39-0e-34-e1.compute-1.internal", "50070", "/jmx"), 
streamProvider.getLastSpec());
+
+    // see test/resources/hdfs_namenode_jmx.json for values
+    Assert.assertEquals(13670605,  
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", 
"ReceivedBytes")));
+    Assert.assertEquals(28,      
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/namenode", 
"CreateFileOps")));
+    Assert.assertEquals(1006632960, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
+    Assert.assertEquals(473433016, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
+    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
+    Assert.assertEquals(23634400, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
+    Assert.assertEquals(887717691390L, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/FSNamesystem",
 "CapacityTotal")));
+    Assert.assertEquals(184320, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/FSNamesystem",
 "CapacityUsed")));
+    Assert.assertEquals(842207944704L, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/FSNamesystem",
 "CapacityRemaining")));
+    Assert.assertEquals(45509562366L, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/FSNamesystem",
 "CapacityNonDFSUsed")));
+
+    // datanode
+    resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"DATANODE");
+
+    // request with an empty set should get all supported properties
+    request = PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    propertyProvider.populateResources(Collections.singleton(resource), 
request, null);
+
+    Assert.assertEquals(propertyProvider.getSpec("http", 
"domu-12-31-39-14-ee-b3.compute-1.internal", "50075", "/jmx"), 
streamProvider.getLastSpec());
+
+    // see test/resources/hdfs_datanode_jmx.json for values
+    Assert.assertEquals(856,  
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", 
"ReceivedBytes")));
+    Assert.assertEquals(954466304, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
+    Assert.assertEquals(9772616, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
+    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
+    Assert.assertEquals(21933376, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
+
+
+    // jobtracker
+    resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"JOBTRACKER");
+
+    // only ask for specific properties
+    Set<String> properties = new HashSet<String>();
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"threadsWaiting"));
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax"));
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed"));
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax"));
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"jobs_submitted"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"jobs_completed"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"jobs_failed"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"maps_launched"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"maps_completed"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/jobtracker", 
"maps_failed"));
+
+    request = PropertyHelper.getReadRequest(properties);
+
+    propertyProvider.populateResources(Collections.singleton(resource), 
request, null);
+
+    Assert.assertEquals(propertyProvider.getSpec("http", 
"domu-12-31-39-14-ee-b3.compute-1.internal", "50030", "/jmx"), 
streamProvider.getLastSpec());
+
+    // see test/resources/mapreduce_jobtracker_jmx.json for values
+    Assert.assertEquals(13, PropertyHelper.getProperties(resource).size());
+    Assert.assertEquals(59, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"threadsWaiting")));
+    Assert.assertEquals(1052770304, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
+    Assert.assertEquals(43580400, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
+    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
+    Assert.assertEquals(29602888, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
+    Assert.assertEquals(2, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "jobs_submitted")));
+    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "jobs_completed")));
+    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "jobs_failed")));
+    Assert.assertEquals(2, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "maps_launched")));
+    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "maps_completed")));
+    Assert.assertEquals(0, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/jobtracker",
 "maps_failed")));
+
+    
Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm",
 "gcCount")));
+
+    // tasktracker
+    resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"TASKTRACKER");
+
+    // only ask for specific properties
+    properties = new HashSet<String>();
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax"));
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed"));
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax"));
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed"));
+    
properties.add(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", 
"shuffle_exceptions_caught"));
+    
properties.add(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", 
"shuffle_failed_outputs"));
+    
properties.add(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", 
"shuffle_output_bytes"));
+    
properties.add(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput", 
"shuffle_success_outputs"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"maps_running"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"reduces_running"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"mapTaskSlots"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"reduceTaskSlots"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"failedDirs"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"tasks_completed"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"tasks_failed_timeout"));
+    properties.add(PropertyHelper.getPropertyId("metrics/mapred/tasktracker", 
"tasks_failed_ping"));
+
+    request = PropertyHelper.getReadRequest(properties);
+
+    propertyProvider.populateResources(Collections.singleton(resource), 
request, null);
+
+    Assert.assertEquals(propertyProvider.getSpec("http", 
"domu-12-31-39-14-ee-b3.compute-1.internal", "50060", "/jmx"), 
streamProvider.getLastSpec());
+
+    Assert.assertEquals(18, PropertyHelper.getProperties(resource).size());
+    Assert.assertEquals(954466304, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
+    Assert.assertEquals(18330984, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
+    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
+    Assert.assertEquals(24235104, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
+    Assert.assertEquals(0, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput",
 "shuffle_exceptions_caught")));
+    Assert.assertEquals(0, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput",
 "shuffle_failed_outputs")));
+    Assert.assertEquals(1841, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput",
 "shuffle_output_bytes")));
+    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/shuffleOutput",
 "shuffle_success_outputs")));
+    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "maps_running")));
+    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "reduces_running")));
+    Assert.assertEquals(4, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "mapTaskSlots")));
+    Assert.assertEquals(2, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "reduceTaskSlots")));
+    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "failedDirs")));
+    Assert.assertEquals(4, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "tasks_completed")));
+    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "tasks_failed_timeout")));
+    Assert.assertEquals(1, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/mapred/tasktracker",
 "tasks_failed_ping")));
+
+
+    
Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm",
 "gcCount")));
+
+    // hbase master
+    resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"HBASE_MASTER");
+    resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED");
+
+    // only ask for specific properties
+    properties = new HashSet<String>();
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax"));
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed"));
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax"));
+    properties.add(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed"));
+    properties.add(PropertyHelper.getPropertyId("metrics/load", 
"AverageLoad"));
+    request = PropertyHelper.getReadRequest(properties);
+
+    propertyProvider.populateResources(Collections.singleton(resource), 
request, null);
+
+    Assert.assertEquals(propertyProvider.getSpec("http", 
"domu-12-31-39-14-ee-b3.compute-1.internal", "60010", "/jmx"), 
streamProvider.getLastSpec());
+
+    Assert.assertEquals(8, PropertyHelper.getProperties(resource).size());
+    Assert.assertEquals(1069416448, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
+    Assert.assertEquals(4806976, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
+    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
+    Assert.assertEquals(28971240, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
+    Assert.assertEquals(3.0, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/load", 
"AverageLoad")));
+
+    
Assert.assertNull(resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm",
 "gcCount")));
+  }
+
+  @Test
+  public void testPopulateResources_singleProperty() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+    TestMetricsHostProvider metricsHostProvider = new 
TestMetricsHostProvider();
+
+    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
+        streamProvider,
+        hostProvider,
+        metricsHostProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"));
+
+    // namenode
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    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");
+
+    // only ask for one property
+    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, 
TemporalInfo>();
+    Request  request = 
PropertyHelper.getReadRequest(Collections.singleton("metrics/rpc/ReceivedBytes"),
 temporalInfoMap);
+
+    Assert.assertEquals(1, 
propertyProvider.populateResources(Collections.singleton(resource), request, 
null).size());
+
+    Assert.assertEquals(propertyProvider.getSpec("http", 
"domu-12-31-39-0e-34-e1.compute-1.internal", "50070", "/jmx"), 
streamProvider.getLastSpec());
+
+    // see test/resources/hdfs_namenode_jmx.json for values
+    Assert.assertEquals(13670605,  
resource.getPropertyValue("metrics/rpc/ReceivedBytes"));
+    
Assert.assertNull(resource.getPropertyValue("metrics/dfs/namenode/CreateFileOps"));
+  }
+
+  @Test
+  public void testPopulateResources_category() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(false);
+    TestMetricsHostProvider metricsHostProvider = new 
TestMetricsHostProvider();
+
+    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
+        streamProvider,
+        hostProvider,
+        metricsHostProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"));
+
+    // namenode
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    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
+    // only ask for one property
+    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, 
TemporalInfo>();
+    Request  request = 
PropertyHelper.getReadRequest(Collections.singleton("metrics/dfs"), 
temporalInfoMap);
+
+    Assert.assertEquals(1, 
propertyProvider.populateResources(Collections.singleton(resource), request, 
null).size());
+
+    
Assert.assertEquals(propertyProvider.getSpec("http","domu-12-31-39-0e-34-e1.compute-1.internal",
 "50070","/jmx"), streamProvider.getLastSpec());
+
+    // see test/resources/hdfs_namenode_jmx.json for values
+    Assert.assertEquals(184320,  
resource.getPropertyValue("metrics/dfs/FSNamesystem/CapacityUsed"));
+    Assert.assertEquals(21,  
resource.getPropertyValue("metrics/dfs/FSNamesystem/UnderReplicatedBlocks"));
+    Assert.assertNull(resource.getPropertyValue("metrics/rpc/ReceivedBytes"));
+  }
+
+  @Test
+  public void testPopulateResourcesWithUnknownPort() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(true);
+    TestMetricsHostProvider metricsHostProvider = new 
TestMetricsHostProvider();
+
+    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
+        streamProvider,
+        hostProvider,
+        metricsHostProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"));
+
+    // namenode
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    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");
+
+    // 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(propertyProvider.getSpec("http","domu-12-31-39-0e-34-e1.compute-1.internal",
 "50070","/jmx"), streamProvider.getLastSpec());
+
+    // see test/resources/hdfs_namenode_jmx.json for values
+    Assert.assertEquals(13670605,  
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", 
"ReceivedBytes")));
+    Assert.assertEquals(28,      
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/dfs/namenode", 
"CreateFileOps")));
+    Assert.assertEquals(1006632960, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
+    Assert.assertEquals(473433016, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
+    Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
+    Assert.assertEquals(23634400, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
+  }
+
+  @Test
+  public void testPopulateResourcesUnhealthyResource() throws Exception {
+    TestStreamProvider  streamProvider = new TestStreamProvider();
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(true);
+    TestMetricsHostProvider metricsHostProvider = new 
TestMetricsHostProvider();
+
+    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
+        streamProvider,
+        hostProvider,
+        metricsHostProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"));
+
+    // namenode
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    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, "INSTALLED");
+
+    // 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 that the stream provider was never called.
+    Assert.assertNull(streamProvider.getLastSpec());
+  }
+
+  @Test
+  public void testPopulateResourcesMany() throws Exception {
+    // Set the provider to take 50 millis to return the JMX values
+    TestStreamProvider  streamProvider = new TestStreamProvider(50L);
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(true);
+    TestMetricsHostProvider metricsHostProvider = new 
TestMetricsHostProvider();
+    Set<Resource> resources = new HashSet<Resource>();
+
+    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
+        streamProvider,
+        hostProvider,
+        metricsHostProvider,
+        PropertyHelper.getPropertyId("HostRoles", "cluster_name"),
+        PropertyHelper.getPropertyId("HostRoles", "host_name"),
+        PropertyHelper.getPropertyId("HostRoles", "component_name"),
+        PropertyHelper.getPropertyId("HostRoles", "state"));
+
+    for (int i = 0; i < NUMBER_OF_RESOURCES; ++i) {
+      // datanode
+      Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+      resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
+      resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"DATANODE");
+      resource.setProperty("unique_id", i);
+
+      resources.add(resource);
+    }
+
+    // request with an empty set should get all supported properties
+    Request request = 
PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    Set<Resource> resourceSet = propertyProvider.populateResources(resources, 
request, null);
+
+    Assert.assertEquals(NUMBER_OF_RESOURCES, resourceSet.size());
+
+    for (Resource resource : resourceSet) {
+      // see test/resources/hdfs_datanode_jmx.json for values
+      Assert.assertEquals(856,  
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/rpc", 
"ReceivedBytes")));
+      Assert.assertEquals(954466304, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryMax")));
+      Assert.assertEquals(9772616, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"HeapMemoryUsed")));
+      Assert.assertEquals(136314880, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryMax")));
+      Assert.assertEquals(21933376, 
resource.getPropertyValue(PropertyHelper.getPropertyId("metrics/jvm", 
"NonHeapMemoryUsed")));
+    }
+  }
+
+  @Test
+  public void testPopulateResourcesTimeout() throws Exception {
+    // Set the provider to take 100 millis to return the JMX values
+    TestStreamProvider  streamProvider = new TestStreamProvider(100L);
+    TestJMXHostProvider hostProvider = new TestJMXHostProvider(true);
+    TestMetricsHostProvider metricsHostProvider = new 
TestMetricsHostProvider();
+    Set<Resource> resources = new HashSet<Resource>();
+
+    JMXPropertyProvider propertyProvider = new JMXPropertyProvider(
+        PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent),
+        streamProvider,
+        hostProvider,
+        metricsHostProvider,
+        "HostRoles/cluster_name",
+        "HostRoles/host_name",
+        "HostRoles/component_name",
+        "HostRoles/state");
+
+    // set the provider timeout to 50 millis
+    propertyProvider.setPopulateTimeout(50L);
+
+    // datanode
+    Resource resource = new ResourceImpl(Resource.Type.HostComponent);
+
+    resource.setProperty(HOST_COMPONENT_HOST_NAME_PROPERTY_ID, 
"domu-12-31-39-14-ee-b3.compute-1.internal");
+    resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, 
"DATANODE");
+
+    resources.add(resource);
+
+    // request with an empty set should get all supported properties
+    Request request = 
PropertyHelper.getReadRequest(Collections.<String>emptySet());
+
+    Set<Resource> resourceSet = propertyProvider.populateResources(resources, 
request, null);
+
+    // make sure that the thread running the stream provider has completed
+    Thread.sleep(150L);
+
+    Assert.assertEquals(0, resourceSet.size());
+
+    // assert that properties never get set on the resource
+    Assert.assertNull(resource.getPropertyValue("metrics/rpc/ReceivedBytes"));
+    Assert.assertNull(resource.getPropertyValue("metrics/jvm/HeapMemoryMax"));
+    Assert.assertNull(resource.getPropertyValue("metrics/jvm/HeapMemoryUsed"));
+    
Assert.assertNull(resource.getPropertyValue("metrics/jvm/NonHeapMemoryMax"));
+    
Assert.assertNull(resource.getPropertyValue("metrics/jvm/NonHeapMemoryUsed"));
+  }
+
+  public static class TestJMXHostProvider implements JMXHostProvider {
+    private final boolean unknownPort;
+
+    public TestJMXHostProvider(boolean unknownPort) {
+      this.unknownPort = unknownPort;
+    }
+
+    @Override
+    public Set<String> getHostNames(String clusterName, String componentName) {
+      return null;
+    }
+
+    @Override
+    public String getPort(String clusterName, String componentName) throws
+        SystemException {
+
+      if (unknownPort) {
+        return null;
+      }
+
+      if (componentName.equals("NAMENODE"))
+        return "50070";
+      else if (componentName.equals("DATANODE"))
+        return "50075";
+      else if (componentName.equals("JOBTRACKER"))
+        return "50030";
+      else if (componentName.equals("TASKTRACKER"))
+        return "50060";
+      else if (componentName.equals("HBASE_MASTER"))
+        return null == clusterName ? "60010" : "60011";
+      else  if (componentName.equals("JOURNALNODE"))
+        return "8480";
+      else  if (componentName.equals("STORM_REST_API"))
+        return "8745";
+      else
+        return null;
+    }
+
+    @Override
+    public String getJMXProtocol(String clusterName, String componentName) {
+      return "http";
+    }
+
+  }
+
+  public static class TestMetricsHostProvider implements MetricsHostProvider {
+
+    @Override
+    public String getHostName(String clusterName, String componentName) {
+      return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/cc4dfe35/ambari-server/src/test/resources/stacks/HDP/2.1.1/services/STORM/metrics.json
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/resources/stacks/HDP/2.1.1/services/STORM/metrics.json 
b/ambari-server/src/test/resources/stacks/HDP/2.1.1/services/STORM/metrics.json
index 59bec39..905bbb9 100644
--- 
a/ambari-server/src/test/resources/stacks/HDP/2.1.1/services/STORM/metrics.json
+++ 
b/ambari-server/src/test/resources/stacks/HDP/2.1.1/services/STORM/metrics.json
@@ -1,99 +1,112 @@
 {
-    "STORM_REST_API": {
-        "Component": [
-            {
-                "type": "jmx",
-                "metrics": {
-                    "metrics/api/cluster/summary/tasks.total": {
-                        "metric": "tasks.total",
-                        "pointInTime": true,
-                        "temporal": false
-                    },
-                    "metrics/api/cluster/summary/slots.total": {
-                      "metric": "slots.total",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/slots.free": {
-                      "metric": "slots.free",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/supervisors": {
-                      "metric": "supervisors",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/executors.total": {
-                      "metric": "executors.total",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/slots.used": {
-                      "metric": "slots.used",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/topologies": {
-                      "metric": "topologies",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/nimbus.uptime": {
-                      "metric": "nimbus.uptime",
-                      "pointInTime": true,
-                      "temporal": false
-                    }
-                }
-            }
-        ],
-        "HostComponent": [
-            {
-                "type": "jmx",
-                "metrics": {
-                    "metrics/api/cluster/summary/tasks.total": {
-                      "metric": "tasks.total",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/slots.total": {
-                      "metric": "slots.total",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/slots.free": {
-                      "metric": "slots.free",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/supervisors": {
-                      "metric": "supervisors",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/executors.total": {
-                      "metric": "executors.total",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/slots.used": {
-                      "metric": "slots.used",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/topologies": {
-                      "metric": "topologies",
-                      "pointInTime": true,
-                      "temporal": false
-                    },
-                    "metrics/api/cluster/summary/nimbus.uptime": {
-                      "metric": "nimbus.uptime",
-                      "pointInTime": true,
-                      "temporal": false
-                    }
-                }
-            }
-
-        ]
-    }
-}
+  "STORM_REST_API": {
+    "Component": [
+      {
+        "type": 
"org.apache.ambari.server.controller.metrics.RestMetricsPropertyProvider",
+        "properties" : {
+          "default_port": "8745",
+          "port_config_type": "storm-site",
+          "port_property_name": "storm.port",
+          "protocol": "http"
+        },
+        "metrics": {
+          "metrics/api/cluster/summary/tasks.total":
+          {
+            "metric": "/api/cluster/summary##tasks.total",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/slots.total": {
+            "metric": "/api/cluster/summary##slots.total",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/slots.free": {
+            "metric": "/api/cluster/summary##slots.free",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/supervisors": {
+            "metric": "/api/cluster/summary##supervisors",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/executors.total": {
+            "metric": "/api/cluster/summary##executors.total",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/slots.used": {
+            "metric": "/api/cluster/summary##slots.used",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/topologies": {
+            "metric": "/api/cluster/summary##topologies",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/nimbus.uptime": {
+            "metric": "/api/cluster/summary##nimbus.uptime",
+            "pointInTime": true,
+            "temporal": false
+          }
+        }
+      }
+    ],
+    "HostComponent": [
+      {
+        "type": 
"org.apache.ambari.server.controller.metrics.RestMetricsPropertyProvider",
+        "properties" : {
+          "default_port": "8745",
+          "port_config_type": "storm-site",
+          "port_property_name": "storm.port",
+          "protocol": "http"
+        },
+        "metrics": {
+          "metrics/api/cluster/summary/tasks.total":
+          {
+            "metric": "/api/cluster/summary##tasks.total",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/slots.total": {
+            "metric": "/api/cluster/summary##slots.total",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/slots.free": {
+            "metric": "/api/cluster/summary##slots.free",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/supervisors": {
+            "metric": "/api/cluster/summary##supervisors",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/executors.total": {
+            "metric": "/api/cluster/summary##executors.total",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/slots.used": {
+            "metric": "/api/cluster/summary##slots.used",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/topologies": {
+            "metric": "/api/cluster/summary##topologies",
+            "pointInTime": true,
+            "temporal": false
+          },
+          "metrics/api/cluster/summary/nimbus.uptime": {
+            "metric": "/api/cluster/summary##nimbus.uptime",
+            "pointInTime": true,
+            "temporal": false
+          }
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file

Reply via email to