You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by js...@apache.org on 2014/11/10 22:32:06 UTC

[07/11] ambari git commit: AMBARI-7175. Add explicit stack service inheritance

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fc7adec/ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java
deleted file mode 100644
index f05aab5..0000000
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/util/StackExtensionHelperTest.java
+++ /dev/null
@@ -1,792 +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.api.util;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-import org.apache.ambari.server.api.services.AmbariMetaInfo;
-import org.apache.ambari.server.metadata.ActionMetadata;
-import org.apache.ambari.server.state.*;
-import org.apache.ambari.server.state.stack.ConfigurationXml;
-import org.junit.Test;
-import org.xml.sax.SAXException;
-
-import javax.xml.bind.JAXBException;
-import javax.xml.namespace.QName;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPathExpressionException;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.*;
-
-import static org.easymock.EasyMock.*;
-import static org.junit.Assert.*;
-
-public class StackExtensionHelperTest {
-
-  private final String stackRootStr = "./src/test/resources/stacks/".
-      replaceAll("/", File.separator);
-
-  private Injector injector = Guice.createInjector(new MockModule());
-  
-  
-  public class MockModule extends AbstractModule {
-    @Override
-    protected void configure() {
-      bind(ActionMetadata.class);
-    }
-  }
-
-  /**
-  * Checks than service metainfo is parsed correctly both for ver 1 services
-  * and for ver 2 services
-  */
-  @Test
-  public void testPopulateServicesForStack() throws Exception {
-    File stackRoot = new File(stackRootStr);
-    StackInfo stackInfo = new StackInfo();
-    stackInfo.setName("HDP");
-    stackInfo.setVersion("2.0.7");
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    helper.populateServicesForStack(stackInfo);
-    List<ServiceInfo> services =  stackInfo.getServices();
-    assertEquals(8, services.size());
-    for (ServiceInfo serviceInfo : services) {
-      if (serviceInfo.getName().equals("HIVE")) {
-        // Check old-style service
-        assertEquals("HIVE", serviceInfo.getName());
-        assertEquals("Hive", serviceInfo.getDisplayName());
-        assertEquals("2.0", serviceInfo.getSchemaVersion());
-        assertTrue(serviceInfo.getComment().startsWith("Data warehouse system"));
-        assertEquals("0.11.0.2.0.5.0", serviceInfo.getVersion());
-        // Check some component definitions
-        List<ComponentInfo> components = serviceInfo.getComponents();
-        assertEquals("HIVE_METASTORE", components.get(0).getName());
-        assertEquals("Hive Metastore", components.get(0).getDisplayName());
-        assertEquals("MASTER", components.get(0).getCategory());
-        List<PropertyInfo> properties = serviceInfo.getProperties();
-        // Check some property
-        assertEquals(37, properties.size());
-        boolean found = false;
-        for (PropertyInfo property : properties) {
-          if (property.getName().equals("javax.jdo.option.ConnectionDriverName")) {
-            assertEquals("com.mysql.jdbc.Driver", property.getValue());
-            assertEquals("hive-site.xml",
-                    property.getFilename());
-            assertEquals(false, property.isDeleted());
-            found = true;
-          }
-        }
-        assertTrue("Property not found in a list of properties", found);
-        // Check config dependencies
-        List<String> configDependencies = serviceInfo.getConfigDependencies();
-        assertEquals(2, configDependencies.size());
-        assertEquals("hive-site", configDependencies.get(1));
-      } else if (serviceInfo.getName().equals("HBASE")) {
-        assertEquals("HBASE", serviceInfo.getName());
-        assertEquals("HDP/2.0.7/services/HBASE/package",
-                serviceInfo.getServicePackageFolder());
-        assertEquals("2.0", serviceInfo.getSchemaVersion());
-        assertTrue(serviceInfo.getComment().startsWith("Non-relational distr"));
-        assertEquals("0.96.0.2.0.6.0", serviceInfo.getVersion());
-        // Check some component definitions
-        List<ComponentInfo> components = serviceInfo.getComponents();
-        assertTrue(components.size() == 3);
-        ComponentInfo firstComponent = components.get(0);
-        assertEquals("HBASE_MASTER", firstComponent.getName());
-        assertEquals("MASTER", firstComponent.getCategory());
-        // Check command script for component
-        assertEquals("scripts/hbase_master.py",
-                firstComponent.getCommandScript().getScript());
-        assertEquals(CommandScriptDefinition.Type.PYTHON,
-                firstComponent.getCommandScript().getScriptType());
-        assertEquals(777,
-                firstComponent.getCommandScript().getTimeout());
-        // Check custom commands for component
-        List<CustomCommandDefinition> customCommands =
-                firstComponent.getCustomCommands();
-        assertEquals(2, customCommands.size());
-        assertEquals("RESTART", customCommands.get(0).getName());
-        assertTrue(firstComponent.isCustomCommand("RESTART"));
-        assertEquals("scripts/hbase_master_restart.py",
-                customCommands.get(0).getCommandScript().getScript());
-        assertEquals(CommandScriptDefinition.Type.PYTHON,
-                customCommands.get(0).getCommandScript().getScriptType());
-        assertEquals(888,
-                customCommands.get(0).getCommandScript().getTimeout());
-        // Check all parsed os specifics
-        Map<String,ServiceOsSpecific> specifics = serviceInfo.getOsSpecifics();
-        assertTrue(specifics.size() == 2);
-        ServiceOsSpecific anyOs = specifics.get(AmbariMetaInfo.ANY_OS);
-        assertEquals(AmbariMetaInfo.ANY_OS, anyOs.getOsFamily());
-        assertEquals("wget", anyOs.getPackages().get(0).getName());
-
-        // Test default timeout value
-        ComponentInfo secondComponent = components.get(1);
-        assertEquals("HBASE_REGIONSERVER", secondComponent.getName());
-        assertEquals(0,
-                secondComponent.getCommandScript().getTimeout());
-
-        ServiceOsSpecific c6Os = specifics.get("centos6");
-        assertEquals("centos6", c6Os.getOsFamily());
-        assertEquals("hbase", c6Os.getPackages().get(0).getName());
-        assertEquals("http://something.com/centos6/2.x/updates/1",
-                c6Os.getRepo().getBaseUrl());
-        assertEquals("Custom-repo-1",
-                c6Os.getRepo().getRepoId());
-        assertEquals("Custom-repo",
-                c6Os.getRepo().getRepoName());
-        // Check custom commands for service
-        assertTrue(serviceInfo.getCustomCommands().size() == 1);
-        CustomCommandDefinition customCommand =
-                serviceInfo.getCustomCommands().get(0);
-        assertEquals("SERVICE_VALIDATION", customCommand.getName());
-        assertEquals("scripts/hbase_validation.py",
-                customCommand.getCommandScript().getScript());
-        assertEquals(CommandScriptDefinition.Type.PYTHON,
-                customCommand.getCommandScript().getScriptType());
-        assertEquals(300, customCommand.getCommandScript().getTimeout());
-        // Check command script for service
-        CommandScriptDefinition serviceScriptDefinition = serviceInfo.getCommandScript();
-        assertEquals("scripts/service_check.py", serviceScriptDefinition.getScript());
-        assertEquals(CommandScriptDefinition.Type.PYTHON,
-                serviceScriptDefinition.getScriptType());
-        assertEquals(50, serviceScriptDefinition.getTimeout());
-        // Check some property
-        List<PropertyInfo> properties = serviceInfo.getProperties();
-        List<PropertyInfo> emptyValueProperties = new ArrayList<PropertyInfo>();
-        for (PropertyInfo propertyInfo : properties) {
-          if (propertyInfo.getValue().isEmpty()) {
-            emptyValueProperties.add(propertyInfo);
-          }
-        }
-        assertEquals(28, emptyValueProperties.size());
-        assertEquals(68, properties.size());
-        boolean foundHBaseClusterDistributed = false;
-        boolean foundHBaseRegionServerXmnMax = false;
-        boolean foundHBaseRegionServerXmnRatio = false;
-        for (PropertyInfo property : properties) {
-          if (property.getName().equals("hbase.cluster.distributed")) {
-            assertEquals("true",
-                    property.getValue());
-            assertTrue(property.getDescription().startsWith("The mode the"));
-            assertEquals("hbase-site.xml",
-                    property.getFilename());
-            foundHBaseClusterDistributed = true;
-          } else if (property.getName().equals("hbase_regionserver_xmn_max")) {
-            assertEquals("512", property.getValue());
-            assertEquals("global.xml",
-                property.getFilename());
-            foundHBaseRegionServerXmnMax = true;
-          } else if (property.getName().equals("hbase_regionserver_xmn_ratio")) {
-            assertEquals("global.xml",
-                property.getFilename());
-            assertEquals("0.2", property.getValue());
-            foundHBaseRegionServerXmnRatio = true;
-          }
-        }
-
-        assertTrue("Property hbase.cluster.distributed not found in a list of properties",
-            foundHBaseClusterDistributed);
-        assertTrue("Property hbase_regionserver_xmn_max not found in a list of properties",
-            foundHBaseRegionServerXmnMax);
-        assertTrue("Property hbase_regionserver_xmn_ratio not found in a list of properties",
-            foundHBaseRegionServerXmnRatio);
-
-        List<String> configDependencies = serviceInfo.getConfigDependencies();
-        assertEquals(3, configDependencies.size());
-        assertEquals("global", configDependencies.get(0));
-        assertEquals("hbase-policy", configDependencies.get(1));
-        assertEquals("hbase-site", configDependencies.get(2));
-      } else if(serviceInfo.getName().equals("ZOOKEEPER")) {
-        assertTrue(serviceInfo.isRestartRequiredAfterChange());
-      } else {
-        if (!serviceInfo.getName().equals("YARN") &&
-            !serviceInfo.getName().equals("HDFS") &&
-            !serviceInfo.getName().equals("MAPREDUCE2") &&
-            !serviceInfo.getName().equals("NAGIOS") &&
-            !serviceInfo.getName().equals("SQOOP")) {
-          fail("Unknown service");
-        }
-      }
-    }
-  }
-
-  @Test
-  public void testConfigDependenciesInheritance() throws Exception{
-    File stackRoot = new File(stackRootStr);
-    StackInfo stackInfo = new StackInfo();
-    stackInfo.setName("HDP");
-    stackInfo.setVersion("2.0.6");
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    helper.populateServicesForStack(stackInfo);
-    helper.fillInfo();
-    List<ServiceInfo> allServices = helper.getAllApplicableServices(stackInfo);
-    for (ServiceInfo serviceInfo : allServices) {
-      if (serviceInfo.getName().equals("HDFS")) {
-        assertEquals(5, serviceInfo.getConfigDependencies().size());
-        assertEquals(4, serviceInfo.getConfigTypes().size());
-        assertTrue(serviceInfo.getConfigDependencies().contains("core-site"));
-        assertTrue(serviceInfo.getConfigDependencies().contains("global"));
-        assertTrue(serviceInfo.getConfigDependencies().contains("hdfs-site"));
-        assertTrue(serviceInfo.getConfigDependencies().contains("hdfs-log4j"));
-        assertTrue(serviceInfo.getConfigDependencies().contains("hadoop-policy"));
-        assertTrue(Boolean.valueOf(serviceInfo.getConfigTypes().get("core-site").get("supports").get("final")));
-        assertFalse(Boolean.valueOf(serviceInfo.getConfigTypes().get("global").get("supports").get("final")));
-      } else if (serviceInfo.getName().equals("WEBHCAT")) {
-        assertEquals(1, serviceInfo.getConfigDependencies().size());
-        assertEquals(1, serviceInfo.getConfigTypes().size());
-        assertTrue(serviceInfo.getConfigDependencies().contains("webhcat-site"));
-        assertTrue(Boolean.valueOf(serviceInfo.getConfigTypes().get("webhcat-site").get("supports").get("final")));
-      }
-    }
-  }
-
-  @Test
-  public void testClientConfigFilesInheritance() throws Exception{
-    File stackRoot = new File(stackRootStr);
-    StackInfo stackInfo = new StackInfo();
-    stackInfo.setName("HDP");
-    stackInfo.setVersion("2.0.6");
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    helper.populateServicesForStack(stackInfo);
-    helper.fillInfo();
-    List<ServiceInfo> allServices = helper.getAllApplicableServices(stackInfo);
-    for (ServiceInfo serviceInfo : allServices) {
-      if (serviceInfo.getName().equals("ZOOKEEPER")) {
-        List<ComponentInfo> components = serviceInfo.getComponents();
-        assertTrue(components.size() == 2);
-        ComponentInfo componentInfo = components.get(1);
-        List<ClientConfigFileDefinition> clientConfigs = componentInfo.getClientConfigFiles();
-        assertEquals(2,clientConfigs.size());
-        assertEquals("zookeeper-env",clientConfigs.get(0).getDictionaryName());
-        assertEquals("zookeeper-env.sh",clientConfigs.get(0).getFileName());
-        assertEquals("env",clientConfigs.get(0).getType());
-        assertEquals("zookeeper-log4j",clientConfigs.get(1).getDictionaryName());
-        assertEquals("log4j.properties",clientConfigs.get(1).getFileName());
-        assertEquals("env",clientConfigs.get(1).getType());
-      }
-    }
-  }
-
-  @Test
-  public void testMonitoringServicePropertyInheritance() throws Exception{
-    File stackRoot = new File(stackRootStr);
-    StackInfo stackInfo = new StackInfo();
-    stackInfo.setName("HDP");
-    stackInfo.setVersion("2.0.7");
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    helper.populateServicesForStack(stackInfo);
-    helper.fillInfo();
-    List<ServiceInfo> allServices = helper.getAllApplicableServices(stackInfo);
-    assertEquals(13, allServices.size());
-    for (ServiceInfo serviceInfo : allServices) {
-      if (serviceInfo.getName().equals("NAGIOS")) {
-        assertTrue(serviceInfo.isMonitoringService());
-      } else {
-        assertNull(serviceInfo.isMonitoringService());
-      }
-    }
-  }
-
-  @Test
-  public void getSchemaVersion() throws Exception {
-    File stackRoot = new File(stackRootStr);
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    File legacyMetaInfoFile = new File("./src/test/resources/stacks/HDP/2.0.7/" +
-            "services/HIVE/metainfo.xml".replaceAll("/", File.separator));
-    String version = helper.getSchemaVersion(legacyMetaInfoFile);
-    assertEquals("2.0", version);
-
-    File v2MetaInfoFile = new File("./src/test/resources/stacks/HDP/2.0.7/" +
-            "services/HBASE/metainfo.xml".replaceAll("/", File.separator));
-    version = helper.getSchemaVersion(v2MetaInfoFile);
-    assertEquals("2.0", version);
-  }
-  
-  public StackExtensionHelper getStackExtensionHelper() {
-    File stackRoot = new File(stackRootStr);    
-    return new StackExtensionHelper(injector, stackRoot);
-  }
-  
-  public ServiceInfo getServiceFromStack(StackExtensionHelper helper, String stackName, String stackVersion, String serviceName) throws XPathExpressionException, ParserConfigurationException, SAXException, IOException, JAXBException {
-    StackInfo stackInfo = new StackInfo();
-    stackInfo.setName(stackName);
-    stackInfo.setVersion(stackVersion);
-    
-    helper.populateServicesForStack(stackInfo);
-    
-    for(ServiceInfo service:stackInfo.getServices()) {
-      if(service.getName().equals(serviceName)) {
-        return service;
-      }
-    }
-    return null;
-  }
-
-  private void addToPropertyMap(Map<String, Map<String, Map<String, String>>> configTypes,String configType,
-      String keyword, String attributeName, String value) {
-    if(!configTypes.containsKey(configType)) {
-      configTypes.put(configType, new HashMap<String, Map<String, String>>()); 
-    }
-    Map<String, Map<String, String>> config = configTypes.get(configType);
-    if(!config.containsKey(keyword)) {
-      config.put(keyword, new HashMap<String, String>());
-    }
-    Map<String, String> supports = config.get(keyword);
-    supports.put(attributeName, value);    
-  }
-
-  /**
-   * This test ensures the service status check is added into the action metadata when
-   * the stack has no parent and is the only stack in the stack family
-   * @throws Exception
-   */
-  @Test
-  public void testGetServiceInfoFromSingleStack() throws Exception {
-    File stackRoot = new File("./src/test/resources/single_stack".replace("/", File.separator));
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    helper.fillInfo();
-    List<StackInfo> stackInfoList = helper.getAllAvailableStacks();
-    assertEquals(1, stackInfoList.size());
-
-    List<ServiceInfo> serviceInfoList = helper.getAllApplicableServices(stackInfoList.get(0));
-    for(ServiceInfo serviceInfo: serviceInfoList) {
-      if ("HDFS".equalsIgnoreCase(serviceInfo.getName())) {
-        ActionMetadata actionMetadata = injector.getInstance(ActionMetadata.class);
-        String hdfsStatusCheckCmd = actionMetadata.getServiceCheckAction("HDFS");
-        assertEquals("HDFS_SERVICE_CHECK", hdfsStatusCheckCmd);
-        break;
-      }
-    }
-  }
-
-  @Test
-  public void testPopulateConfigTypes() throws XPathExpressionException, ParserConfigurationException, SAXException, IOException, JAXBException {
-    StackExtensionHelper helper = getStackExtensionHelper();
-    ServiceInfo serviceInfo = getServiceFromStack(helper, "HDP", "2.0.7", "HDFS");
-    
-    
-    Map<String, Map<String, Map<String, String>>> expectedConfigTypes = new HashMap<String, Map<String, Map<String, String>>>();
-    addToPropertyMap(expectedConfigTypes, "global", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "true");
-    addToPropertyMap(expectedConfigTypes, "global", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "global", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hdfs-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hdfs-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hdfs-site", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hadoop-policy", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hadoop-policy", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hadoop-policy", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "core-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "core-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "core-site", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    
-    Map<String, Map<String, Map<String, String>>> configTypes = serviceInfo.getConfigTypes();
-    assertEquals(4, configTypes.size());
-    assertEquals(expectedConfigTypes, configTypes);
-  }
-
-  @Test
-  public void testAddConfigTypeProperty_configTypesIsNull() {
-    // init
-    File stackRoot = new File(stackRootStr);
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    ServiceInfo serviceInfo = createMock(ServiceInfo.class);
-
-    // expectations
-    expect(serviceInfo.getConfigTypes()).andReturn(null);
-    replay(serviceInfo);
-
-    // eval
-    helper.addConfigTypeProperty(serviceInfo.getConfigTypes(), "dep", "group", "key", "value");
-
-    // verification
-    verify(serviceInfo);
-  }
-
-  @Test
-  public void testAddConfigTypeProperty_groupDoesNotExist() {
-    // init
-    File stackRoot = new File(stackRootStr);
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    ServiceInfo serviceInfo = new ServiceInfo();
-    Map<String, Map<String, Map<String, String>>> configTypes = new HashMap<String, Map<String, Map<String, String>>>();
-    Map<String, Map<String, String>> groupMap = new HashMap<String, Map<String, String>>();
-    configTypes.put("dep", groupMap);
-    serviceInfo.setConfigTypes(configTypes);
-
-    // eval
-    helper.addConfigTypeProperty(serviceInfo.getConfigTypes(), "dep", "group", "key", "value");
-
-    // assert
-    configTypes = serviceInfo.getConfigTypes();
-    assertEquals(1, configTypes.size());
-    assertTrue(configTypes.containsKey("dep"));
-    Map<String, Map<String, String>> configType = configTypes.get("dep");
-    assertTrue(configType.containsKey("group"));
-    Map<String, String> group = configType.get("group");
-    assertEquals(1, group.size());
-    assertTrue(group.containsKey("key"));
-    assertEquals("value", group.get("key"));
-  }
-
-  @Test
-  public void testAddConfigTypeProperty_typeDoesNotExist() {
-    // init
-    File stackRoot = new File(stackRootStr);
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    ServiceInfo serviceInfo = new ServiceInfo();
-    Map<String, Map<String, Map<String, String>>> configTypes = new HashMap<String, Map<String, Map<String, String>>>();
-    Map<String, Map<String, String>> groupMap = new HashMap<String, Map<String, String>>();
-    configTypes.put("dep", groupMap);
-    serviceInfo.setConfigTypes(configTypes);
-
-    // eval
-    helper.addConfigTypeProperty(serviceInfo.getConfigTypes(), "no_such_dep", "group", "key", "value");
-
-    // assert
-    configTypes = serviceInfo.getConfigTypes();
-    assertEquals(1, configTypes.size());
-    assertFalse(configTypes.containsKey("no_such_dep"));
-    assertTrue(configTypes.containsKey("dep"));
-    Map<String, Map<String, String>> configType = configTypes.get("dep");
-    assertEquals(0, configType.size());
-  }
-
-  @Test
-  public void testAddConfigTypeProperty_groupExist() {
-    // init
-    File stackRoot = new File(stackRootStr);
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    ServiceInfo serviceInfo = new ServiceInfo();
-    Map<String, Map<String, Map<String, String>>> configTypes = new HashMap<String, Map<String, Map<String, String>>>();
-    Map<String, Map<String, String>> groupMap = new HashMap<String, Map<String, String>>();
-    Map<String, String> propertiesMap = new HashMap<String, String>();
-    groupMap.put("group", propertiesMap);
-    configTypes.put("dep", groupMap);
-    serviceInfo.setConfigTypes(configTypes);
-
-    // eval
-    helper.addConfigTypeProperty(serviceInfo.getConfigTypes(), "dep", "group", "key", "value");
-
-    // assert
-    configTypes = serviceInfo.getConfigTypes();
-    assertEquals(1, configTypes.size());
-    assertTrue(configTypes.containsKey("dep"));
-    Map<String, Map<String, String>> configType = configTypes.get("dep");
-    assertTrue(configType.containsKey("group"));
-    Map<String, String> group = configType.get("group");
-    assertTrue(group.containsKey("key"));
-    assertEquals("value", group.get("key"));
-  }
-
-  @Test
-  public void testPopulateServiceProperties_noSupportsFinalFlag() throws Exception {
-    StackExtensionHelper helper = getStackExtensionHelper();
-    ServiceInfo serviceInfo = getServiceFromStack(helper, "HDP", "2.0.7", "YARN");
-    
-    File configFile = new File(stackRootStr
-        + "HDP/2.0.7/services/YARN/configuration/yarn-site.xml".replaceAll("/", File.separator));
-    
-    helper.populateServiceProperties(configFile, serviceInfo);
-    
-    Map<String, Map<String, Map<String, String>>> expectedConfigTypes = new HashMap<String, Map<String, Map<String, String>>>();
-    addToPropertyMap(expectedConfigTypes, "yarn-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "yarn-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "true");
-    addToPropertyMap(expectedConfigTypes, "yarn-site", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "true");
-    
-    assertEquals(expectedConfigTypes, serviceInfo.getConfigTypes());
-  }
-
-  @Test
-  public void testPopulateServiceProperties_supportsFinalTrue() throws Exception {
-    StackExtensionHelper helper = getStackExtensionHelper();
-    ServiceInfo serviceInfo = getServiceFromStack(helper, "HDP", "2.0.7", "HDFS");
-    
-    File configFile = new File(stackRootStr
-        + "HDP/2.0.7/services/HDFS/configuration/global.xml".replaceAll("/", File.separator));
-    helper.populateServiceProperties(configFile, serviceInfo);
-    
-    Map<String, Map<String, Map<String, String>>> expectedConfigTypes = new HashMap<String, Map<String, Map<String, String>>>();
-    addToPropertyMap(expectedConfigTypes, "global", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "true");
-    addToPropertyMap(expectedConfigTypes, "global", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "global", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hdfs-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hdfs-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hdfs-site", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hadoop-policy", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hadoop-policy", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hadoop-policy", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "core-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "core-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "core-site", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    
-    assertEquals(expectedConfigTypes, serviceInfo.getConfigTypes());
-  }
-
-  @Test
-  public void testPopulateServiceProperties_supportsFinalFalse() throws Exception {
-    StackExtensionHelper helper = getStackExtensionHelper();
-    ServiceInfo serviceInfo = getServiceFromStack(helper, "HDP", "2.0.7", "HDFS");
-    File configFile = new File(stackRootStr
-        + "HDP/2.0.7/services/YARN/configuration/yarn-site.xml".replaceAll("/", File.separator));
-    helper.populateServiceProperties(configFile, serviceInfo);
-    
-    Map<String, Map<String, Map<String, String>>> expectedConfigTypes = new HashMap<String, Map<String, Map<String, String>>>();
-    addToPropertyMap(expectedConfigTypes, "global", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "true");
-    addToPropertyMap(expectedConfigTypes, "global", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "global", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hdfs-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hdfs-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hdfs-site", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hadoop-policy", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hadoop-policy", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "hadoop-policy", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "core-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "core-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "core-site", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "yarn-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.FINAL.getPropertyName(), "false");
-    addToPropertyMap(expectedConfigTypes, "yarn-site", StackExtensionHelper.Supports.KEYWORD, 
-        StackExtensionHelper.Supports.ADDING_FORBIDDEN.getPropertyName(), "true");
-    addToPropertyMap(expectedConfigTypes, "yarn-site", StackExtensionHelper.Supports.KEYWORD,
-        StackExtensionHelper.Supports.DO_NOT_EXTEND.getPropertyName(), "true");
-    
-    assertEquals(expectedConfigTypes, serviceInfo.getConfigTypes());
-  }
-
-  @Test
-  public void testPopulateServiceProperties_supportsFinalWrongType() throws Exception {
-    // init
-    File stackRoot = new File(stackRootStr);
-    StackExtensionHelper helper = createMockBuilder(StackExtensionHelper.class).addMockedMethod("addConfigTypeProperty")
-        .withConstructor(injector, stackRoot).createMock();
-    File config = new File("./src/test/resources/bad-stacks/HDP/0.1/services/YARN/configuration/yarn-site.xml"
-        .replaceAll("/", File.separator));
-    ServiceInfo serviceInfo = createNiceMock(ServiceInfo.class);
-    List<PropertyInfo> properties = createNiceMock(List.class);
-
-    // expectations
-    expect(serviceInfo.getConfigTypes()).andReturn(new HashMap<String, Map<String, Map<String, String>>>()).times(2);
-    expect(serviceInfo.getProperties()).andReturn(properties).times(1);
-    expect(properties.addAll((Collection) anyObject())).andReturn(true).times(1);    
-    replay(properties, serviceInfo);
-
-    // eval
-    helper.populateServiceProperties(config, serviceInfo);
-
-    // verification
-    verify(properties, serviceInfo);
-  }
-
-  @Test
-  public void testPopulateServiceProperties_configTypesIsNull() throws Exception {
-    // init
-    File stackRoot = new File(stackRootStr);
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    File config = new File(stackRootStr
-        + "HDP/2.1.1/services/PIG/configuration/pig-properties.xml".replaceAll("/", File.separator));
-    ServiceInfo serviceInfo = createNiceMock(ServiceInfo.class);
-    List<PropertyInfo> properties = createMock(List.class);
-
-    // expectations
-    expect(serviceInfo.getConfigTypes()).andReturn(new HashMap<String, Map<String, Map<String, String>>>()).times(2);
-    expect(serviceInfo.getProperties()).andReturn(properties).times(1);
-    expect(properties.addAll((Collection) anyObject())).andReturn(true).times(1);
-    replay(properties);
-    replay(serviceInfo);
-
-    // eval
-    helper.populateServiceProperties(config, serviceInfo);
-
-    // verification
-    verify(properties, serviceInfo);
-  }
-
-  @Test
-  public void testUnmarshallConfigurationXml() throws Exception {
-    File configFile = new File("./src/test/resources/bad-stacks/HDP/0.1/services/YARN/configuration/capacity-scheduler.xml");
-    ConfigurationXml config = StackExtensionHelper.unmarshal(ConfigurationXml.class, configFile);
-    Map<QName, String> attributes = config.getAttributes();
-    List<PropertyInfo> properties = config.getProperties();
-
-    // attributes verification
-    assertEquals(2, attributes.size());
-    QName supportsFinal = new QName("", "supports_final");
-    assertTrue(attributes.containsKey(supportsFinal));
-    assertEquals("false", attributes.get(supportsFinal));
-    QName supportsDeletable = new QName("", "supports_deletable");
-    assertTrue(attributes.containsKey(supportsDeletable));
-    assertEquals("false", attributes.get(supportsDeletable));
-
-    // properties verification
-    assertEquals(3, properties.size());
-
-    PropertyInfo propertyInfo;
-    propertyInfo = properties.get(0);
-    assertEquals("yarn.scheduler.capacity.maximum-applications", propertyInfo.getName());
-    assertEquals("Maximum number of applications that can be pending and running.", propertyInfo.getDescription());
-    assertEquals("10000", propertyInfo.getValue());
-    assertEquals(1, propertyInfo.getAttributesMap().size());
-    assertEquals("true", propertyInfo.getAttributesMap().get("final"));
-    assertEquals(null, propertyInfo.getFilename());
-    assertEquals(false, propertyInfo.isDeleted());
-    assertEquals(false, propertyInfo.isRequireInput());
-    assertTrue(propertyInfo.getPropertyTypes().isEmpty());
-
-    propertyInfo = properties.get(1);
-    assertEquals("yarn.scheduler.capacity.maximum-am-resource-percent", propertyInfo.getName());
-    assertEquals("Maximum percent of resources in the cluster.", propertyInfo.getDescription());
-    assertEquals("0.2", propertyInfo.getValue());
-    assertEquals(1, propertyInfo.getAttributesMap().size());
-    assertEquals("false", propertyInfo.getAttributesMap().get("final"));
-    assertEquals(null, propertyInfo.getFilename());
-    assertEquals(true, propertyInfo.isDeleted());
-    assertEquals(false, propertyInfo.isRequireInput());
-    assertTrue(propertyInfo.getPropertyTypes().isEmpty());
-
-    propertyInfo = properties.get(2);
-    assertEquals("yarn.scheduler.capacity.root.queues", propertyInfo.getName());
-    assertEquals("The queues at the this level (root is the root queue).", propertyInfo.getDescription());
-    assertEquals("default", propertyInfo.getValue());
-    assertEquals(0, propertyInfo.getAttributesMap().size());
-    assertEquals(null, propertyInfo.getFilename());
-    assertEquals(false, propertyInfo.isDeleted());
-    assertEquals(true, propertyInfo.isRequireInput());
-    assertTrue(propertyInfo.getPropertyTypes().isEmpty());
-  }
-
-  @Test
-  public void testMergeServices_BothConfigTypesAreNull() throws Exception {
-    File stackRoot = new File(stackRootStr);
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    ServiceInfo child = new ServiceInfo();
-    ServiceInfo parent = new ServiceInfo();
-
-    child.setConfigTypes(null);
-    child.setConfigDependencies(null);
-
-    parent.setConfigTypes(null);
-    parent.setConfigDependencies(null);
-
-    ServiceInfo merged = helper.mergeServices(parent, child);
-
-    assertNotNull(merged.getConfigDependencies());
-    assertEquals(0, merged.getConfigDependencies().size());
-    assertNotNull(merged.getConfigTypes());
-    assertEquals(0, merged.getConfigTypes().size());
-  }
-
-  @Test
-  public void testServiceInheritance() throws Exception {
-    File stackRoot = new File(stackRootStr);
-    StackInfo stackInfo = new StackInfo();
-    stackInfo.setName("HDP");
-    stackInfo.setVersion("2.0.6");
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    helper.populateServicesForStack(stackInfo);
-    helper.fillInfo();
-    List<ServiceInfo> allServices = helper.getAllApplicableServices(stackInfo);
-    for (ServiceInfo serviceInfo : allServices) {
-      if (serviceInfo.getName().equals("HDFS")){
-        assertEquals("HDFS", serviceInfo.getName());
-        assertNotNull(serviceInfo.getMetricsFile()); 
-      } 
-    }
-    
-  }
-  
-  
-  @Test
-  public void testMergeComponentInfo() throws Exception {
-    File stackRoot = new File(stackRootStr);
-    StackExtensionHelper helper = new StackExtensionHelper(injector, stackRoot);
-    ComponentInfo child = new ComponentInfo();
-    ComponentInfo parent = new ComponentInfo();
-    DependencyInfo a = new DependencyInfo();
-    a.setName("serviceName/A");
-    DependencyInfo b = new DependencyInfo();
-    b.setName("serviceName/B");
-    List<DependencyInfo> parentDependencies = new ArrayList<DependencyInfo>();
-    parentDependencies.add(a);
-    parentDependencies.add(b);
-    parent.setDependencies(parentDependencies);
-
-    DependencyInfo c = new DependencyInfo();
-    c.setName("serviceName/C");
-    List<DependencyInfo> childDependencies = new ArrayList<DependencyInfo>();
-    childDependencies.add(c);
-    child.setDependencies(childDependencies);
-
-    child.setCardinality("1");
-    parent.setCardinality("1+");
-
-    child.setCategory("CLIENT");
-    parent.setCategory("MASTER");
-
-    ComponentInfo result = helper.mergeComponents(parent, child);
-
-    assertEquals(result.getCardinality(),"1");
-    assertEquals(result.getCategory(), "CLIENT");
-    assertEquals(result.getDependencies().size(), 3);
-  }
-}
-

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fc7adec/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
index 5c8b4ad..e068508 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
@@ -299,7 +299,7 @@ public class AmbariManagementControllerImplTest {
     expect(serviceInfo.getClientComponent()).andReturn(compInfo);
     expect(compInfo.getName()).andReturn("component");
     expect(component.getServiceComponentHosts()).andReturn(Collections.<String, ServiceComponentHost>singletonMap("host", null));
-    expect(ambariMetaInfo.getServiceInfo("stack", "1.0", "service")).andReturn(serviceInfo);
+    expect(ambariMetaInfo.getService("stack", "1.0", "service")).andReturn(serviceInfo);
 
     replay(injector, cluster, service, component, serviceInfo, compInfo, ambariMetaInfo, stackId);
 
@@ -339,7 +339,7 @@ public class AmbariManagementControllerImplTest {
     ComponentInfo compInfo = createNiceMock(ComponentInfo.class);
     expect(serviceInfo.getClientComponent()).andReturn(compInfo);
     expect(compInfo.getName()).andReturn("component");
-    expect(ambariMetaInfo.getServiceInfo("stack", "1.0", "service")).andReturn(serviceInfo);
+    expect(ambariMetaInfo.getService("stack", "1.0", "service")).andReturn(serviceInfo);
 
     replay(injector, cluster, service, component1, component2, serviceInfo, compInfo, ambariMetaInfo, stackId);
 
@@ -375,7 +375,7 @@ public class AmbariManagementControllerImplTest {
 
     ServiceInfo serviceInfo = createNiceMock(ServiceInfo.class);
     expect(serviceInfo.getClientComponent()).andReturn(null);
-    expect(ambariMetaInfo.getServiceInfo("stack", "1.0", "service")).andReturn(serviceInfo);
+    expect(ambariMetaInfo.getService("stack", "1.0", "service")).andReturn(serviceInfo);
 
     replay(injector, cluster, service, component1, component2, serviceInfo, ambariMetaInfo, stackId);
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fc7adec/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index b2c023f..2a0ebc5 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -156,7 +156,7 @@ public class AmbariManagementControllerTest {
   private static final String NAGIOS_SERVICE_NAME = "NAGIOS";
   private static final int STACK_VERSIONS_CNT = 12;
   private static final int REPOS_CNT = 3;
-  private static final int STACKS_CNT = 2;
+  private static final int STACKS_CNT = 3;
   private static final int STACK_PROPERTIES_CNT = 103;
   private static final int STACK_COMPONENTS_CNT = 4;
   private static final int OS_CNT = 2;
@@ -1718,12 +1718,6 @@ public class AmbariManagementControllerTest {
         for (ExecutionCommandWrapper ecw : stage.getExecutionCommands(host)) {
           Assert.assertFalse(
               ecw.getExecutionCommand().getHostLevelParams().get("repo_info").isEmpty());
-
-          LOG.info("Dumping host action details"
-              + ", stageId=" + stage.getStageId()
-              + ", actionId=" + stage.getActionId()
-              + ", commandDetails="
-              + StageUtils.jaxbToString(ecw.getExecutionCommand()));
         }
       }
     }
@@ -1786,20 +1780,6 @@ public class AmbariManagementControllerTest {
     stages = actionDB.getAllStages(trackAction.getRequestId());
     Assert.assertEquals(2, stages.size());
 
-    for (Stage stage : stages) {
-      LOG.info("Stage Details for Start Service"
-          + ", stageId="+ stage.getStageId()
-          + ", actionId=" + stage.getActionId());
-
-      for (String host : stage.getHosts()) {
-        LOG.info("Dumping host action details"
-            + ", stageId=" + stage.getStageId()
-            + ", actionId=" + stage.getActionId()
-            + ", commandDetails="
-            + StageUtils.jaxbToString(stage.getExecutionCommands(host).get(0)));
-      }
-    }
-
     StringBuilder sb = new StringBuilder();
     clusters.debugDump(sb);
     LOG.info("Cluster Dump: " + sb.toString());
@@ -1837,9 +1817,6 @@ public class AmbariManagementControllerTest {
     // TODO validate stages?
     stages = actionDB.getAllStages(trackAction.getRequestId());
 
-    for (Stage stage : stages) {
-      LOG.info("Stage Details for Stop Service : " + stage.toString());
-    }
     Assert.assertEquals(1, stages.size());
 
   }
@@ -7071,7 +7048,7 @@ public class AmbariManagementControllerTest {
   @Test
   public void testGetStackVersionActiveAttr() throws Exception {
 
-    for (StackInfo stackInfo: ambariMetaInfo.getStackInfos(STACK_NAME)) {
+    for (StackInfo stackInfo: ambariMetaInfo.getStacks(STACK_NAME)) {
       if (stackInfo.getVersion().equalsIgnoreCase(STACK_VERSION)) {
         stackInfo.setActive(true);
       }
@@ -8172,7 +8149,7 @@ public class AmbariManagementControllerTest {
   @Test
   public void testUpdateStacks() throws Exception {
 
-    StackInfo stackInfo = ambariMetaInfo.getStackInfo(STACK_NAME, STACK_VERSION);
+    StackInfo stackInfo = ambariMetaInfo.getStack(STACK_NAME, STACK_VERSION);
 
     for (RepositoryInfo repositoryInfo: stackInfo.getRepositories()) {
       assertFalse(INCORRECT_BASE_URL.equals(repositoryInfo.getBaseUrl()));
@@ -8182,7 +8159,7 @@ public class AmbariManagementControllerTest {
 
     controller.updateStacks();
 
-    stackInfo = ambariMetaInfo.getStackInfo(STACK_NAME, STACK_VERSION);
+    stackInfo = ambariMetaInfo.getStack(STACK_NAME, STACK_VERSION);
 
     for (RepositoryInfo repositoryInfo: stackInfo.getRepositories()) {
       assertFalse(INCORRECT_BASE_URL.equals(repositoryInfo.getBaseUrl()));

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fc7adec/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java
index 5438654..9514b21 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/BlueprintResourceProviderTest.java
@@ -156,8 +156,7 @@ public class BlueprintResourceProviderTest {
         andReturn("test-service").anyTimes();
     expect(metaInfo.getComponentToService("test-stack-name", "test-stack-version", "component2")).
         andReturn("test-service").anyTimes();
-    expect(metaInfo.getRequiredProperties("test-stack-name", "test-stack-version", "test-service")).andReturn(
-        Collections.<String, org.apache.ambari.server.state.PropertyInfo>emptyMap()).anyTimes();
+    expect(metaInfo.getService("test-stack-name", "test-stack-version", "test-service")).andReturn(service).anyTimes();
     dao.create(capture(entityCapture));
 
     replay(dao, metaInfo, request, managementController);
@@ -222,8 +221,7 @@ public class BlueprintResourceProviderTest {
         andReturn("test-service").anyTimes();
     expect(metaInfo.getComponentToService("test-stack-name", "test-stack-version", "component2")).
         andReturn("test-service").anyTimes();
-    expect(metaInfo.getRequiredProperties("test-stack-name", "test-stack-version", "test-service")).andReturn(
-        Collections.<String, org.apache.ambari.server.state.PropertyInfo>emptyMap()).anyTimes();
+    expect(metaInfo.getService("test-stack-name", "test-stack-version", "test-service")).andReturn(service).anyTimes();
     dao.create(capture(entityCapture));
 
     replay(dao, metaInfo, request, managementController);
@@ -290,8 +288,7 @@ public class BlueprintResourceProviderTest {
         andReturn("test-service").anyTimes();
     expect(metaInfo.getComponentToService("test-stack-name", "test-stack-version", "component2")).
         andReturn("test-service").anyTimes();
-    expect(metaInfo.getRequiredProperties("test-stack-name", "test-stack-version", "test-service")).andReturn(
-        Collections.<String, org.apache.ambari.server.state.PropertyInfo>emptyMap()).anyTimes();
+    expect(metaInfo.getService("test-stack-name", "test-stack-version", "test-service")).andReturn(service).anyTimes();
     dao.create(capture(entityCapture));
 
     replay(dao, metaInfo, request, managementController);
@@ -381,7 +378,7 @@ public class BlueprintResourceProviderTest {
         BlueprintResourceProvider.BLUEPRINT_NAME_PROPERTY_ID, BLUEPRINT_NAME);
 
     AbstractResourceProviderTest.TestObserver observer = new AbstractResourceProviderTest.TestObserver();
-    ((ObservableResourceProvider)provider).addObserver(observer);
+    provider.addObserver(observer);
 
     provider.deleteResources(predicate);
 
@@ -639,7 +636,6 @@ public class BlueprintResourceProviderTest {
     expect(stackServiceResponse.getServiceName()).andReturn("test-service").anyTimes();
     expect(stackServiceResponse.getStackName()).andReturn("test-stack-name").anyTimes();
     expect(stackServiceResponse.getStackVersion()).andReturn("test-stack-version").anyTimes();
-    expect(stackServiceResponse.getExcludedConfigTypes()).andReturn(Collections.<String>emptySet());
 
     expect(managementController.getStackComponents(capture(serviceComponentRequestCapture))).andReturn(setServiceComponents).anyTimes();
     expect(stackServiceComponentResponse.getCardinality()).andReturn("2").anyTimes();
@@ -673,8 +669,7 @@ public class BlueprintResourceProviderTest {
         andReturn("test-service").anyTimes();
     expect(metaInfo.getComponentToService("test-stack-name", "test-stack-version", "component2")).
         andReturn("test-service").anyTimes();
-    expect(metaInfo.getRequiredProperties("test-stack-name", "test-stack-version", "test-service")).andReturn(
-        Collections.<String, org.apache.ambari.server.state.PropertyInfo>emptyMap()).anyTimes();
+    expect(metaInfo.getService("test-stack-name", "test-stack-version", "test-service")).andReturn(service).anyTimes();
     dao.create(capture(entityCapture));
 
     replay(dao, metaInfo, request, managementController, stackServiceResponse,
@@ -751,7 +746,6 @@ public class BlueprintResourceProviderTest {
     expect(stackServiceResponse.getServiceName()).andReturn("test-service").anyTimes();
     expect(stackServiceResponse.getStackName()).andReturn("test-stack-name").anyTimes();
     expect(stackServiceResponse.getStackVersion()).andReturn("test-stack-version").anyTimes();
-    expect(stackServiceResponse.getExcludedConfigTypes()).andReturn(Collections.<String>emptySet());
 
     expect(managementController.getStackComponents(capture(serviceComponentRequestCapture))).andReturn(setServiceComponents).anyTimes();
     expect(stackServiceComponentResponse.getCardinality()).andReturn("2").anyTimes();
@@ -785,8 +779,7 @@ public class BlueprintResourceProviderTest {
         andReturn("test-service").anyTimes();
     expect(metaInfo.getComponentToService("test-stack-name", "test-stack-version", "component2")).
         andReturn("test-service").anyTimes();
-    expect(metaInfo.getRequiredProperties("test-stack-name", "test-stack-version", "test-service")).andReturn(
-        Collections.<String, org.apache.ambari.server.state.PropertyInfo>emptyMap()).anyTimes();
+    expect(metaInfo.getService("test-stack-name", "test-stack-version", "test-service")).andReturn(service).anyTimes();
     dao.create(capture(entityCapture));
 
     replay(dao, metaInfo, request, managementController, stackServiceResponse,
@@ -870,8 +863,7 @@ public class BlueprintResourceProviderTest {
         Collections.<StackServiceResponse>singleton(stackServiceResponse));
     expect(stackServiceResponse.getServiceName()).andReturn("test-service").anyTimes();
     expect(stackServiceResponse.getStackName()).andReturn("test-stack-name").anyTimes();
-    expect(stackServiceResponse.getStackVersion()).andReturn("test-stack-version").anyTimes();
-    expect(stackServiceResponse.getExcludedConfigTypes()).andReturn(Collections.<String>emptySet());
+    expect(stackServiceResponse.getStackVersion()).andReturn("test-stack-version").anyTimes();;
 
     expect(managementController.getStackComponents(capture(serviceComponentRequestCapture))).andReturn(setServiceComponents).anyTimes();
     expect(stackServiceComponentResponse.getCardinality()).andReturn("2").anyTimes();
@@ -905,8 +897,7 @@ public class BlueprintResourceProviderTest {
         andReturn("test-service").anyTimes();
     expect(metaInfo.getComponentToService("test-stack-name", "test-stack-version", "component2")).
         andReturn("test-service").anyTimes();
-    expect(metaInfo.getRequiredProperties("test-stack-name", "test-stack-version", "test-service")).andReturn(
-        Collections.<String, org.apache.ambari.server.state.PropertyInfo>emptyMap()).anyTimes();
+    expect(metaInfo.getService("test-stack-name", "test-stack-version", "test-service")).andReturn(service).anyTimes();
     dao.create(capture(entityCapture));
 
     replay(dao, metaInfo, request, managementController, stackServiceResponse,
@@ -980,7 +971,6 @@ public class BlueprintResourceProviderTest {
     expect(stackServiceResponse.getServiceName()).andReturn("test-service").anyTimes();
     expect(stackServiceResponse.getStackName()).andReturn("test-stack-name").anyTimes();
     expect(stackServiceResponse.getStackVersion()).andReturn("test-stack-version").anyTimes();
-    expect(stackServiceResponse.getExcludedConfigTypes()).andReturn(Collections.<String>emptySet());
 
     expect(managementController.getStackComponents(capture(serviceComponentRequestCapture))).andReturn(setServiceComponents).anyTimes();
     expect(stackServiceComponentResponse.getCardinality()).andReturn("2").anyTimes();
@@ -1014,8 +1004,7 @@ public class BlueprintResourceProviderTest {
         andReturn("test-service").anyTimes();
     expect(metaInfo.getComponentToService("test-stack-name", "test-stack-version", "component2")).
         andReturn("test-service").anyTimes();
-    expect(metaInfo.getRequiredProperties("test-stack-name", "test-stack-version", "test-service")).andReturn(
-        Collections.<String, org.apache.ambari.server.state.PropertyInfo>emptyMap()).anyTimes();
+    expect(metaInfo.getService("test-stack-name", "test-stack-version", "test-service")).andReturn(service).anyTimes();
 
     replay(dao, metaInfo, request, managementController, stackServiceResponse,
         stackServiceComponentResponse, stackServiceComponentResponse2);
@@ -1062,6 +1051,7 @@ public class BlueprintResourceProviderTest {
     serviceComponents.add(component1);
     serviceComponents.add(component2);
 
+
     Set<Map<String, Object>> setProperties = getTestProperties();
     ((HashSet<Map<String, String>>) ((HashSet<Map<String, Object>>) setProperties.iterator().next().get(
         BlueprintResourceProvider.HOST_GROUP_PROPERTY_ID)).iterator().next().get("components")).
@@ -1080,8 +1070,7 @@ public class BlueprintResourceProviderTest {
         andReturn(serviceComponents).anyTimes();
     expect(metaInfo.getComponentToService("test-stack-name", "test-stack-version", "component1")).
         andReturn("test-service").anyTimes();
-    expect(metaInfo.getRequiredProperties("test-stack-name", "test-stack-version", "test-service")).andReturn(
-        Collections.<String, org.apache.ambari.server.state.PropertyInfo>emptyMap()).anyTimes();
+    expect(metaInfo.getService("test-stack-name", "test-stack-version", "test-service")).andReturn(service).anyTimes();
 
     dao.create(capture(entityCapture));
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fc7adec/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
index d73eea4..0d3b00f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
@@ -256,9 +256,9 @@ public class ClientConfigResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn(stackVersion).anyTimes();
 
     expect(ambariMetaInfo.getComponent(stackName, stackVersion, serviceName, componentName)).andReturn(componentInfo);
-    expect(ambariMetaInfo.getServiceInfo(stackName, stackVersion, serviceName)).andReturn(serviceInfo);
+    expect(ambariMetaInfo.getService(stackName, stackVersion, serviceName)).andReturn(serviceInfo);
     expect(serviceInfo.getServicePackageFolder()).andReturn(packageFolder);
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
             (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
     expect(componentInfo.getCommandScript()).andReturn(commandScriptDefinition);
     expect(componentInfo.getClientConfigFiles()).andReturn(clientConfigFileDefinitionList);
@@ -271,7 +271,7 @@ public class ClientConfigResourceProviderTest {
     HashMap<String, String> rcaParams = new HashMap<String, String>();
     rcaParams.put("key","value");
     expect(managementController.getRcaParameters()).andReturn(rcaParams).anyTimes();
-    expect(ambariMetaInfo.getServiceInfo(stackName, stackVersion, serviceName)).andReturn(serviceInfo);
+    expect(ambariMetaInfo.getService(stackName, stackVersion, serviceName)).andReturn(serviceInfo);
     expect(serviceInfo.getOsSpecifics()).andReturn(new HashMap<String, ServiceOsSpecific>()).anyTimes();
     Set<String> userSet = new HashSet<String>();
     userSet.add("hdfs");

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fc7adec/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
index 98bd017..f7149a8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterResourceProviderTest.java
@@ -96,7 +96,6 @@ public class ClusterResourceProviderTest {
     BaseBlueprintProcessor.stackInfo = null;
   }
 
-
   @Test
   public void testCreateResources() throws Exception{
     Resource.Type type = Resource.Type.Cluster;
@@ -2961,7 +2960,6 @@ public class ClusterResourceProviderTest {
 
 
     expect(mockStackServiceResponseOne.getServiceName()).andReturn("OOZIE").atLeastOnce();
-    expect(mockStackServiceResponseOne.getExcludedConfigTypes()).andReturn(Collections.<String>emptySet()).atLeastOnce();
     expect(mockManagementController.getStackServices(isA(Set.class))).andReturn(Collections.singleton(mockStackServiceResponseOne));
     expect(mockManagementController.getStackComponents(isA(Set.class))).andReturn(Collections.singleton(mockStackComponentResponse));
     expect(mockManagementController.getStackConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
@@ -3045,7 +3043,6 @@ public class ClusterResourceProviderTest {
 
 
     expect(mockStackServiceResponseOne.getServiceName()).andReturn("FALCON").atLeastOnce();
-    expect(mockStackServiceResponseOne.getExcludedConfigTypes()).andReturn(Collections.<String>emptySet()).atLeastOnce();
     expect(mockManagementController.getStackServices(isA(Set.class))).andReturn(Collections.singleton(mockStackServiceResponseOne));
     expect(mockManagementController.getStackComponents(isA(Set.class))).andReturn(Collections.singleton(mockStackComponentResponse));
     expect(mockManagementController.getStackConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
@@ -3127,7 +3124,6 @@ public class ClusterResourceProviderTest {
 
 
     expect(mockStackServiceResponseOne.getServiceName()).andReturn("OOZIE").atLeastOnce();
-    expect(mockStackServiceResponseOne.getExcludedConfigTypes()).andReturn(Collections.<String>emptySet()).atLeastOnce();
     expect(mockManagementController.getStackServices(isA(Set.class))).andReturn(Collections.singleton(mockStackServiceResponseOne));
     expect(mockManagementController.getStackComponents(isA(Set.class))).andReturn(Collections.singleton(mockStackComponentResponse));
     expect(mockManagementController.getStackConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
@@ -3203,9 +3199,7 @@ public class ClusterResourceProviderTest {
     expect(mockStackComponentResponse.getCardinality()).andReturn("1");
     expect(mockStackComponentResponse.getAutoDeploy()).andReturn(new AutoDeployInfo());
 
-
     expect(mockStackServiceResponseOne.getServiceName()).andReturn("FALCON").atLeastOnce();
-    expect(mockStackServiceResponseOne.getExcludedConfigTypes()).andReturn(Collections.<String>emptySet()).atLeastOnce();
 
     expect(mockManagementController.getStackServices(isA(Set.class))).andReturn(Collections.singleton(mockStackServiceResponseOne));
     expect(mockManagementController.getStackComponents(isA(Set.class))).andReturn(Collections.singleton(mockStackComponentResponse));
@@ -3283,7 +3277,6 @@ public class ClusterResourceProviderTest {
     expect(mockStackComponentResponse.getAutoDeploy()).andReturn(new AutoDeployInfo());
 
     expect(mockStackServiceResponseOne.getServiceName()).andReturn("HIVE").atLeastOnce();
-    expect(mockStackServiceResponseOne.getExcludedConfigTypes()).andReturn(Collections.<String>emptySet()).atLeastOnce();
     expect(mockManagementController.getStackServices(isA(Set.class))).andReturn(Collections.singleton(mockStackServiceResponseOne));
     expect(mockManagementController.getStackComponents(isA(Set.class))).andReturn(Collections.singleton(mockStackComponentResponse));
     expect(mockManagementController.getStackConfigurations(isA(Set.class))).andReturn(Collections.<StackConfigurationResponse>emptySet());
@@ -3360,7 +3353,6 @@ public class ClusterResourceProviderTest {
     expect(mockStackComponentResponse.getAutoDeploy()).andReturn(new AutoDeployInfo());
 
     expect(mockStackServiceResponseOne.getServiceName()).andReturn("HBASE").atLeastOnce();
-    expect(mockStackServiceResponseOne.getExcludedConfigTypes()).andReturn(Collections.<String>emptySet()).atLeastOnce();
 
     expect(mockManagementController.getStackServices(isA(Set.class))).andReturn(Collections.singleton(mockStackServiceResponseOne));
     expect(mockManagementController.getStackComponents(isA(Set.class))).andReturn(Collections.singleton(mockStackComponentResponse));

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fc7adec/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
index 1455c52..a66add3 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
@@ -49,6 +49,7 @@ import java.util.Set;
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.ObjectNotFoundException;
 import org.apache.ambari.server.ServiceComponentNotFoundException;
+import org.apache.ambari.server.StackAccessException;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.AmbariManagementControllerImpl;
@@ -187,8 +188,8 @@ public class ComponentResourceProviderTest {
     expect(serviceComponent3.convertToResponse()).andReturn(
       new ServiceComponentResponse(100L, "Cluster100", "Service100", "Component102", null, "", 1, 1, 0));
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(),
-      (String) anyObject(), (String) anyObject(), (String) anyObject()))
+    expect(ambariMetaInfo.getComponent((String) anyObject(),
+        (String) anyObject(), (String) anyObject(), (String) anyObject()))
         .andReturn(componentInfo1).times(2).andReturn(componentInfo2);
 
     expect(componentInfo1.getCategory()).andReturn("MASTER").anyTimes();
@@ -254,6 +255,10 @@ public class ComponentResourceProviderTest {
     Cluster cluster = createNiceMock(Cluster.class);
     AmbariMetaInfo ambariMetaInfo = createNiceMock(AmbariMetaInfo.class);
     Service service = createNiceMock(Service.class);
+    ComponentInfo component1Info = createNiceMock(ComponentInfo.class);
+    ComponentInfo component2Info = createNiceMock(ComponentInfo.class);
+    ComponentInfo component3Info = createNiceMock(ComponentInfo.class);
+
     ServiceComponent serviceComponent1 = createNiceMock(ServiceComponent.class);
     ServiceComponent serviceComponent2 = createNiceMock(ServiceComponent.class);
     ServiceComponent serviceComponent3 = createNiceMock(ServiceComponent.class);
@@ -271,20 +276,33 @@ public class ComponentResourceProviderTest {
     expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
     expect(managementController.getEffectiveMaintenanceState(
         capture(new Capture<ServiceComponentHost>()))).andReturn(MaintenanceState.OFF).anyTimes();
-    
+
+    expect(stackId.getStackName()).andReturn("stackName").anyTimes();
+    expect(stackId.getStackVersion()).andReturn("1").anyTimes();
     expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
     expect(cluster.getDesiredStackVersion()).andReturn(stackId);
 
     expect(cluster.getService("Service100")).andReturn(service).anyTimes();
+    expect(service.getName()).andReturn("Service100").anyTimes();
     expect(service.getServiceComponent("Component101")).andReturn(serviceComponent1).anyTimes();
     expect(service.getServiceComponent("Component102")).andReturn(serviceComponent1).anyTimes();
     expect(service.getServiceComponent("Component103")).andReturn(serviceComponent2).anyTimes();
 
+    expect(serviceComponent1.getName()).andReturn("Component101").anyTimes();
+    expect(serviceComponent2.getName()).andReturn("Component102").anyTimes();
+    expect(serviceComponent3.getName()).andReturn("Component103").anyTimes();
 
     expect(cluster.getServices()).andReturn(Collections.singletonMap("Service100", service)).anyTimes();
 
     expect(service.getServiceComponents()).andReturn(serviceComponentMap).anyTimes();
 
+    expect(ambariMetaInfo.getComponent("stackName", "1", "Service100", "Component101")).andReturn(component1Info).atLeastOnce();
+    expect(ambariMetaInfo.getComponent("stackName", "1", "Service100", "Component102")).andReturn(component2Info).atLeastOnce();
+    expect(ambariMetaInfo.getComponent("stackName", "1", "Service100", "Component103")).andReturn(component3Info).atLeastOnce();
+    expect(component1Info.getCategory()).andReturn(null);
+    expect(component2Info.getCategory()).andReturn(null);
+    expect(component3Info.getCategory()).andReturn(null);
+
     expect(serviceComponent1.convertToResponse()).andReturn(
       new ServiceComponentResponse(100L, "Cluster100", "Service100", "Component101", null, "", 1, 0, 1));
     expect(serviceComponent2.convertToResponse()).andReturn(
@@ -316,16 +334,14 @@ public class ComponentResourceProviderTest {
     expect(managementController.createAndPersistStages(capture(clusterCapture), capture(requestPropertiesCapture), capture(requestParametersCapture), capture(changedServicesCapture), capture(changedCompsCapture), capture(changedScHostsCapture), capture(ignoredScHostsCapture), anyBoolean(), anyBoolean()
     )).andReturn(requestStatusResponse);
 
-
-
     Map<String, String> mapRequestProps = new HashMap<String, String>();
     mapRequestProps.put("context", "Called from a test");
 
 
     // replay
-    replay(managementController, clusters, cluster, ambariMetaInfo, service,
-        serviceComponent1, serviceComponent2, serviceComponent3, serviceComponentHost,
-        requestStatusResponse, stackId, maintenanceStateHelper);
+    replay(managementController, clusters, cluster, ambariMetaInfo, service, component1Info,
+        component2Info, component3Info, serviceComponent1, serviceComponent2, serviceComponent3,
+        serviceComponentHost, requestStatusResponse, stackId, maintenanceStateHelper);
 
     ResourceProvider provider = new ComponentResourceProvider(
         PropertyHelper.getPropertyIds(type),
@@ -340,15 +356,15 @@ public class ComponentResourceProviderTest {
     // create the request
     Request request = PropertyHelper.getUpdateRequest(properties, mapRequestProps);
 
-    // update the cluster named Cluster102
+    // update the cluster named Cluster100
     Predicate predicate = new PredicateBuilder().property(ComponentResourceProvider.COMPONENT_CLUSTER_NAME_PROPERTY_ID).
         equals("Cluster100").toPredicate();
     provider.updateResources(request, predicate);
 
     // verify
-    verify(managementController, clusters, cluster, ambariMetaInfo, service,
-        serviceComponent1, serviceComponent2, serviceComponent3, serviceComponentHost,
-        requestStatusResponse, stackId, maintenanceStateHelper);
+    verify(managementController, clusters, cluster, ambariMetaInfo, service, component1Info,
+        component2Info, component3Info, serviceComponent1, serviceComponent2, serviceComponent3,
+        serviceComponentHost, requestStatusResponse, stackId, maintenanceStateHelper);
   }
 
   public void testSuccessDeleteResources() throws Exception {
@@ -615,6 +631,7 @@ public class ComponentResourceProviderTest {
 
     Cluster cluster = createNiceMock(Cluster.class);
     Service service = createNiceMock(Service.class);
+    ComponentInfo componentInfo = createNiceMock(ComponentInfo.class);
     ServiceComponent component = createNiceMock(ServiceComponent.class);
     ServiceComponentResponse response = createNiceMock(ServiceComponentResponse.class);
 
@@ -630,25 +647,31 @@ public class ComponentResourceProviderTest {
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
 
+    expect(stackId.getStackName()).andReturn("stackName").anyTimes();
+    expect(stackId.getStackVersion()).andReturn("1").anyTimes();
+
     // getComponents
     expect(clusters.getCluster("cluster1")).andReturn(cluster);
     expect(cluster.getService("service1")).andReturn(service);
     expect(cluster.getDesiredStackVersion()).andReturn(stackId).anyTimes();
+    expect(service.getName()).andReturn("service1").anyTimes();
     expect(service.getServiceComponent("component1")).andReturn(component);
 
+    expect(ambariMetaInfo.getComponent("stackName", "1", "service1", "component1")).andReturn(componentInfo);
+    expect(componentInfo.getCategory()).andReturn(null);
+
     expect(component.convertToResponse()).andReturn(response);
     // replay mocks
-    replay(clusters, cluster, service, component, response, ambariMetaInfo, stackId, managementController);
+    replay(clusters, cluster, service, componentInfo, component, response, ambariMetaInfo, stackId, managementController);
 
     //test
-//    AmbariManagementController controller = new AmbariManagementControllerImpl(null, clusters, injector);
     Set<ServiceComponentResponse> setResponses = getComponentResourceProvider(managementController).getComponents(setRequests);
 
     // assert and verify
     assertEquals(1, setResponses.size());
     assertTrue(setResponses.contains(response));
 
-    verify(clusters, cluster, service, component, response, ambariMetaInfo, stackId, managementController);
+    verify(clusters, cluster, service, componentInfo, component, response, ambariMetaInfo, stackId, managementController);
   }
 
   /**
@@ -665,6 +688,8 @@ public class ComponentResourceProviderTest {
 
     Cluster cluster = createNiceMock(Cluster.class);
     Service service = createNiceMock(Service.class);
+    ComponentInfo component3Info = createNiceMock(ComponentInfo.class);
+    ComponentInfo component4Info = createNiceMock(ComponentInfo.class);
     ServiceComponent component1 = createNiceMock(ServiceComponent.class);
     ServiceComponent component2 = createNiceMock(ServiceComponent.class);
     ServiceComponentResponse response1 = createNiceMock(ServiceComponentResponse.class);
@@ -693,12 +718,22 @@ public class ComponentResourceProviderTest {
     expect(managementController.getClusters()).andReturn(clusters).anyTimes();
     expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
 
+    expect(stackId.getStackName()).andReturn("stackName").anyTimes();
+    expect(stackId.getStackVersion()).andReturn("1").anyTimes();
+
     // getComponents
-    expect(clusters.getCluster("cluster1")).andReturn(cluster).times(5);
+    expect(clusters.getCluster("cluster1")).andReturn(cluster).anyTimes();
     expect(cluster.getDesiredStackVersion()).andReturn(stackId).anyTimes();
-    expect(cluster.getService("service1")).andReturn(service).times(4);
+    expect(cluster.getService("service1")).andReturn(service).anyTimes();
     expect(cluster.getService("service2")).andThrow(new ObjectNotFoundException("service2"));
 
+    expect(ambariMetaInfo.getComponent("stackName", "1", "service1", "component3")).andReturn(component3Info);
+    expect(ambariMetaInfo.getComponent("stackName", "1", "service1", "component4")).andReturn(component4Info);
+
+    expect(component3Info.getCategory()).andReturn(null);
+    expect(component4Info.getCategory()).andReturn(null);
+
+    expect(service.getName()).andReturn("service1").anyTimes();
     expect(service.getServiceComponent("component1")).andThrow(new ServiceComponentNotFoundException("cluster1", "service1", "component1"));
     expect(service.getServiceComponent("component2")).andThrow(new ServiceComponentNotFoundException("cluster1", "service1", "component2"));
     expect(service.getServiceComponent("component3")).andReturn(component1);
@@ -707,7 +742,8 @@ public class ComponentResourceProviderTest {
     expect(component1.convertToResponse()).andReturn(response1);
     expect(component2.convertToResponse()).andReturn(response2);
     // replay mocks
-    replay(clusters, cluster, service, component1,  component2, response1, response2, ambariMetaInfo, stackId, managementController);
+    replay(clusters, cluster, service, component3Info, component4Info, component1,  component2, response1,
+        response2, ambariMetaInfo, stackId, managementController);
 
     //test
     Set<ServiceComponentResponse> setResponses = getComponentResourceProvider(managementController).getComponents(setRequests);
@@ -717,7 +753,8 @@ public class ComponentResourceProviderTest {
     assertTrue(setResponses.contains(response1));
     assertTrue(setResponses.contains(response2));
 
-    verify(clusters, cluster, service, component1,  component2, response1, response2, ambariMetaInfo, stackId, managementController);
+    verify(clusters, cluster, service, component3Info, component4Info, component1, component2, response1,
+        response2, ambariMetaInfo, stackId, managementController);
   }
 
   public static ComponentResourceProvider getComponentResourceProvider(AmbariManagementController managementController)

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fc7adec/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java
index 2879094..cab75ee 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostResourceProviderTest.java
@@ -282,7 +282,7 @@ public class HostResourceProviderTest {
     expect(healthStatus.getHealthReport()).andReturn("HEALTHY").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.getCategory()).andReturn("MASTER").anyTimes();
@@ -391,7 +391,7 @@ public class HostResourceProviderTest {
     expect(healthStatus.getHealthReport()).andReturn("HEALTHY").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.getCategory()).andReturn("MASTER").anyTimes();
@@ -499,7 +499,7 @@ public class HostResourceProviderTest {
     expect(healthStatus.getHealthReport()).andReturn("HEALTHY").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.getCategory()).andReturn("MASTER").anyTimes();
@@ -684,7 +684,7 @@ public class HostResourceProviderTest {
     expect(hostResponse1.getStatus()).andReturn(HealthStatus.ALERT.name()).anyTimes();
     expect(healthStatus.getHealthStatus()).andReturn(HostHealthStatus.HealthStatus.HEALTHY).anyTimes();
     expect(healthStatus.getHealthReport()).andReturn("HEALTHY").anyTimes();
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
     expect(componentInfo.getCategory()).andReturn("SLAVE").anyTimes();
     expect(resourceProviderFactory.getHostResourceProvider(anyObject(Set.class), anyObject(Map.class),

http://git-wip-us.apache.org/repos/asf/ambari/blob/2fc7adec/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
index 05f2e01..5003c16 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java
@@ -648,7 +648,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isMaster()).andReturn(true);
@@ -699,7 +699,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isMaster()).andReturn(true);
@@ -748,7 +748,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isMaster()).andReturn(true);
@@ -797,7 +797,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isMaster()).andReturn(true);
@@ -843,7 +843,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isMaster()).andReturn(false);
@@ -890,7 +890,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isMaster()).andReturn(true);
@@ -938,7 +938,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isMaster()).andReturn(true);
@@ -986,7 +986,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isMaster()).andReturn(true);
@@ -1032,7 +1032,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isMaster()).andReturn(true);
@@ -1075,7 +1075,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isMaster()).andReturn(false);
@@ -1125,7 +1125,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
             (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     // replay
@@ -1166,7 +1166,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isClient()).andReturn(true);
@@ -1209,7 +1209,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
         (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isClient()).andReturn(true);
@@ -1316,7 +1316,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
             (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isClient()).andReturn(false).anyTimes();
@@ -1372,7 +1372,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
             (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isMaster()).andReturn(false).anyTimes();
@@ -1436,7 +1436,7 @@ public class ServiceResourceProviderTest {
     expect(stackId.getStackVersion()).andReturn("V1").anyTimes();
 
 
-    expect(ambariMetaInfo.getComponentCategory((String) anyObject(), (String) anyObject(),
+    expect(ambariMetaInfo.getComponent((String) anyObject(), (String) anyObject(),
             (String) anyObject(), (String) anyObject())).andReturn(componentInfo).anyTimes();
 
     expect(componentInfo.isClient()).andReturn(false);