Repository: ambari
Updated Branches:
  refs/heads/trunk 7e88541ce -> e3acc7f06


http://git-wip-us.apache.org/repos/asf/ambari/blob/e3acc7f0/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
index 5a6ddd3..684cdd4 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
@@ -113,15 +113,19 @@ public class KerberosHelperTest extends EasyMockSupport {
   private final ClusterController clusterController = 
createStrictMock(ClusterController.class);
   private final KerberosDescriptorFactory kerberosDescriptorFactory = 
createStrictMock(KerberosDescriptorFactory.class);
   private final KerberosConfigDataFileWriterFactory 
kerberosConfigDataFileWriterFactory = 
createStrictMock(KerberosConfigDataFileWriterFactory.class);
-  private final AmbariMetaInfo metaInfo = createNiceMock(AmbariMetaInfo.class);
-  private final TopologyManager topologyManager = 
createNiceMock(TopologyManager.class);
+  private final AmbariMetaInfo metaInfo = createMock(AmbariMetaInfo.class);
+  private final TopologyManager topologyManager = 
createMock(TopologyManager.class);
 
   @Before
   public void setUp() throws Exception {
     reset(clusterController);
     reset(metaInfo);
 
-    final KerberosOperationHandlerFactory kerberosOperationHandlerFactory = 
createNiceMock(KerberosOperationHandlerFactory.class);
+    final KerberosOperationHandlerFactory kerberosOperationHandlerFactory = 
createMock(KerberosOperationHandlerFactory.class);
+
+    
expect(kerberosOperationHandlerFactory.getKerberosOperationHandler(KDCType.NONE))
+        .andReturn(null)
+        .anyTimes();
 
     
expect(kerberosOperationHandlerFactory.getKerberosOperationHandler(KDCType.MIT_KDC))
         .andReturn(new KerberosOperationHandler() {
@@ -183,6 +187,7 @@ public class KerberosHelperTest extends EasyMockSupport {
         
bind(KerberosDescriptorFactory.class).toInstance(kerberosDescriptorFactory);
         
bind(KerberosConfigDataFileWriterFactory.class).toInstance(kerberosConfigDataFileWriterFactory);
         
bind(StackManagerFactory.class).toInstance(createNiceMock(StackManagerFactory.class));
+        bind(KerberosHelper.class).to(KerberosHelperImpl.class);
       }
     });
 
@@ -215,11 +220,11 @@ public class KerberosHelperTest extends EasyMockSupport {
   public void testMissingKrb5Conf() throws Exception {
     KerberosHelper kerberosHelper = injector.getInstance(KerberosHelper.class);
 
-    final Map<String, String> kerberosEnvProperties = 
createNiceMock(Map.class);
+    final Map<String, String> kerberosEnvProperties = createMock(Map.class);
     expect(kerberosEnvProperties.get("ldap_url")).andReturn("").once();
     expect(kerberosEnvProperties.get("container_dn")).andReturn("").once();
 
-    final Config kerberosEnvConfig = createNiceMock(Config.class);
+    final Config kerberosEnvConfig = createMock(Config.class);
     
expect(kerberosEnvConfig.getProperties()).andReturn(kerberosEnvProperties).once();
 
     final Cluster cluster = createNiceMock(Cluster.class);
@@ -234,14 +239,14 @@ public class KerberosHelperTest extends EasyMockSupport {
   public void testMissingKerberosEnvConf() throws Exception {
     KerberosHelper kerberosHelper = injector.getInstance(KerberosHelper.class);
 
-    final Map<String, String> kerberosEnvProperties = 
createNiceMock(Map.class);
+    final Map<String, String> kerberosEnvProperties = createMock(Map.class);
     expect(kerberosEnvProperties.get("realm")).andReturn("EXAMPLE.COM").once();
     
expect(kerberosEnvProperties.get("kdc_host")).andReturn("10.0.100.1").once();
 
-    final Map<String, String> krb5ConfProperties = createNiceMock(Map.class);
+    final Map<String, String> krb5ConfProperties = createMock(Map.class);
     
expect(krb5ConfProperties.get("kadmin_host")).andReturn("10.0.100.1").once();
 
-    final Config krb5ConfConfig = createNiceMock(Config.class);
+    final Config krb5ConfConfig = createMock(Config.class);
     
expect(krb5ConfConfig.getProperties()).andReturn(krb5ConfProperties).once();
 
     final Cluster cluster = createNiceMock(Cluster.class);
@@ -849,27 +854,9 @@ public class KerberosHelperTest extends EasyMockSupport {
                                   boolean getStackDescriptor) throws Exception 
{
 
     KerberosHelper kerberosHelper = injector.getInstance(KerberosHelper.class);
+    boolean identitiesManaged = (manageIdentities == null) || 
!"false".equalsIgnoreCase(manageIdentities);
 
-    KerberosConfigDataFileWriter kerberosConfigDataFileWriter = 
createMock(KerberosConfigDataFileWriter.class);
-    kerberosConfigDataFileWriter.addRecord("cluster-env", "security_enabled", 
"true", "SET");
-    expectLastCall().times(1);
-    kerberosConfigDataFileWriter.addRecord("service1-site", 
"component1.kerberos.principal", "component1/_HOST@${realm}", "SET");
-    expectLastCall().times(1);
-    kerberosConfigDataFileWriter.addRecord("service1-site", 
"component1.keytab.file", "${keytab_dir}/service1.keytab", "SET");
-    expectLastCall().times(1);
-    kerberosConfigDataFileWriter.addRecord("service2-site", 
"component2.kerberos.principal", "component2/host1@${realm}", "SET");
-    expectLastCall().times(1);
-    kerberosConfigDataFileWriter.addRecord("service2-site", 
"component2.keytab.file", "${keytab_dir}/service2.keytab", "SET");
-    expectLastCall().times(1);
-    kerberosConfigDataFileWriter.close();
-    expectLastCall().times(1);
-
-    KerberosConfigDataFileWriterFactory factory = 
injector.getInstance(KerberosConfigDataFileWriterFactory.class);
-    expect(factory.createKerberosConfigDataFileWriter(anyObject(File.class)))
-        .andReturn(kerberosConfigDataFileWriter)
-        .times(1);
-
-    final StackId stackVersion = createNiceMock(StackId.class);
+    final StackId stackVersion = createMock(StackId.class);
 
     final ServiceComponentHost schKerberosClient = 
createMock(ServiceComponentHost.class);
     
expect(schKerberosClient.getServiceName()).andReturn(Service.Type.KERBEROS.name()).anyTimes();
@@ -920,7 +907,7 @@ public class KerberosHelperTest extends EasyMockSupport {
     
expect(serviceKerberos.getName()).andReturn(Service.Type.KERBEROS.name()).anyTimes();
     expect(serviceKerberos.getServiceComponents())
         .andReturn(Collections.singletonMap(Role.KERBEROS_CLIENT.name(), 
serviceComponentKerberosClient))
-            .times(3);
+            .times(1);
     serviceKerberos.setSecurityState(SecurityState.SECURED_KERBEROS);
     expectLastCall().once();
 
@@ -928,7 +915,7 @@ public class KerberosHelperTest extends EasyMockSupport {
     expect(service1.getName()).andReturn("SERVICE1").anyTimes();
     expect(service1.getServiceComponents())
         .andReturn(Collections.<String, ServiceComponent>emptyMap())
-        .times(3);
+        .times(1);
     service1.setSecurityState(SecurityState.SECURED_KERBEROS);
     expectLastCall().once();
 
@@ -936,7 +923,7 @@ public class KerberosHelperTest extends EasyMockSupport {
     expect(service2.getName()).andReturn("SERVICE2").anyTimes();
     expect(service2.getServiceComponents())
         .andReturn(Collections.<String, ServiceComponent>emptyMap())
-        .times(3);
+        .times(1);
     service2.setSecurityState(SecurityState.SECURED_KERBEROS);
     expectLastCall().once();
 
@@ -945,12 +932,12 @@ public class KerberosHelperTest extends EasyMockSupport {
     
expect(kerberosEnvProperties.get("manage_identities")).andReturn(manageIdentities).anyTimes();
     
expect(kerberosEnvProperties.get("realm")).andReturn("FOOBAR.COM").anyTimes();
 
-    final Config kerberosEnvConfig = createNiceMock(Config.class);
+    final Config kerberosEnvConfig = createMock(Config.class);
     
expect(kerberosEnvConfig.getProperties()).andReturn(kerberosEnvProperties).anyTimes();
 
     final Map<String, String> krb5ConfProperties = createMock(Map.class);
 
-    final Config krb5ConfConfig = createNiceMock(Config.class);
+    final Config krb5ConfConfig = createMock(Config.class);
     
expect(krb5ConfConfig.getProperties()).andReturn(krb5ConfProperties).anyTimes();
 
     final Cluster cluster = createMock(Cluster.class);
@@ -988,98 +975,51 @@ public class KerberosHelperTest extends EasyMockSupport {
         put("kerberos_admin/" + KerberosCredential.KEY_NAME_KEYTAB, 
kerberosCredential.getKeytab());
       }
     }}).anyTimes();
+    expect(cluster.getServiceComponentHosts("KERBEROS", 
"KERBEROS_CLIENT")).andReturn(
+        Arrays.asList(schKerberosClient)
+    ).once();
 
-    final Clusters clusters = injector.getInstance(Clusters.class);
-    expect(clusters.getHostsForCluster("c1"))
-        .andReturn(new HashMap<String, Host>() {
-          {
-            put("host1", host);
-          }
-        })
-        .once();
-    if((manageIdentities == null) || 
!"false".equalsIgnoreCase(manageIdentities)) {
+    if(identitiesManaged) {
+      final Clusters clusters = injector.getInstance(Clusters.class);
       expect(clusters.getHost("host1"))
           .andReturn(host)
           .once();
     }
 
     final AmbariManagementController ambariManagementController = 
injector.getInstance(AmbariManagementController.class);
-    
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
"host1"))
-        .andReturn(Collections.<String, Map<String, String>>emptyMap())
-        .once();
     
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
null))
         .andReturn(Collections.<String, Map<String, String>>emptyMap())
         .once();
     expect(ambariManagementController.getRoleCommandOrder(cluster))
-        .andReturn(createNiceMock(RoleCommandOrder.class))
+        .andReturn(createMock(RoleCommandOrder.class))
         .once();
 
-    final ConfigHelper configHelper = injector.getInstance(ConfigHelper.class);
-    expect(configHelper.getEffectiveConfigProperties(anyObject(Cluster.class), 
anyObject(Map.class)))
-        .andReturn(new HashMap<String, Map<String, String>>() {
-          {
-            put("cluster-env", new HashMap<String, String>() {{
-              put("kerberos_domain", "FOOBAR.COM");
-            }});
-          }
-        })
-        .times(2);
+    final KerberosIdentityDescriptor identityDescriptor1 = 
createMock(KerberosIdentityDescriptor.class);
+
+    final KerberosIdentityDescriptor identityDescriptor2 = 
createMock(KerberosIdentityDescriptor.class);
 
-    final KerberosPrincipalDescriptor principalDescriptor1 = 
createNiceMock(KerberosPrincipalDescriptor.class);
-    
expect(principalDescriptor1.getValue()).andReturn("component1/_HOST@${realm}").once();
-    
expect(principalDescriptor1.getType()).andReturn(KerberosPrincipalType.SERVICE).once();
-    
expect(principalDescriptor1.getConfiguration()).andReturn("service1-site/component1.kerberos.principal").once();
-
-    final KerberosPrincipalDescriptor principalDescriptor2 = 
createNiceMock(KerberosPrincipalDescriptor.class);
-    
expect(principalDescriptor2.getValue()).andReturn("component2/${host}@${realm}").once();
-    
expect(principalDescriptor2.getType()).andReturn(KerberosPrincipalType.SERVICE).once();
-    
expect(principalDescriptor2.getConfiguration()).andReturn("service2-site/component2.kerberos.principal").once();
-
-    final KerberosKeytabDescriptor keytabDescriptor1 = 
createNiceMock(KerberosKeytabDescriptor.class);
-    
expect(keytabDescriptor1.getFile()).andReturn("${keytab_dir}/service1.keytab").once();
-    expect(keytabDescriptor1.getOwnerName()).andReturn("service1").once();
-    expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").once();
-    expect(keytabDescriptor1.getGroupName()).andReturn("hadoop").once();
-    expect(keytabDescriptor1.getGroupAccess()).andReturn("").once();
-    
expect(keytabDescriptor1.getConfiguration()).andReturn("service1-site/component1.keytab.file").once();
-    expect(keytabDescriptor1.isCachable()).andReturn(false).once();
-
-    final KerberosKeytabDescriptor keytabDescriptor2 = 
createNiceMock(KerberosKeytabDescriptor.class);
-    
expect(keytabDescriptor2.getFile()).andReturn("${keytab_dir}/service2.keytab").once();
-    expect(keytabDescriptor2.getOwnerName()).andReturn("service2").once();
-    expect(keytabDescriptor2.getOwnerAccess()).andReturn("rw").once();
-    expect(keytabDescriptor2.getGroupName()).andReturn("hadoop").once();
-    expect(keytabDescriptor2.getGroupAccess()).andReturn("").once();
-    
expect(keytabDescriptor2.getConfiguration()).andReturn("service2-site/component2.keytab.file").once();
-    expect(keytabDescriptor2.isCachable()).andReturn(false).once();
-
-    final KerberosIdentityDescriptor identityDescriptor1 = 
createNiceMock(KerberosIdentityDescriptor.class);
-    
expect(identityDescriptor1.getPrincipalDescriptor()).andReturn(principalDescriptor1).once();
-    
expect(identityDescriptor1.getKeytabDescriptor()).andReturn(keytabDescriptor1).once();
-
-    final KerberosIdentityDescriptor identityDescriptor2 = 
createNiceMock(KerberosIdentityDescriptor.class);
-    
expect(identityDescriptor2.getPrincipalDescriptor()).andReturn(principalDescriptor2).once();
-    
expect(identityDescriptor2.getKeytabDescriptor()).andReturn(keytabDescriptor2).once();
-
-    final KerberosComponentDescriptor componentDescriptor1 = 
createNiceMock(KerberosComponentDescriptor.class);
-    expect(componentDescriptor1.getIdentities(true)).
+    final KerberosComponentDescriptor componentDescriptor1 = 
createMock(KerberosComponentDescriptor.class);
+    expect(componentDescriptor1.getIdentities(false)).
         andReturn(new ArrayList<KerberosIdentityDescriptor>() {{
           add(identityDescriptor1);
         }}).once();
 
-    final KerberosComponentDescriptor componentDescriptor2 = 
createNiceMock(KerberosComponentDescriptor.class);
-    expect(componentDescriptor2.getIdentities(true)).
+    final KerberosComponentDescriptor componentDescriptor2 = 
createMock(KerberosComponentDescriptor.class);
+    expect(componentDescriptor2.getIdentities(false)).
         andReturn(new ArrayList<KerberosIdentityDescriptor>() {{
           add(identityDescriptor2);
         }}).once();
 
-    final KerberosServiceDescriptor serviceDescriptor1 = 
createNiceMock(KerberosServiceDescriptor.class);
+    final KerberosServiceDescriptor serviceDescriptor1 = 
createMock(KerberosServiceDescriptor.class);
     
expect(serviceDescriptor1.getComponent("COMPONENT1")).andReturn(componentDescriptor1).once();
+    expect(serviceDescriptor1.getIdentities(false)).andReturn(null).once();
 
-    final KerberosServiceDescriptor serviceDescriptor2 = 
createNiceMock(KerberosServiceDescriptor.class);
+    final KerberosServiceDescriptor serviceDescriptor2 = 
createMock(KerberosServiceDescriptor.class);
     
expect(serviceDescriptor2.getComponent("COMPONENT2")).andReturn(componentDescriptor2).once();
+    expect(serviceDescriptor2.getIdentities(false)).andReturn(null).once();
 
-    final KerberosDescriptor kerberosDescriptor = 
createNiceMock(KerberosDescriptor.class);
+    final KerberosDescriptor kerberosDescriptor = 
createMock(KerberosDescriptor.class);
+    expect(kerberosDescriptor.getService("KERBEROS")).andReturn(null).once();
     
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).once();
     
expect(kerberosDescriptor.getService("SERVICE2")).andReturn(serviceDescriptor2).once();
 
@@ -1109,7 +1049,13 @@ public class KerberosHelperTest extends EasyMockSupport {
 
     // This is a STRICT mock to help ensure that the end result is what we 
want.
     final RequestStageContainer requestStageContainer = 
createStrictMock(RequestStageContainer.class);
-    if((manageIdentities == null) || 
!"false".equalsIgnoreCase(manageIdentities)) {
+    // Create Preparation Stage
+    expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
+    expect(requestStageContainer.getId()).andReturn(1L).once();
+    requestStageContainer.addStages(anyObject(List.class));
+    expectLastCall().once();
+
+    if(identitiesManaged) {
       // Create Principals Stage
       expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
       expect(requestStageContainer.getId()).andReturn(1L).once();
@@ -1154,26 +1100,7 @@ public class KerberosHelperTest extends EasyMockSupport {
 
     KerberosHelper kerberosHelper = injector.getInstance(KerberosHelper.class);
 
-    KerberosConfigDataFileWriter kerberosConfigDataFileWriter = 
createMock(KerberosConfigDataFileWriter.class);
-    kerberosConfigDataFileWriter.addRecord("cluster-env", "security_enabled", 
"false", "SET");
-    expectLastCall().times(1);
-    kerberosConfigDataFileWriter.addRecord("service1-site", 
"component1.kerberos.principal", null, "REMOVE");
-    expectLastCall().times(1);
-    kerberosConfigDataFileWriter.addRecord("service1-site", 
"component1.keytab.file", null, "REMOVE");
-    expectLastCall().times(1);
-    kerberosConfigDataFileWriter.addRecord("service2-site", 
"component2.kerberos.principal", null, "REMOVE");
-    expectLastCall().times(1);
-    kerberosConfigDataFileWriter.addRecord("service2-site", 
"component2.keytab.file", null, "REMOVE");
-    expectLastCall().times(1);
-    kerberosConfigDataFileWriter.close();
-    expectLastCall().times(1);
-
-    KerberosConfigDataFileWriterFactory factory = 
injector.getInstance(KerberosConfigDataFileWriterFactory.class);
-    expect(factory.createKerberosConfigDataFileWriter(anyObject(File.class)))
-        .andReturn(kerberosConfigDataFileWriter)
-        .times(1);
-
-    final StackId stackVersion = createNiceMock(StackId.class);
+    final StackId stackVersion = createMock(StackId.class);
 
     final ServiceComponentHost schKerberosClient = 
createMock(ServiceComponentHost.class);
     
expect(schKerberosClient.getServiceName()).andReturn(Service.Type.KERBEROS.name()).anyTimes();
@@ -1185,7 +1112,7 @@ public class KerberosHelperTest extends EasyMockSupport {
     expect(schKerberosClient.getState()).andReturn(State.INSTALLED).anyTimes();
 
     final ServiceComponentHost sch1 = createMock(ServiceComponentHost.class);
-    expect(sch1.getServiceName()).andReturn("SERVICE1").times(2);
+    expect(sch1.getServiceName()).andReturn("SERVICE1").times(1);
     expect(sch1.getServiceComponentName()).andReturn("COMPONENT1").once();
     
expect(sch1.getSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes();
     
expect(sch1.getDesiredSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes();
@@ -1199,7 +1126,7 @@ public class KerberosHelperTest extends EasyMockSupport {
     expect(expectLastCall()).once();
 
     final ServiceComponentHost sch2 = createMock(ServiceComponentHost.class);
-    expect(sch2.getServiceName()).andReturn("SERVICE2").times(2);
+    expect(sch2.getServiceName()).andReturn("SERVICE2").times(1);
     expect(sch2.getServiceComponentName()).andReturn("COMPONENT2").anyTimes();
     
expect(sch2.getSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes();
     
expect(sch2.getDesiredSecurityState()).andReturn(SecurityState.SECURED_KERBEROS).anyTimes();
@@ -1223,7 +1150,7 @@ public class KerberosHelperTest extends EasyMockSupport {
     
expect(serviceKerberos.getName()).andReturn(Service.Type.KERBEROS.name()).anyTimes();
     expect(serviceKerberos.getServiceComponents())
         .andReturn(Collections.singletonMap(Role.KERBEROS_CLIENT.name(), 
serviceComponentKerberosClient))
-        .times(3);
+        .times(1);
     serviceKerberos.setSecurityState(SecurityState.UNSECURED);
     expectLastCall().once();
 
@@ -1231,7 +1158,7 @@ public class KerberosHelperTest extends EasyMockSupport {
     expect(service1.getName()).andReturn("SERVICE1").anyTimes();
     expect(service1.getServiceComponents())
         .andReturn(Collections.<String, ServiceComponent>emptyMap())
-        .times(3);
+        .times(1);
     service1.setSecurityState(SecurityState.UNSECURED);
     expectLastCall().once();
 
@@ -1239,20 +1166,20 @@ public class KerberosHelperTest extends EasyMockSupport 
{
     expect(service2.getName()).andReturn("SERVICE2").anyTimes();
     expect(service2.getServiceComponents())
         .andReturn(Collections.<String, ServiceComponent>emptyMap())
-        .times(3);
+        .times(1);
     service2.setSecurityState(SecurityState.UNSECURED);
     expectLastCall().once();
 
-    final Map<String, String> kerberosEnvProperties = 
createNiceMock(Map.class);
+    final Map<String, String> kerberosEnvProperties = createMock(Map.class);
     
expect(kerberosEnvProperties.get("kdc_type")).andReturn("mit-kdc").anyTimes();
     
expect(kerberosEnvProperties.get("realm")).andReturn("FOOBAR.COM").anyTimes();
 
-    final Config kerberosEnvConfig = createNiceMock(Config.class);
+    final Config kerberosEnvConfig = createMock(Config.class);
     
expect(kerberosEnvConfig.getProperties()).andReturn(kerberosEnvProperties).anyTimes();
 
-    final Map<String, String> krb5ConfProperties = createNiceMock(Map.class);
+    final Map<String, String> krb5ConfProperties = createMock(Map.class);
 
-    final Config krb5ConfConfig = createNiceMock(Config.class);
+    final Config krb5ConfConfig = createMock(Config.class);
     
expect(krb5ConfConfig.getProperties()).andReturn(krb5ConfProperties).anyTimes();
 
     final Cluster cluster = createNiceMock(Cluster.class);
@@ -1290,96 +1217,40 @@ public class KerberosHelperTest extends EasyMockSupport 
{
       }
     }}).anyTimes();
 
-    final Clusters clusters = injector.getInstance(Clusters.class);
-    expect(clusters.getHostsForCluster("c1"))
-        .andReturn(new HashMap<String, Host>() {
-          {
-            put("host1", host);
-          }
-        })
-        .once();
-    expect(clusters.getHost("host1"))
-        .andReturn(host)
-        .once();
-
-
     final AmbariManagementController ambariManagementController = 
injector.getInstance(AmbariManagementController.class);
-    
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
"host1"))
-        .andReturn(Collections.<String, Map<String, String>>emptyMap())
-        .once();
     
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
null))
         .andReturn(Collections.<String, Map<String, String>>emptyMap())
         .once();
     expect(ambariManagementController.getRoleCommandOrder(cluster))
-        .andReturn(createNiceMock(RoleCommandOrder.class))
+        .andReturn(createMock(RoleCommandOrder.class))
         .once();
 
-    final ConfigHelper configHelper = injector.getInstance(ConfigHelper.class);
-    expect(configHelper.getEffectiveConfigProperties(anyObject(Cluster.class), 
anyObject(Map.class)))
-        .andReturn(new HashMap<String, Map<String, String>>() {
-          {
-            put("cluster-env", new HashMap<String, String>() {{
-              put("kerberos_domain", "FOOBAR.COM");
-            }});
-          }
-        })
-        .times(2);
+    final KerberosIdentityDescriptor identityDescriptor1 = 
createMock(KerberosIdentityDescriptor.class);
+
+    final KerberosIdentityDescriptor identityDescriptor2 = 
createMock(KerberosIdentityDescriptor.class);
 
-    final KerberosPrincipalDescriptor principalDescriptor1 = 
createNiceMock(KerberosPrincipalDescriptor.class);
-    
expect(principalDescriptor1.getValue()).andReturn("component1/_HOST@${realm}").once();
-    
expect(principalDescriptor1.getType()).andReturn(KerberosPrincipalType.SERVICE).once();
-    
expect(principalDescriptor1.getConfiguration()).andReturn("service1-site/component1.kerberos.principal").once();
-
-    final KerberosPrincipalDescriptor principalDescriptor2 = 
createNiceMock(KerberosPrincipalDescriptor.class);
-    
expect(principalDescriptor2.getValue()).andReturn("component2/${host}@${realm}").once();
-    
expect(principalDescriptor2.getType()).andReturn(KerberosPrincipalType.SERVICE).once();
-    
expect(principalDescriptor2.getConfiguration()).andReturn("service2-site/component2.kerberos.principal").once();
-
-    final KerberosKeytabDescriptor keytabDescriptor1 = 
createNiceMock(KerberosKeytabDescriptor.class);
-    
expect(keytabDescriptor1.getFile()).andReturn("${keytab_dir}/service1.keytab").once();
-    expect(keytabDescriptor1.getOwnerName()).andReturn("service1").once();
-    expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").once();
-    expect(keytabDescriptor1.getGroupName()).andReturn("hadoop").once();
-    expect(keytabDescriptor1.getGroupAccess()).andReturn("").once();
-    
expect(keytabDescriptor1.getConfiguration()).andReturn("service1-site/component1.keytab.file").once();
-    expect(keytabDescriptor1.isCachable()).andReturn(false).once();
-
-    final KerberosKeytabDescriptor keytabDescriptor2 = 
createNiceMock(KerberosKeytabDescriptor.class);
-    
expect(keytabDescriptor2.getFile()).andReturn("${keytab_dir}/service2.keytab").once();
-    expect(keytabDescriptor2.getOwnerName()).andReturn("service2").once();
-    expect(keytabDescriptor2.getOwnerAccess()).andReturn("rw").once();
-    expect(keytabDescriptor2.getGroupName()).andReturn("hadoop").once();
-    expect(keytabDescriptor2.getGroupAccess()).andReturn("").once();
-    
expect(keytabDescriptor2.getConfiguration()).andReturn("service2-site/component2.keytab.file").once();
-    expect(keytabDescriptor2.isCachable()).andReturn(false).once();
-
-    final KerberosIdentityDescriptor identityDescriptor1 = 
createNiceMock(KerberosIdentityDescriptor.class);
-    
expect(identityDescriptor1.getPrincipalDescriptor()).andReturn(principalDescriptor1).once();
-    
expect(identityDescriptor1.getKeytabDescriptor()).andReturn(keytabDescriptor1).once();
-
-    final KerberosIdentityDescriptor identityDescriptor2 = 
createNiceMock(KerberosIdentityDescriptor.class);
-    
expect(identityDescriptor2.getPrincipalDescriptor()).andReturn(principalDescriptor2).once();
-    
expect(identityDescriptor2.getKeytabDescriptor()).andReturn(keytabDescriptor2).once();
-
-    final KerberosComponentDescriptor componentDescriptor1 = 
createNiceMock(KerberosComponentDescriptor.class);
-    expect(componentDescriptor1.getIdentities(true)).
+    final KerberosComponentDescriptor componentDescriptor1 = 
createMock(KerberosComponentDescriptor.class);
+    expect(componentDescriptor1.getIdentities(false)).
         andReturn(new ArrayList<KerberosIdentityDescriptor>() {{
           add(identityDescriptor1);
         }}).once();
 
-    final KerberosComponentDescriptor componentDescriptor2 = 
createNiceMock(KerberosComponentDescriptor.class);
-    expect(componentDescriptor2.getIdentities(true)).
+    final KerberosComponentDescriptor componentDescriptor2 = 
createMock(KerberosComponentDescriptor.class);
+    expect(componentDescriptor2.getIdentities(false)).
         andReturn(new ArrayList<KerberosIdentityDescriptor>() {{
           add(identityDescriptor2);
         }}).once();
 
-    final KerberosServiceDescriptor serviceDescriptor1 = 
createNiceMock(KerberosServiceDescriptor.class);
+    final KerberosServiceDescriptor serviceDescriptor1 = 
createMock(KerberosServiceDescriptor.class);
     
expect(serviceDescriptor1.getComponent("COMPONENT1")).andReturn(componentDescriptor1).once();
+    expect(serviceDescriptor1.getIdentities(false)).andReturn(null).times(1);
 
-    final KerberosServiceDescriptor serviceDescriptor2 = 
createNiceMock(KerberosServiceDescriptor.class);
+    final KerberosServiceDescriptor serviceDescriptor2 = 
createMock(KerberosServiceDescriptor.class);
     
expect(serviceDescriptor2.getComponent("COMPONENT2")).andReturn(componentDescriptor2).once();
+    expect(serviceDescriptor2.getIdentities(false)).andReturn(null).times(1);
 
-    final KerberosDescriptor kerberosDescriptor = 
createNiceMock(KerberosDescriptor.class);
+    final KerberosDescriptor kerberosDescriptor = 
createMock(KerberosDescriptor.class);
+    expect(kerberosDescriptor.getService("KERBEROS")).andReturn(null).once();
     
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).once();
     
expect(kerberosDescriptor.getService("SERVICE2")).andReturn(serviceDescriptor2).once();
 
@@ -1410,6 +1281,11 @@ public class KerberosHelperTest extends EasyMockSupport {
 
     // This is a STRICT mock to help ensure that the end result is what we 
want.
     final RequestStageContainer requestStageContainer = 
createStrictMock(RequestStageContainer.class);
+    // Preparation Stage
+    expect(requestStageContainer.getLastStageId()).andReturn(2L).anyTimes();
+    expect(requestStageContainer.getId()).andReturn(1L).once();
+    requestStageContainer.addStages(anyObject(List.class));
+    expectLastCall().once();
     // Update Configs Stage
     expect(requestStageContainer.getLastStageId()).andReturn(2L).anyTimes();
     expect(requestStageContainer.getId()).andReturn(1L).once();
@@ -1451,7 +1327,7 @@ public class KerberosHelperTest extends EasyMockSupport {
 
     KerberosHelper kerberosHelper = injector.getInstance(KerberosHelper.class);
 
-    final StackId stackVersion = createNiceMock(StackId.class);
+    final StackId stackVersion = createMock(StackId.class);
 
     final ServiceComponentHost schKerberosClient = 
createMock(ServiceComponentHost.class);
     
expect(schKerberosClient.getServiceName()).andReturn(Service.Type.KERBEROS.name()).anyTimes();
@@ -1503,7 +1379,6 @@ public class KerberosHelperTest extends EasyMockSupport {
     }
     else {
       schKerberosClientInvalid = null;
-      sch1a = null;
       hostInvalid = null;
     }
 
@@ -1522,30 +1397,30 @@ public class KerberosHelperTest extends EasyMockSupport 
{
     
expect(serviceKerberos.getName()).andReturn(Service.Type.KERBEROS.name()).anyTimes();
     expect(serviceKerberos.getServiceComponents())
         .andReturn(Collections.singletonMap(Role.KERBEROS_CLIENT.name(), 
serviceComponentKerberosClient))
-        .times(3);
+        .times(1);
 
     final Service service1 = createStrictMock(Service.class);
     expect(service1.getName()).andReturn("SERVICE1").anyTimes();
     expect(service1.getServiceComponents())
         .andReturn(Collections.<String, ServiceComponent>emptyMap())
-        .times(3);
+        .times(1);
 
     final Service service2 = createStrictMock(Service.class);
     expect(service2.getName()).andReturn("SERVICE2").anyTimes();
     expect(service2.getServiceComponents())
         .andReturn(Collections.<String, ServiceComponent>emptyMap())
-        .times(3);
+        .times(1);
 
-    final Map<String, String> kerberosEnvProperties = 
createNiceMock(Map.class);
+    final Map<String, String> kerberosEnvProperties = createMock(Map.class);
     
expect(kerberosEnvProperties.get("kdc_type")).andReturn("mit-kdc").anyTimes();
     
expect(kerberosEnvProperties.get("realm")).andReturn("FOOBAR.COM").anyTimes();
 
-    final Config kerberosEnvConfig = createNiceMock(Config.class);
+    final Config kerberosEnvConfig = createMock(Config.class);
     
expect(kerberosEnvConfig.getProperties()).andReturn(kerberosEnvProperties).anyTimes();
 
-    final Map<String, String> krb5ConfProperties = createNiceMock(Map.class);
+    final Map<String, String> krb5ConfProperties = createMock(Map.class);
 
-    final Config krb5ConfConfig = createNiceMock(Config.class);
+    final Config krb5ConfConfig = createMock(Config.class);
     
expect(krb5ConfConfig.getProperties()).andReturn(krb5ConfProperties).anyTimes();
 
     final Cluster cluster = createNiceMock(Cluster.class);
@@ -1587,99 +1462,40 @@ public class KerberosHelperTest extends EasyMockSupport 
{
       }
     }}).anyTimes();
 
-    final Clusters clusters = injector.getInstance(Clusters.class);
-    expect(clusters.getHostsForCluster("c1"))
-        .andReturn(new HashMap<String, Host>() {
-          {
-            put("host1", host);
-
-            if (testInvalidHost) {
-              put("host2", hostInvalid);
-            }
-          }
-        })
-        .once();
-    expect(clusters.getHost("host1"))
-        .andReturn(host)
-        .once();
-
     final AmbariManagementController ambariManagementController = 
injector.getInstance(AmbariManagementController.class);
-    
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
"host1"))
-        .andReturn(Collections.<String, Map<String, String>>emptyMap())
-        .once();
     
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
null))
         .andReturn(Collections.<String, Map<String, String>>emptyMap())
         .once();
     expect(ambariManagementController.getRoleCommandOrder(cluster))
-        .andReturn(createNiceMock(RoleCommandOrder.class))
+        .andReturn(createMock(RoleCommandOrder.class))
         .once();
 
-    final ConfigHelper configHelper = injector.getInstance(ConfigHelper.class);
-    expect(configHelper.getEffectiveConfigProperties(anyObject(Cluster.class), 
anyObject(Map.class)))
-        .andReturn(new HashMap<String, Map<String, String>>() {
-          {
-            put("cluster-env", new HashMap<String, String>() {{
-              put("kerberos_domain", "FOOBAR.COM");
-            }});
-          }
-        })
-        .times(2);
+    final KerberosIdentityDescriptor identityDescriptor1 = 
createMock(KerberosIdentityDescriptor.class);
 
-    final KerberosPrincipalDescriptor principalDescriptor1 = 
createNiceMock(KerberosPrincipalDescriptor.class);
-    
expect(principalDescriptor1.getValue()).andReturn("component1/_HOST@${realm}").once();
-    
expect(principalDescriptor1.getType()).andReturn(KerberosPrincipalType.SERVICE).once();
-    
expect(principalDescriptor1.getConfiguration()).andReturn("service1-site/component1.kerberos.principal").once();
-
-    final KerberosPrincipalDescriptor principalDescriptor2 = 
createNiceMock(KerberosPrincipalDescriptor.class);
-    
expect(principalDescriptor2.getValue()).andReturn("component2/${host}@${realm}").once();
-    
expect(principalDescriptor2.getType()).andReturn(KerberosPrincipalType.SERVICE).once();
-    
expect(principalDescriptor2.getConfiguration()).andReturn("service2-site/component2.kerberos.principal").once();
-
-    final KerberosKeytabDescriptor keytabDescriptor1 = 
createNiceMock(KerberosKeytabDescriptor.class);
-    
expect(keytabDescriptor1.getFile()).andReturn("${keytab_dir}/service1.keytab").once();
-    expect(keytabDescriptor1.getOwnerName()).andReturn("service1").once();
-    expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").once();
-    expect(keytabDescriptor1.getGroupName()).andReturn("hadoop").once();
-    expect(keytabDescriptor1.getGroupAccess()).andReturn("").once();
-    
expect(keytabDescriptor1.getConfiguration()).andReturn("service1-site/component1.keytab.file").once();
-    expect(keytabDescriptor1.isCachable()).andReturn(false).once();
-
-    final KerberosKeytabDescriptor keytabDescriptor2 = 
createNiceMock(KerberosKeytabDescriptor.class);
-    
expect(keytabDescriptor2.getFile()).andReturn("${keytab_dir}/service2.keytab").once();
-    expect(keytabDescriptor2.getOwnerName()).andReturn("service2").once();
-    expect(keytabDescriptor2.getOwnerAccess()).andReturn("rw").once();
-    expect(keytabDescriptor2.getGroupName()).andReturn("hadoop").once();
-    expect(keytabDescriptor2.getGroupAccess()).andReturn("").once();
-    
expect(keytabDescriptor2.getConfiguration()).andReturn("service2-site/component2.keytab.file").once();
-    expect(keytabDescriptor2.isCachable()).andReturn(false).once();
-
-    final KerberosIdentityDescriptor identityDescriptor1 = 
createNiceMock(KerberosIdentityDescriptor.class);
-    
expect(identityDescriptor1.getPrincipalDescriptor()).andReturn(principalDescriptor1).once();
-    
expect(identityDescriptor1.getKeytabDescriptor()).andReturn(keytabDescriptor1).once();
-
-    final KerberosIdentityDescriptor identityDescriptor2 = 
createNiceMock(KerberosIdentityDescriptor.class);
-    
expect(identityDescriptor2.getPrincipalDescriptor()).andReturn(principalDescriptor2).once();
-    
expect(identityDescriptor2.getKeytabDescriptor()).andReturn(keytabDescriptor2).once();
-
-    final KerberosComponentDescriptor componentDescriptor1 = 
createNiceMock(KerberosComponentDescriptor.class);
-    expect(componentDescriptor1.getIdentities(true)).
+    final KerberosIdentityDescriptor identityDescriptor2 = 
createMock(KerberosIdentityDescriptor.class);
+
+    final KerberosComponentDescriptor componentDescriptor1 = 
createMock(KerberosComponentDescriptor.class);
+    expect(componentDescriptor1.getIdentities(false)).
         andReturn(new ArrayList<KerberosIdentityDescriptor>() {{
           add(identityDescriptor1);
         }}).once();
 
-    final KerberosComponentDescriptor componentDescriptor2 = 
createNiceMock(KerberosComponentDescriptor.class);
-    expect(componentDescriptor2.getIdentities(true)).
+    final KerberosComponentDescriptor componentDescriptor2 = 
createMock(KerberosComponentDescriptor.class);
+    expect(componentDescriptor2.getIdentities(false)).
         andReturn(new ArrayList<KerberosIdentityDescriptor>() {{
           add(identityDescriptor2);
         }}).once();
 
-    final KerberosServiceDescriptor serviceDescriptor1 = 
createNiceMock(KerberosServiceDescriptor.class);
+    final KerberosServiceDescriptor serviceDescriptor1 = 
createMock(KerberosServiceDescriptor.class);
     
expect(serviceDescriptor1.getComponent("COMPONENT1")).andReturn(componentDescriptor1).once();
+    expect(serviceDescriptor1.getIdentities(false)).andReturn(null).once();
 
-    final KerberosServiceDescriptor serviceDescriptor2 = 
createNiceMock(KerberosServiceDescriptor.class);
+    final KerberosServiceDescriptor serviceDescriptor2 = 
createMock(KerberosServiceDescriptor.class);
     
expect(serviceDescriptor2.getComponent("COMPONENT2")).andReturn(componentDescriptor2).once();
+    expect(serviceDescriptor2.getIdentities(false)).andReturn(null).once();
 
-    final KerberosDescriptor kerberosDescriptor = 
createNiceMock(KerberosDescriptor.class);
+    final KerberosDescriptor kerberosDescriptor = 
createMock(KerberosDescriptor.class);
+    expect(kerberosDescriptor.getService("KERBEROS")).andReturn(null).once();
     
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).once();
     
expect(kerberosDescriptor.getService("SERVICE2")).andReturn(serviceDescriptor2).once();
 
@@ -1708,6 +1524,11 @@ public class KerberosHelperTest extends EasyMockSupport {
     if (mockRequestStageContainer) {
       // This is a STRICT mock to help ensure that the end result is what we 
want.
       requestStageContainer = createStrictMock(RequestStageContainer.class);
+      // Create Preparation Stage
+      expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
+      expect(requestStageContainer.getId()).andReturn(1L).once();
+      requestStageContainer.addStages(anyObject(List.class));
+      expectLastCall().once();
       // Create Principals Stage
       expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
       expect(requestStageContainer.getId()).andReturn(1L).once();
@@ -1871,6 +1692,8 @@ public class KerberosHelperTest extends EasyMockSupport {
 
     expect(kerberosDescriptorFactory.createInstance(anyObject(Map.class)))
         .andReturn(kerberosDescriptor).once();
+
+    expect(metaInfo.getKerberosDescriptor("HDP", 
"2.2")).andReturn(null).once();
   }
 
   private void setupGetDescriptorFromStack(KerberosDescriptor 
kerberosDescriptor) throws Exception {
@@ -1918,11 +1741,12 @@ public class KerberosHelperTest extends EasyMockSupport 
{
     expect(sch1C.getServiceComponentName()).andReturn("COMPONENT1").anyTimes();
     expect(sch1C.getHostName()).andReturn("hostC").anyTimes();
 
-    final ServiceComponentHost sch2 = 
createStrictMock(ServiceComponentHost.class);
+    final ServiceComponentHost sch2 = createMock(ServiceComponentHost.class);
     expect(sch2.getServiceName()).andReturn("SERVICE2").anyTimes();
     expect(sch2.getServiceComponentName()).andReturn("COMPONENT3").anyTimes();
+    expect(sch2.getHostName()).andReturn("hostA").anyTimes();
 
-    final ServiceComponentHost sch3 = 
createStrictMock(ServiceComponentHost.class);
+    final ServiceComponentHost sch3 = createMock(ServiceComponentHost.class);
     expect(sch3.getServiceName()).andReturn("SERVICE3").anyTimes();
     expect(sch3.getServiceComponentName()).andReturn("COMPONENT3").anyTimes();
     expect(sch3.getHostName()).andReturn("hostA").anyTimes();
@@ -1947,30 +1771,30 @@ public class KerberosHelperTest extends EasyMockSupport 
{
     
expect(serviceKerberos.getName()).andReturn(Service.Type.KERBEROS.name()).anyTimes();
     expect(serviceKerberos.getServiceComponents())
         .andReturn(Collections.singletonMap(Role.KERBEROS_CLIENT.name(), 
serviceComponentKerberosClient))
-        .times(5);
+        .times(1);
 
     final Service service1 = createStrictMock(Service.class);
     expect(service1.getName()).andReturn("SERVICE1").anyTimes();
     expect(service1.getServiceComponents())
         .andReturn(Collections.<String, ServiceComponent>emptyMap())
-        .times(5);
+        .times(1);
 
     final Service service2 = createStrictMock(Service.class);
     expect(service2.getName()).andReturn("SERVICE2").anyTimes();
     expect(service2.getServiceComponents())
         .andReturn(Collections.<String, ServiceComponent>emptyMap())
-        .times(5);
+        .times(1);
 
-    final Map<String, String> kerberosEnvProperties = 
createNiceMock(Map.class);
+    final Map<String, String> kerberosEnvProperties = createMock(Map.class);
     
expect(kerberosEnvProperties.get("kdc_type")).andReturn("mit-kdc").anyTimes();
     
expect(kerberosEnvProperties.get("realm")).andReturn("FOOBAR.COM").anyTimes();
 
-    final Config kerberosEnvConfig = createNiceMock(Config.class);
+    final Config kerberosEnvConfig = createMock(Config.class);
     
expect(kerberosEnvConfig.getProperties()).andReturn(kerberosEnvProperties).anyTimes();
 
-    final Map<String, String> krb5ConfProperties = createNiceMock(Map.class);
+    final Map<String, String> krb5ConfProperties = createMock(Map.class);
 
-    final Config krb5ConfConfig = createNiceMock(Config.class);
+    final Config krb5ConfConfig = createMock(Config.class);
     
expect(krb5ConfConfig.getProperties()).andReturn(krb5ConfProperties).anyTimes();
 
     final Cluster cluster = createNiceMock(Cluster.class);
@@ -2023,51 +1847,14 @@ public class KerberosHelperTest extends EasyMockSupport 
{
       }
     }}).anyTimes();
 
-    final Clusters clusters = injector.getInstance(Clusters.class);
-    expect(clusters.getHostsForCluster("c1"))
-        .andReturn(new HashMap<String, Host>() {
-          {
-            put("hostA", hostA);
-            put("hostB", hostB);
-            put("hostC", hostC);
-          }
-        })
-        .once();
-    expect(clusters.getHost("hostA"))
-        .andReturn(hostA)
-        .times(1);
-    expect(clusters.getHost("hostB"))
-        .andReturn(hostB)
-        .times(1);
-
     final AmbariManagementController ambariManagementController = 
injector.getInstance(AmbariManagementController.class);
-    
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
"hostA"))
-        .andReturn(Collections.<String, Map<String, String>>emptyMap())
-        .once();
-    
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
"hostB"))
-        .andReturn(Collections.<String, Map<String, String>>emptyMap())
-        .once();
-    
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
"hostC"))
-        .andReturn(Collections.<String, Map<String, String>>emptyMap())
-        .once();
     
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
null))
         .andReturn(Collections.<String, Map<String, String>>emptyMap())
         .times(3);
     expect(ambariManagementController.getRoleCommandOrder(cluster))
-        .andReturn(createNiceMock(RoleCommandOrder.class))
+        .andReturn(createMock(RoleCommandOrder.class))
         .once();
 
-    final ConfigHelper configHelper = injector.getInstance(ConfigHelper.class);
-    expect(configHelper.getEffectiveConfigProperties(anyObject(Cluster.class), 
anyObject(Map.class)))
-        .andReturn(new HashMap<String, Map<String, String>>() {
-          {
-            put("cluster-env", new HashMap<String, String>() {{
-              put("kerberos_domain", "FOOBAR.COM");
-            }});
-          }
-        })
-        .times(4);
-
     final KerberosPrincipalDescriptor principalDescriptor1a = 
createMock(KerberosPrincipalDescriptor.class);
     
expect(principalDescriptor1a.getValue()).andReturn("component1a/_HOST@${realm}").anyTimes();
     
expect(principalDescriptor1a.getType()).andReturn(KerberosPrincipalType.SERVICE).anyTimes();
@@ -2087,22 +1874,8 @@ public class KerberosHelperTest extends EasyMockSupport {
     
expect(principalDescriptor3.getConfiguration()).andReturn("service3-site/component3.kerberos.principal").anyTimes();
 
     final KerberosKeytabDescriptor keytabDescriptor1 = 
createMock(KerberosKeytabDescriptor.class);
-    
expect(keytabDescriptor1.getFile()).andReturn("${keytab_dir}/service1.keytab").times(3);
-    expect(keytabDescriptor1.getOwnerName()).andReturn("service1").times(3);
-    expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").times(3);
-    expect(keytabDescriptor1.getGroupName()).andReturn("hadoop").times(3);
-    expect(keytabDescriptor1.getGroupAccess()).andReturn("").times(3);
-    
expect(keytabDescriptor1.getConfiguration()).andReturn("service1-site/component1.keytab.file").times(3);
-    expect(keytabDescriptor1.isCachable()).andReturn(false).times(3);
 
     final KerberosKeytabDescriptor keytabDescriptor3 = 
createMock(KerberosKeytabDescriptor.class);
-    
expect(keytabDescriptor3.getFile()).andReturn("${keytab_dir}/service3.keytab").once();
-    expect(keytabDescriptor3.getOwnerName()).andReturn("service3").once();
-    expect(keytabDescriptor3.getOwnerAccess()).andReturn("rw").once();
-    expect(keytabDescriptor3.getGroupName()).andReturn("hadoop").once();
-    expect(keytabDescriptor3.getGroupAccess()).andReturn("").once();
-    
expect(keytabDescriptor3.getConfiguration()).andReturn("service3-site/component3.keytab.file").once();
-    expect(keytabDescriptor3.isCachable()).andReturn(false).times(1);
 
     final KerberosIdentityDescriptor identityDescriptor1a = 
createMock(KerberosIdentityDescriptor.class);
     expect(identityDescriptor1a.getName()).andReturn("identity1a").anyTimes();
@@ -2123,48 +1896,31 @@ public class KerberosHelperTest extends EasyMockSupport 
{
       add(identityDescriptor1b);
     }};
     final KerberosComponentDescriptor componentDescriptor1 = 
createStrictMock(KerberosComponentDescriptor.class);
-    
expect(componentDescriptor1.getIdentities(true)).andReturn(identityDescriptors1).times(1);
-    
expect(componentDescriptor1.getConfigurations(true)).andReturn(null).times(1);
-    
expect(componentDescriptor1.getIdentities(true)).andReturn(identityDescriptors1).times(1);
-    
expect(componentDescriptor1.getConfigurations(true)).andReturn(null).times(1);
-    
expect(componentDescriptor1.getIdentities(true)).andReturn(identityDescriptors1).times(1);
-    
expect(componentDescriptor1.getConfigurations(true)).andReturn(null).times(1);
-    
expect(componentDescriptor1.getIdentities(true)).andReturn(identityDescriptors1).times(1);
-    
expect(componentDescriptor1.getAuthToLocalProperties()).andReturn(null).times(1);
+    
expect(componentDescriptor1.getIdentities(false)).andReturn(identityDescriptors1).times(3);
 
     final ArrayList<KerberosIdentityDescriptor> identityDescriptors3 = new 
ArrayList<KerberosIdentityDescriptor>() {{
       add(identityDescriptor3);
     }};
     final KerberosComponentDescriptor componentDescriptor3 = 
createStrictMock(KerberosComponentDescriptor.class);
-    
expect(componentDescriptor3.getIdentities(true)).andReturn(identityDescriptors3).times(1);
-    
expect(componentDescriptor3.getConfigurations(true)).andReturn(null).times(1);
+    
expect(componentDescriptor3.getIdentities(false)).andReturn(identityDescriptors3).times(1);
 
     final KerberosServiceDescriptor serviceDescriptor1 = 
createMock(KerberosServiceDescriptor.class);
-    expect(serviceDescriptor1.getIdentities(true)).andReturn(null).times(4);
-    expect(serviceDescriptor1.getName()).andReturn("SERVICE1").times(1);
-    expect(serviceDescriptor1.getComponents()).andReturn(new HashMap<String, 
KerberosComponentDescriptor>(){{
-      put("COMPONENT1", componentDescriptor1);
-    }}).times(1);
-    
expect(serviceDescriptor1.getComponent("COMPONENT1")).andReturn(componentDescriptor1).times(3);
-    
expect(serviceDescriptor1.getAuthToLocalProperties()).andReturn(null).once();
+    expect(serviceDescriptor1.getIdentities(false)).andReturn(null).times(1);
+    
expect(serviceDescriptor1.getComponent("COMPONENT1")).andReturn(componentDescriptor1).times(1);
+    expect(serviceDescriptor1.getIdentities(false)).andReturn(null).times(1);
+    
expect(serviceDescriptor1.getComponent("COMPONENT1")).andReturn(componentDescriptor1).times(1);
+    expect(serviceDescriptor1.getIdentities(false)).andReturn(null).times(1);
+    
expect(serviceDescriptor1.getComponent("COMPONENT1")).andReturn(componentDescriptor1).times(1);
 
     final KerberosServiceDescriptor serviceDescriptor3 = 
createMock(KerberosServiceDescriptor.class);
-    expect(serviceDescriptor3.getIdentities(true)).andReturn(null).times(1);
-    expect(serviceDescriptor3.getName()).andReturn("SERVICE3").times(1);
-    
expect(serviceDescriptor3.getComponent("COMPONENT3")).andReturn(componentDescriptor3).once();
+    expect(serviceDescriptor3.getIdentities(false)).andReturn(null).times(1);
+    
expect(serviceDescriptor3.getComponent("COMPONENT3")).andReturn(componentDescriptor3).times(1);
 
     final KerberosDescriptor kerberosDescriptor = 
createStrictMock(KerberosDescriptor.class);
-    expect(kerberosDescriptor.getProperties()).andReturn(null).once();
-    
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).times(3);
+    
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).times(1);
     
expect(kerberosDescriptor.getService("SERVICE3")).andReturn(serviceDescriptor3).times(1);
-    expect(kerberosDescriptor.getIdentities()).andReturn(null).once();
-    
expect(kerberosDescriptor.getAuthToLocalProperties()).andReturn(null).once();
-
-    expect(kerberosDescriptor.getServices()).andReturn(new HashMap<String, 
KerberosServiceDescriptor>()
-    {{
-      put("SERVICE1", serviceDescriptor1);
-      put("SERVICE3", serviceDescriptor3);
-    }}).once();
+    
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).times(1);
+    
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).times(1);
 
     setupGetDescriptorFromCluster(kerberosDescriptor);
 
@@ -2188,6 +1944,11 @@ public class KerberosHelperTest extends EasyMockSupport {
 
     // This is a STRICT mock to help ensure that the end result is what we 
want.
     final RequestStageContainer requestStageContainer = 
createStrictMock(RequestStageContainer.class);
+    // Preparation Stage
+    expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
+    expect(requestStageContainer.getId()).andReturn(1L).once();
+    requestStageContainer.addStages(anyObject(List.class));
+    expectLastCall().once();
     // Create Principals Stage
     expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
     expect(requestStageContainer.getId()).andReturn(1L).once();
@@ -2239,11 +2000,11 @@ public class KerberosHelperTest extends EasyMockSupport 
{
     expect(sch1.getServiceComponentName()).andReturn("COMPONENT1").anyTimes();
     expect(sch1.getHostName()).andReturn("host1").anyTimes();
 
-    final ServiceComponentHost sch2 = 
createStrictMock(ServiceComponentHost.class);
+    final ServiceComponentHost sch2 = createMock(ServiceComponentHost.class);
     expect(sch2.getServiceName()).andReturn("SERVICE2").anyTimes();
     expect(sch2.getServiceComponentName()).andReturn("COMPONENT3").anyTimes();
 
-    final ServiceComponentHost sch3 = 
createStrictMock(ServiceComponentHost.class);
+    final ServiceComponentHost sch3 = createMock(ServiceComponentHost.class);
     expect(sch3.getServiceName()).andReturn("SERVICE3").anyTimes();
     expect(sch3.getServiceComponentName()).andReturn("COMPONENT3").anyTimes();
     expect(sch3.getHostName()).andReturn("host1").anyTimes();
@@ -2260,30 +2021,30 @@ public class KerberosHelperTest extends EasyMockSupport 
{
     
expect(serviceKerberos.getName()).andReturn(Service.Type.KERBEROS.name()).anyTimes();
     expect(serviceKerberos.getServiceComponents())
         .andReturn(Collections.singletonMap(Role.KERBEROS_CLIENT.name(), 
serviceComponentKerberosClient))
-        .times(3);
+        .times(1);
 
     final Service service1 = createStrictMock(Service.class);
     expect(service1.getName()).andReturn("SERVICE1").anyTimes();
     expect(service1.getServiceComponents())
         .andReturn(Collections.<String, ServiceComponent>emptyMap())
-        .times(3);
+        .times(1);
 
     final Service service2 = createStrictMock(Service.class);
     expect(service2.getName()).andReturn("SERVICE2").anyTimes();
     expect(service2.getServiceComponents())
         .andReturn(Collections.<String, ServiceComponent>emptyMap())
-        .times(3);
+        .times(1);
 
-    final Map<String, String> kerberosEnvProperties = 
createNiceMock(Map.class);
+    final Map<String, String> kerberosEnvProperties = createMock(Map.class);
     
expect(kerberosEnvProperties.get("kdc_type")).andReturn("mit-kdc").anyTimes();
     
expect(kerberosEnvProperties.get("realm")).andReturn("FOOBAR.COM").anyTimes();
 
-    final Config kerberosEnvConfig = createNiceMock(Config.class);
+    final Config kerberosEnvConfig = createMock(Config.class);
     
expect(kerberosEnvConfig.getProperties()).andReturn(kerberosEnvProperties).anyTimes();
 
-    final Map<String, String> krb5ConfProperties = createNiceMock(Map.class);
+    final Map<String, String> krb5ConfProperties = createMock(Map.class);
 
-    final Config krb5ConfConfig = createNiceMock(Config.class);
+    final Config krb5ConfConfig = createMock(Config.class);
     
expect(krb5ConfConfig.getProperties()).andReturn(krb5ConfProperties).anyTimes();
 
     final Cluster cluster = createNiceMock(Cluster.class);
@@ -2321,40 +2082,14 @@ public class KerberosHelperTest extends EasyMockSupport 
{
       }
     }}).anyTimes();
 
-    final Clusters clusters = injector.getInstance(Clusters.class);
-    expect(clusters.getHostsForCluster("c1"))
-        .andReturn(new HashMap<String, Host>() {
-          {
-            put("host1", host);
-          }
-        })
-        .once();
-    expect(clusters.getHost("host1"))
-        .andReturn(host)
-        .once();
-
     final AmbariManagementController ambariManagementController = 
injector.getInstance(AmbariManagementController.class);
-    
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
"host1"))
-        .andReturn(Collections.<String, Map<String, String>>emptyMap())
-        .once();
     
expect(ambariManagementController.findConfigurationTagsWithOverrides(cluster, 
null))
         .andReturn(Collections.<String, Map<String, String>>emptyMap())
         .once();
     expect(ambariManagementController.getRoleCommandOrder(cluster))
-        .andReturn(createNiceMock(RoleCommandOrder.class))
+        .andReturn(createMock(RoleCommandOrder.class))
         .once();
 
-    final ConfigHelper configHelper = injector.getInstance(ConfigHelper.class);
-    expect(configHelper.getEffectiveConfigProperties(anyObject(Cluster.class), 
anyObject(Map.class)))
-        .andReturn(new HashMap<String, Map<String, String>>() {
-          {
-            put("cluster-env", new HashMap<String, String>() {{
-              put("kerberos_domain", "FOOBAR.COM");
-            }});
-          }
-        })
-        .times(2);
-
     final KerberosPrincipalDescriptor principalDescriptor1a = 
createMock(KerberosPrincipalDescriptor.class);
     
expect(principalDescriptor1a.getValue()).andReturn("component1a/_HOST@${realm}").anyTimes();
     
expect(principalDescriptor1a.getType()).andReturn(KerberosPrincipalType.SERVICE).anyTimes();
@@ -2374,22 +2109,8 @@ public class KerberosHelperTest extends EasyMockSupport {
     
expect(principalDescriptor3.getConfiguration()).andReturn("service3-site/component3.kerberos.principal").anyTimes();
 
     final KerberosKeytabDescriptor keytabDescriptor1 = 
createMock(KerberosKeytabDescriptor.class);
-    
expect(keytabDescriptor1.getFile()).andReturn("${keytab_dir}/service1.keytab").once();
-    expect(keytabDescriptor1.getOwnerName()).andReturn("service1").once();
-    expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").once();
-    expect(keytabDescriptor1.getGroupName()).andReturn("hadoop").once();
-    expect(keytabDescriptor1.getGroupAccess()).andReturn("").once();
-    
expect(keytabDescriptor1.getConfiguration()).andReturn("service1-site/component1.keytab.file").once();
-    expect(keytabDescriptor1.isCachable()).andReturn(false).once();
 
     final KerberosKeytabDescriptor keytabDescriptor3 = 
createMock(KerberosKeytabDescriptor.class);
-    
expect(keytabDescriptor3.getFile()).andReturn("${keytab_dir}/service3.keytab").once();
-    expect(keytabDescriptor3.getOwnerName()).andReturn("service3").once();
-    expect(keytabDescriptor3.getOwnerAccess()).andReturn("rw").once();
-    expect(keytabDescriptor3.getGroupName()).andReturn("hadoop").once();
-    expect(keytabDescriptor3.getGroupAccess()).andReturn("").once();
-    
expect(keytabDescriptor3.getConfiguration()).andReturn("service3-site/component3.keytab.file").once();
-    expect(keytabDescriptor3.isCachable()).andReturn(false).once();
 
     final KerberosIdentityDescriptor identityDescriptor1a = 
createMock(KerberosIdentityDescriptor.class);
     expect(identityDescriptor1a.getName()).andReturn("identity1a").anyTimes();
@@ -2410,44 +2131,25 @@ public class KerberosHelperTest extends EasyMockSupport 
{
       add(identityDescriptor1b);
     }};
     final KerberosComponentDescriptor componentDescriptor1 = 
createStrictMock(KerberosComponentDescriptor.class);
-    
expect(componentDescriptor1.getIdentities(true)).andReturn(identityDescriptors1).times(1);
-    
expect(componentDescriptor1.getConfigurations(true)).andReturn(null).times(1);
-    
expect(componentDescriptor1.getIdentities(true)).andReturn(identityDescriptors1).times(1);
-    
expect(componentDescriptor1.getAuthToLocalProperties()).andReturn(null).times(1);
+    
expect(componentDescriptor1.getIdentities(false)).andReturn(identityDescriptors1).times(1);
 
     final ArrayList<KerberosIdentityDescriptor> identityDescriptors3 = new 
ArrayList<KerberosIdentityDescriptor>() {{
       add(identityDescriptor3);
     }};
     final KerberosComponentDescriptor componentDescriptor3 = 
createStrictMock(KerberosComponentDescriptor.class);
-    
expect(componentDescriptor3.getIdentities(true)).andReturn(identityDescriptors3).times(1);
-    
expect(componentDescriptor3.getConfigurations(true)).andReturn(null).times(1);
+    
expect(componentDescriptor3.getIdentities(false)).andReturn(identityDescriptors3).times(1);
 
     final KerberosServiceDescriptor serviceDescriptor1 = 
createMock(KerberosServiceDescriptor.class);
-    expect(serviceDescriptor1.getIdentities(true)).andReturn(null).times(1);
-    expect(serviceDescriptor1.getName()).andReturn("SERVICE1").times(1);
-    expect(serviceDescriptor1.getIdentities(true)).andReturn(null).times(1);
-    expect(serviceDescriptor1.getComponents()).andReturn(new HashMap<String, 
KerberosComponentDescriptor>(){{
-      put("COMPONENT1", componentDescriptor1);
-    }}).times(1);
-    
expect(serviceDescriptor1.getComponent("COMPONENT1")).andReturn(componentDescriptor1).once();
-    
expect(serviceDescriptor1.getAuthToLocalProperties()).andReturn(null).once();
+    expect(serviceDescriptor1.getIdentities(false)).andReturn(null).times(1);
+    
expect(serviceDescriptor1.getComponent("COMPONENT1")).andReturn(componentDescriptor1).times(1);
 
     final KerberosServiceDescriptor serviceDescriptor3 = 
createMock(KerberosServiceDescriptor.class);
-    expect(serviceDescriptor3.getIdentities(true)).andReturn(null).times(1);
-    expect(serviceDescriptor3.getName()).andReturn("SERVICE3").times(1);
-    
expect(serviceDescriptor3.getComponent("COMPONENT3")).andReturn(componentDescriptor3).once();
+    expect(serviceDescriptor3.getIdentities(false)).andReturn(null).times(1);
+    
expect(serviceDescriptor3.getComponent("COMPONENT3")).andReturn(componentDescriptor3).times(1);
 
     final KerberosDescriptor kerberosDescriptor = 
createStrictMock(KerberosDescriptor.class);
-    expect(kerberosDescriptor.getProperties()).andReturn(null).once();
-    
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).once();
-    
expect(kerberosDescriptor.getService("SERVICE3")).andReturn(serviceDescriptor3).once();
-    expect(kerberosDescriptor.getIdentities()).andReturn(null).once();
-    
expect(kerberosDescriptor.getAuthToLocalProperties()).andReturn(null).once();
-    expect(kerberosDescriptor.getServices()).andReturn(new HashMap<String, 
KerberosServiceDescriptor>()
-    {{
-      put("SERVCE1", serviceDescriptor1);
-      put("SERVCE2", serviceDescriptor3);
-    }}).once();
+    
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).times(1);
+    
expect(kerberosDescriptor.getService("SERVICE3")).andReturn(serviceDescriptor3).times(1);
 
     setupGetDescriptorFromCluster(kerberosDescriptor);
 
@@ -2471,6 +2173,11 @@ public class KerberosHelperTest extends EasyMockSupport {
 
     // This is a STRICT mock to help ensure that the end result is what we 
want.
     final RequestStageContainer requestStageContainer = 
createStrictMock(RequestStageContainer.class);
+    // Preparation Stage
+    expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
+    expect(requestStageContainer.getId()).andReturn(1L).once();
+    requestStageContainer.addStages(anyObject(List.class));
+    expectLastCall().once();
     // Delete Principals Stage
     expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
     expect(requestStageContainer.getId()).andReturn(1L).once();
@@ -2507,22 +2214,22 @@ public class KerberosHelperTest extends EasyMockSupport 
{
     KerberosHelper kerberosHelper = injector.getInstance(KerberosHelper.class);
     boolean managingIdentities = !Boolean.FALSE.equals(manageIdentities);
 
-    final Map<String, String> kerberosEnvProperties = 
createNiceMock(Map.class);
+    final Map<String, String> kerberosEnvProperties = createMock(Map.class);
     
expect(kerberosEnvProperties.get("kdc_type")).andReturn("mit-kdc").anyTimes();
     
expect(kerberosEnvProperties.get("realm")).andReturn("FOOBAR.COM").anyTimes();
 
-    if (manageIdentities != null) {
-      expect(kerberosEnvProperties.get("manage_identities"))
-          .andReturn((manageIdentities) ? "true" : "false")
-          .anyTimes();
-    }
+    expect(kerberosEnvProperties.get("manage_identities"))
+        .andReturn((manageIdentities == null)
+            ? null
+            : ((manageIdentities) ? "true" : "false"))
+        .anyTimes();
 
-    final Config kerberosEnvConfig = createNiceMock(Config.class);
+    final Config kerberosEnvConfig = createMock(Config.class);
     
expect(kerberosEnvConfig.getProperties()).andReturn(kerberosEnvProperties).anyTimes();
 
-    final Map<String, String> krb5ConfProperties = createNiceMock(Map.class);
+    final Map<String, String> krb5ConfProperties = createMock(Map.class);
 
-    final Config krb5ConfConfig = createNiceMock(Config.class);
+    final Config krb5ConfConfig = createMock(Config.class);
     
expect(krb5ConfConfig.getProperties()).andReturn(krb5ConfProperties).anyTimes();
 
     final Map<String,Object> attributeMap = new HashMap<String, Object>();
@@ -2644,7 +2351,7 @@ public class KerberosHelperTest extends EasyMockSupport {
           .andReturn(Collections.<String, Map<String, String>>emptyMap())
           .once();
       expect(ambariManagementController.getRoleCommandOrder(cluster))
-          .andReturn(createNiceMock(RoleCommandOrder.class))
+          .andReturn(createMock(RoleCommandOrder.class))
           .once();
 
       final ConfigHelper configHelper = 
injector.getInstance(ConfigHelper.class);
@@ -2681,6 +2388,11 @@ public class KerberosHelperTest extends EasyMockSupport {
           })
           .anyTimes();
 
+      // Preparation Stage
+      expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
+      expect(requestStageContainer.getId()).andReturn(1L).once();
+      requestStageContainer.addStages(anyObject(List.class));
+      expectLastCall().once();
       // Create Principals Stage
       expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
       expect(requestStageContainer.getId()).andReturn(1L).once();
@@ -2774,16 +2486,17 @@ public class KerberosHelperTest extends EasyMockSupport 
{
         .andReturn(Collections.<String, ServiceComponent>emptyMap())
         .times(2);
 
-    final Map<String, String> kerberosEnvProperties = 
createNiceMock(Map.class);
+    final Map<String, String> kerberosEnvProperties = createMock(Map.class);
     
expect(kerberosEnvProperties.get("kdc_type")).andReturn("mit-kdc").anyTimes();
     
expect(kerberosEnvProperties.get("realm")).andReturn("FOOBAR.COM").anyTimes();
+    
expect(kerberosEnvProperties.get("manage_identities")).andReturn(null).anyTimes();
 
-    final Config kerberosEnvConfig = createNiceMock(Config.class);
+    final Config kerberosEnvConfig = createMock(Config.class);
     
expect(kerberosEnvConfig.getProperties()).andReturn(kerberosEnvProperties).anyTimes();
 
-    final Map<String, String> krb5ConfProperties = createNiceMock(Map.class);
+    final Map<String, String> krb5ConfProperties = createMock(Map.class);
 
-    final Config krb5ConfConfig = createNiceMock(Config.class);
+    final Config krb5ConfConfig = createMock(Config.class);
     
expect(krb5ConfConfig.getProperties()).andReturn(krb5ConfProperties).anyTimes();
 
     final Cluster cluster = createNiceMock(Cluster.class);
@@ -2841,7 +2554,7 @@ public class KerberosHelperTest extends EasyMockSupport {
         .andReturn(Collections.<String, Map<String, String>>emptyMap())
         .once();
     expect(ambariManagementController.getRoleCommandOrder(cluster))
-        .andReturn(createNiceMock(RoleCommandOrder.class))
+        .andReturn(createMock(RoleCommandOrder.class))
         .once();
 
     final ConfigHelper configHelper = injector.getInstance(ConfigHelper.class);
@@ -2880,7 +2593,12 @@ public class KerberosHelperTest extends EasyMockSupport {
 
     // This is a STRICT mock to help ensure that the end result is what we 
want.
     final RequestStageContainer requestStageContainer = 
createStrictMock(RequestStageContainer.class);
-    // Delete  Principals Stage
+    // Preparation Stage
+    expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
+    expect(requestStageContainer.getId()).andReturn(1L).once();
+    requestStageContainer.addStages(anyObject(List.class));
+    expectLastCall().once();
+    // Delete Principals Stage
     expect(requestStageContainer.getLastStageId()).andReturn(-1L).anyTimes();
     expect(requestStageContainer.getId()).andReturn(1L).once();
     requestStageContainer.addStages(anyObject(List.class));
@@ -2956,7 +2674,7 @@ public class KerberosHelperTest extends EasyMockSupport {
     expect(host2.getHostName()).andReturn("host2").anyTimes();
     expect(host2.getState()).andReturn(HostState.HEALTHY).anyTimes();
 
-    final ServiceComponent serviceComponentKerberosClient = 
createMock(ServiceComponent.class);
+    final ServiceComponent serviceComponentKerberosClient = 
createNiceMock(ServiceComponent.class);
     
expect(serviceComponentKerberosClient.getName()).andReturn(Role.KERBEROS_CLIENT.name()).anyTimes();
     
expect(serviceComponentKerberosClient.getServiceComponentHosts()).andReturn(Collections.singletonMap("host1",
 schKerberosClient1)).anyTimes();
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/e3acc7f0/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
index 409b955..ebee2e3 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
@@ -740,6 +740,80 @@ public class ClusterTest {
   }
 
   @Test
+  public void testGetServiceComponentHosts_ForService() throws Exception {
+    createDefaultCluster();
+
+    Service s = serviceFactory.createNew(c1, "HDFS");
+    c1.addService(s);
+    s.persist();
+
+    ServiceComponent scNN = serviceComponentFactory.createNew(s, "NAMENODE");
+    s.addServiceComponent(scNN);
+    scNN.persist();
+    ServiceComponentHost schNNH1 = serviceComponentHostFactory.createNew(scNN, 
"h1");
+    scNN.addServiceComponentHost(schNNH1);
+    schNNH1.persist();
+
+    ServiceComponent scDN = serviceComponentFactory.createNew(s, "DATANODE");
+    s.addServiceComponent(scDN);
+    scDN.persist();
+    ServiceComponentHost scDNH1 = serviceComponentHostFactory.createNew(scDN, 
"h1");
+    scDN.addServiceComponentHost(scDNH1);
+    scDNH1.persist();
+    ServiceComponentHost scDNH2 = serviceComponentHostFactory.createNew(scDN, 
"h2");
+    scDN.addServiceComponentHost(scDNH2);
+    scDNH2.persist();
+
+    List<ServiceComponentHost> scHosts;
+
+    scHosts = c1.getServiceComponentHosts("HDFS", null);
+    Assert.assertEquals(3, scHosts.size());
+
+    scHosts = c1.getServiceComponentHosts("UNKNOWN SERVICE", null);
+    Assert.assertEquals(0, scHosts.size());
+  }
+
+  @Test
+  public void testGetServiceComponentHosts_ForServiceComponent() throws 
Exception {
+    createDefaultCluster();
+
+    Service s = serviceFactory.createNew(c1, "HDFS");
+    c1.addService(s);
+    s.persist();
+
+    ServiceComponent scNN = serviceComponentFactory.createNew(s, "NAMENODE");
+    s.addServiceComponent(scNN);
+    scNN.persist();
+    ServiceComponentHost schNNH1 = serviceComponentHostFactory.createNew(scNN, 
"h1");
+    scNN.addServiceComponentHost(schNNH1);
+    schNNH1.persist();
+
+    ServiceComponent scDN = serviceComponentFactory.createNew(s, "DATANODE");
+    s.addServiceComponent(scDN);
+    scDN.persist();
+    ServiceComponentHost scDNH1 = serviceComponentHostFactory.createNew(scDN, 
"h1");
+    scDN.addServiceComponentHost(scDNH1);
+    scDNH1.persist();
+    ServiceComponentHost scDNH2 = serviceComponentHostFactory.createNew(scDN, 
"h2");
+    scDN.addServiceComponentHost(scDNH2);
+    scDNH2.persist();
+
+    List<ServiceComponentHost> scHosts;
+
+    scHosts = c1.getServiceComponentHosts("HDFS", "DATANODE");
+    Assert.assertEquals(2, scHosts.size());
+
+    scHosts = c1.getServiceComponentHosts("HDFS", "UNKNOWN COMPONENT");
+    Assert.assertEquals(0, scHosts.size());
+
+    scHosts = c1.getServiceComponentHosts("UNKNOWN SERVICE", "DATANODE");
+    Assert.assertEquals(0, scHosts.size());
+
+    scHosts = c1.getServiceComponentHosts("UNKNOWN SERVICE", "UNKNOWN 
COMPONENT");
+    Assert.assertEquals(0, scHosts.size());
+  }
+
+  @Test
   public void testGetAndSetConfigs() throws Exception {
     createDefaultCluster();
 

Reply via email to