Repository: ambari Updated Branches: refs/heads/trunk ab491eaba -> 1646be070
http://git-wip-us.apache.org/repos/asf/ambari/blob/1646be07/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 215161c..7db2653 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 @@ -375,7 +375,7 @@ public class KerberosHelperTest extends EasyMockSupport { expect(service1.getName()).andReturn("SERVICE1").anyTimes(); expect(service1.getServiceComponents()) .andReturn(Collections.<String, ServiceComponent>emptyMap()) - .times(2); + .times(3); service1.setSecurityState(SecurityState.SECURED_KERBEROS); expectLastCall().once(); @@ -383,7 +383,7 @@ public class KerberosHelperTest extends EasyMockSupport { expect(service2.getName()).andReturn("SERVICE2").anyTimes(); expect(service2.getServiceComponents()) .andReturn(Collections.<String, ServiceComponent>emptyMap()) - .times(2); + .times(3); service2.setSecurityState(SecurityState.SECURED_KERBEROS); expectLastCall().once(); @@ -448,6 +448,9 @@ public class KerberosHelperTest extends EasyMockSupport { 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)) .once(); @@ -461,10 +464,7 @@ public class KerberosHelperTest extends EasyMockSupport { }}); } }) - .once(); - expect(configHelper.getEffectiveConfigAttributes(anyObject(Cluster.class), anyObject(Map.class))) - .andReturn(Collections.<String, Map<String, Map<String, String>>>emptyMap()) - .once(); + .times(2); final KerberosPrincipalDescriptor principalDescriptor1 = createNiceMock(KerberosPrincipalDescriptor.class); expect(principalDescriptor1.getValue()).andReturn("component1/_HOST@${realm}").once(); @@ -625,7 +625,7 @@ public class KerberosHelperTest extends EasyMockSupport { expect(service1.getName()).andReturn("SERVICE1").anyTimes(); expect(service1.getServiceComponents()) .andReturn(Collections.<String, ServiceComponent>emptyMap()) - .times(2); + .times(3); service1.setSecurityState(SecurityState.UNSECURED); expectLastCall().once(); @@ -633,7 +633,7 @@ public class KerberosHelperTest extends EasyMockSupport { expect(service2.getName()).andReturn("SERVICE2").anyTimes(); expect(service2.getServiceComponents()) .andReturn(Collections.<String, ServiceComponent>emptyMap()) - .times(2); + .times(3); service2.setSecurityState(SecurityState.UNSECURED); expectLastCall().once(); @@ -694,6 +694,9 @@ public class KerberosHelperTest extends EasyMockSupport { 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)) .once(); @@ -707,10 +710,7 @@ public class KerberosHelperTest extends EasyMockSupport { }}); } }) - .once(); - expect(configHelper.getEffectiveConfigAttributes(anyObject(Cluster.class), anyObject(Map.class))) - .andReturn(Collections.<String, Map<String, Map<String, String>>>emptyMap()) - .once(); + .times(2); final KerberosPrincipalDescriptor principalDescriptor1 = createNiceMock(KerberosPrincipalDescriptor.class); expect(principalDescriptor1.getValue()).andReturn("component1/_HOST@${realm}").once(); @@ -852,13 +852,13 @@ public class KerberosHelperTest extends EasyMockSupport { expect(service1.getName()).andReturn("SERVICE1").anyTimes(); expect(service1.getServiceComponents()) .andReturn(Collections.<String, ServiceComponent>emptyMap()) - .times(2); + .times(3); final Service service2 = createStrictMock(Service.class); expect(service2.getName()).andReturn("SERVICE2").anyTimes(); expect(service2.getServiceComponents()) .andReturn(Collections.<String, ServiceComponent>emptyMap()) - .times(2); + .times(3); final Map<String, String> kerberosEnvProperties = createNiceMock(Map.class); expect(kerberosEnvProperties.get("kdc_type")).andReturn("mit-kdc").anyTimes(); @@ -920,6 +920,9 @@ public class KerberosHelperTest extends EasyMockSupport { 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)) .once(); @@ -933,10 +936,7 @@ public class KerberosHelperTest extends EasyMockSupport { }}); } }) - .once(); - expect(configHelper.getEffectiveConfigAttributes(anyObject(Cluster.class), anyObject(Map.class))) - .andReturn(Collections.<String, Map<String, Map<String, String>>>emptyMap()) - .once(); + .times(2); final KerberosPrincipalDescriptor principalDescriptor1 = createNiceMock(KerberosPrincipalDescriptor.class); expect(principalDescriptor1.getValue()).andReturn("component1/_HOST@${realm}").once(); @@ -1130,13 +1130,13 @@ public class KerberosHelperTest extends EasyMockSupport { expect(service1.getName()).andReturn("SERVICE1").anyTimes(); expect(service1.getServiceComponents()) .andReturn(Collections.<String, ServiceComponent>emptyMap()) - .times(2); + .times(3); final Service service2 = createStrictMock(Service.class); expect(service2.getName()).andReturn("SERVICE2").anyTimes(); expect(service2.getServiceComponents()) .andReturn(Collections.<String, ServiceComponent>emptyMap()) - .times(2); + .times(3); final Map<String, String> kerberosEnvProperties = createNiceMock(Map.class); expect(kerberosEnvProperties.get("kdc_type")).andReturn("mit-kdc").anyTimes(); @@ -1198,6 +1198,9 @@ public class KerberosHelperTest extends EasyMockSupport { 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)) .once(); @@ -1211,16 +1214,19 @@ public class KerberosHelperTest extends EasyMockSupport { }}); } }) - .once(); - expect(configHelper.getEffectiveConfigAttributes(anyObject(Cluster.class), anyObject(Map.class))) - .andReturn(Collections.<String, Map<String, Map<String, String>>>emptyMap()) - .once(); + .times(2); + + final KerberosPrincipalDescriptor principalDescriptor1a = createMock(KerberosPrincipalDescriptor.class); + expect(principalDescriptor1a.getValue()).andReturn("component1a/_HOST@${realm}").anyTimes(); + expect(principalDescriptor1a.getType()).andReturn(KerberosPrincipalType.SERVICE).anyTimes(); + expect(principalDescriptor1a.getLocalUsername()).andReturn(null).anyTimes(); + expect(principalDescriptor1a.getConfiguration()).andReturn("service1b-site/component1.kerberos.principal").anyTimes(); - final KerberosPrincipalDescriptor principalDescriptor1 = createMock(KerberosPrincipalDescriptor.class); - expect(principalDescriptor1.getValue()).andReturn("component1/_HOST@${realm}").anyTimes(); - expect(principalDescriptor1.getType()).andReturn(KerberosPrincipalType.SERVICE).anyTimes(); - expect(principalDescriptor1.getLocalUsername()).andReturn(null).anyTimes(); - expect(principalDescriptor1.getConfiguration()).andReturn("service1-site/component1.kerberos.principal").anyTimes(); + final KerberosPrincipalDescriptor principalDescriptor1b = createMock(KerberosPrincipalDescriptor.class); + expect(principalDescriptor1b.getValue()).andReturn("component1b/_HOST@${realm}").anyTimes(); + expect(principalDescriptor1b.getType()).andReturn(KerberosPrincipalType.SERVICE).anyTimes(); + expect(principalDescriptor1b.getLocalUsername()).andReturn(null).anyTimes(); + expect(principalDescriptor1b.getConfiguration()).andReturn("service1b-site/component1.kerberos.principal").anyTimes(); final KerberosPrincipalDescriptor principalDescriptor3 = createMock(KerberosPrincipalDescriptor.class); expect(principalDescriptor3.getValue()).andReturn("component3/${host}@${realm}").anyTimes(); @@ -1246,44 +1252,61 @@ public class KerberosHelperTest extends EasyMockSupport { final KerberosIdentityDescriptor identityDescriptor1a = createMock(KerberosIdentityDescriptor.class); expect(identityDescriptor1a.getName()).andReturn("identity1a").anyTimes(); - expect(identityDescriptor1a.getPrincipalDescriptor()).andReturn(principalDescriptor1).anyTimes(); + expect(identityDescriptor1a.getPrincipalDescriptor()).andReturn(principalDescriptor1a).anyTimes(); expect(identityDescriptor1a.getKeytabDescriptor()).andReturn(keytabDescriptor1).anyTimes(); final KerberosIdentityDescriptor identityDescriptor1b = createMock(KerberosIdentityDescriptor.class); expect(identityDescriptor1b.getName()).andReturn("identity1b").anyTimes(); + expect(identityDescriptor1b.getPrincipalDescriptor()).andReturn(principalDescriptor1b).anyTimes(); final KerberosIdentityDescriptor identityDescriptor3 = createMock(KerberosIdentityDescriptor.class); expect(identityDescriptor3.getName()).andReturn("identity3").anyTimes(); expect(identityDescriptor3.getPrincipalDescriptor()).andReturn(principalDescriptor3).anyTimes(); expect(identityDescriptor3.getKeytabDescriptor()).andReturn(keytabDescriptor3).anyTimes(); + final ArrayList<KerberosIdentityDescriptor> identityDescriptors1 = new ArrayList<KerberosIdentityDescriptor>() {{ + add(identityDescriptor1a); + add(identityDescriptor1b); + }}; final KerberosComponentDescriptor componentDescriptor1 = createStrictMock(KerberosComponentDescriptor.class); - expect(componentDescriptor1.getIdentities(true)). - andReturn(new ArrayList<KerberosIdentityDescriptor>() {{ - add(identityDescriptor1a); - add(identityDescriptor1b); - }}).once(); - expect(componentDescriptor1.getConfigurations(true)).andReturn(null).once(); - + 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); + + final ArrayList<KerberosIdentityDescriptor> identityDescriptors3 = new ArrayList<KerberosIdentityDescriptor>() {{ + add(identityDescriptor3); + }}; final KerberosComponentDescriptor componentDescriptor3 = createStrictMock(KerberosComponentDescriptor.class); - expect(componentDescriptor3.getIdentities(true)). - andReturn(new ArrayList<KerberosIdentityDescriptor>() {{ - add(identityDescriptor3); - }}).once(); - expect(componentDescriptor3.getConfigurations(true)).andReturn(null).once(); + expect(componentDescriptor3.getIdentities(true)).andReturn(identityDescriptors3).times(1); + expect(componentDescriptor3.getConfigurations(true)).andReturn(null).times(1); final KerberosServiceDescriptor serviceDescriptor1 = createMock(KerberosServiceDescriptor.class); - expect(serviceDescriptor1.getIdentities(true)).andReturn(null).once(); + 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(); final KerberosServiceDescriptor serviceDescriptor3 = createMock(KerberosServiceDescriptor.class); - expect(serviceDescriptor3.getIdentities(true)).andReturn(null).once(); + expect(serviceDescriptor3.getIdentities(true)).andReturn(null).times(1); + expect(serviceDescriptor3.getName()).andReturn("SERVICE3").times(1); expect(serviceDescriptor3.getComponent("COMPONENT3")).andReturn(componentDescriptor3).once(); 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(); setupGetDescriptorFromCluster(kerberosDescriptor); http://git-wip-us.apache.org/repos/asf/ambari/blob/1646be07/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java index e697b99..9bc7570 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java @@ -20,7 +20,6 @@ package org.apache.ambari.server.controller.internal; import com.google.inject.Injector; import org.apache.ambari.server.controller.AmbariManagementController; -import org.apache.ambari.server.controller.KerberosHelper; import org.apache.ambari.server.controller.MaintenanceStateHelper; import org.apache.ambari.server.controller.RequestStatusResponse; import org.apache.ambari.server.controller.ResourceProviderFactory; @@ -35,7 +34,6 @@ import org.apache.ambari.server.controller.utilities.PredicateBuilder; import org.apache.ambari.server.controller.utilities.PropertyHelper; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; -import org.apache.ambari.server.state.SecurityType; import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.ServiceComponent; import org.apache.ambari.server.state.ServiceComponentHost; @@ -60,7 +58,6 @@ import java.util.Set; import static org.easymock.EasyMock.anyObject; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.createStrictMock; import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; @@ -304,7 +301,7 @@ public class HostComponentResourceProviderTest { HostComponentResourceProvider provider = new TestHostComponentResourceProvider(PropertyHelper.getPropertyIds(type), PropertyHelper.getKeyPropertyIds(type), - managementController, injector, maintenanceStateHelper, null); + managementController, injector, maintenanceStateHelper); expect(resourceProviderFactory.getHostComponentResourceProvider(anyObject(Set.class), anyObject(Map.class), @@ -355,8 +352,6 @@ public class HostComponentResourceProviderTest { ServiceComponentHost clientComponentHost = createNiceMock(ServiceComponentHost.class); RequestStageContainer stageContainer = createNiceMock(RequestStageContainer.class); MaintenanceStateHelper maintenanceStateHelper = createNiceMock(MaintenanceStateHelper.class); - // INIT->INSTALLED state transition causes check for kerberized cluster - KerberosHelper kerberosHelper = createStrictMock(KerberosHelper.class); Collection<String> hosts = new HashSet<String>(); hosts.add("Host100"); @@ -432,18 +427,16 @@ public class HostComponentResourceProviderTest { HostComponentResourceProvider provider = new TestHostComponentResourceProvider(PropertyHelper.getPropertyIds(type), PropertyHelper.getKeyPropertyIds(type), - managementController, injector, maintenanceStateHelper, kerberosHelper); + managementController, injector, maintenanceStateHelper); expect(resourceProviderFactory.getHostComponentResourceProvider(anyObject(Set.class), anyObject(Map.class), eq(managementController))). andReturn(provider).anyTimes(); - expect(kerberosHelper.isClusterKerberosEnabled(cluster)).andReturn(false).times(2); - // replay replay(managementController, response, resourceProviderFactory, clusters, cluster, service, - component, componentHost, stageContainer, maintenanceStateHelper, kerberosHelper, clientComponent, + component, componentHost, stageContainer, maintenanceStateHelper, clientComponent, clientComponentHost); Map<String, Object> properties = new LinkedHashMap<String, Object>(); @@ -453,109 +446,8 @@ public class HostComponentResourceProviderTest { assertSame(response, requestResponse); // verify - verify(managementController, response, resourceProviderFactory, stageContainer, kerberosHelper, - clientComponent, clientComponentHost); - } - - @Test - public void testInstallAndStart_kerberizedCluster() throws Exception { - Resource.Type type = Resource.Type.HostComponent; - - AmbariManagementController managementController = createMock(AmbariManagementController.class); - RequestStatusResponse response = createNiceMock(RequestStatusResponse.class); - ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class); - Injector injector = createNiceMock(Injector.class); - Clusters clusters = createNiceMock(Clusters.class); - Cluster cluster = createNiceMock(Cluster.class); - Service service = createNiceMock(Service.class); - ServiceComponent component = createNiceMock(ServiceComponent.class); - ServiceComponentHost componentHost = createNiceMock(ServiceComponentHost.class); - RequestStageContainer stageContainer = createNiceMock(RequestStageContainer.class); - MaintenanceStateHelper maintenanceStateHelper = createNiceMock(MaintenanceStateHelper.class); - KerberosHelper kerberosHelper = createStrictMock(KerberosHelper.class); - - Collection<String> hosts = new HashSet<String>(); - hosts.add("Host100"); - - Map<String, String> mapRequestProps = new HashMap<String, String>(); - mapRequestProps.put("context", "Install and start components on added hosts"); - - Set<ServiceComponentHostResponse> nameResponse = new HashSet<ServiceComponentHostResponse>(); - nameResponse.add(new ServiceComponentHostResponse( - "Cluster102", "Service100", "Component100", "Host100", "INIT", "", "INIT", "", null)); - Set<ServiceComponentHostResponse> nameResponse2 = new HashSet<ServiceComponentHostResponse>(); - nameResponse2.add(new ServiceComponentHostResponse( - "Cluster102", "Service100", "Component100", "Host100", "INIT", "", "INSTALLED", "", null)); - - - // set expectations - expect(managementController.getClusters()).andReturn(clusters).anyTimes(); - expect(managementController.findServiceName(cluster, "Component100")).andReturn("Service100").anyTimes(); - expect(clusters.getCluster("Cluster102")).andReturn(cluster).anyTimes(); - expect(cluster.getService("Service100")).andReturn(service).anyTimes(); - expect(service.getServiceComponent("Component100")).andReturn(component).anyTimes(); - expect(component.getServiceComponentHost("Host100")).andReturn(componentHost).anyTimes(); - expect(component.getName()).andReturn("Component100").anyTimes(); - // actual state is always INIT until stages actually execute - expect(componentHost.getState()).andReturn(State.INIT).anyTimes(); - expect(componentHost.getHostName()).andReturn("Host100").anyTimes(); - expect(componentHost.getServiceComponentName()).andReturn("Component100").anyTimes(); - expect(response.getMessage()).andReturn("response msg").anyTimes(); - - //Cluster is default type. Maintenance mode is not being tested here so the default is returned. - expect(maintenanceStateHelper.isOperationAllowed(Resource.Type.Cluster, componentHost)).andReturn(true).anyTimes(); - - expect(managementController.getHostComponents( - EasyMock.<Set<ServiceComponentHostRequest>>anyObject())).andReturn(nameResponse); - expect(managementController.getHostComponents( - EasyMock.<Set<ServiceComponentHostRequest>>anyObject())).andReturn(nameResponse2); - - Map<String, Map<State, List<ServiceComponentHost>>> changedHosts = - new HashMap<String, Map<State, List<ServiceComponentHost>>>(); - List<ServiceComponentHost> changedComponentHosts = Collections.singletonList(componentHost); - changedHosts.put("Component100", Collections.singletonMap(State.INSTALLED, changedComponentHosts)); - - Map<String, Map<State, List<ServiceComponentHost>>> changedHosts2 = - new HashMap<String, Map<State, List<ServiceComponentHost>>>(); - List<ServiceComponentHost> changedComponentHosts2 = Collections.singletonList(componentHost); - changedHosts2.put("Component100", Collections.singletonMap(State.STARTED, changedComponentHosts2)); - - expect(managementController.addStages(null, cluster, mapRequestProps, null, null, null, changedHosts, - Collections.<ServiceComponentHost>emptyList(), false, false)).andReturn(stageContainer).once(); - - expect(managementController.addStages(stageContainer, cluster, mapRequestProps, null, null, null, changedHosts2, - Collections.<ServiceComponentHost>emptyList(), false, false)).andReturn(stageContainer).once(); - - stageContainer.persist(); - expect(stageContainer.getProjectedState("Host100", "Component100")).andReturn(State.INSTALLED).once(); - expect(stageContainer.getRequestStatusResponse()).andReturn(response).once(); - - HostComponentResourceProvider provider = - new TestHostComponentResourceProvider(PropertyHelper.getPropertyIds(type), - PropertyHelper.getKeyPropertyIds(type), - managementController, injector, maintenanceStateHelper, kerberosHelper); - - expect(resourceProviderFactory.getHostComponentResourceProvider(anyObject(Set.class), - anyObject(Map.class), - eq(managementController))). - andReturn(provider).anyTimes(); - - expect(kerberosHelper.isClusterKerberosEnabled(cluster)).andReturn(true).once(); - expect(kerberosHelper.toggleKerberos(cluster, SecurityType.KERBEROS, stageContainer)). - andReturn(stageContainer).once(); - - // replay - replay(managementController, response, resourceProviderFactory, clusters, cluster, service, - component, componentHost, stageContainer, maintenanceStateHelper, kerberosHelper); - - Map<String, Object> properties = new LinkedHashMap<String, Object>(); - properties.put(HostComponentResourceProvider.HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED"); - - RequestStatusResponse requestResponse = provider.installAndStart("Cluster102", hosts); - - assertSame(response, requestResponse); - // verify - verify(managementController, response, resourceProviderFactory, stageContainer, kerberosHelper); + verify(managementController, response, resourceProviderFactory, stageContainer, + clientComponent, clientComponentHost); } @Test @@ -657,8 +549,8 @@ public class HostComponentResourceProviderTest { HostComponentResourceProvider provider = new TestHostComponentResourceProvider(PropertyHelper.getPropertyIds(type), PropertyHelper.getKeyPropertyIds(type), - controller, injector, injector.getInstance(MaintenanceStateHelper.class), - injector.getInstance(KerberosHelper.class)); + controller, injector, injector.getInstance(MaintenanceStateHelper.class) + ); RequestStageContainer requestStages = provider.updateHostComponents(null, requests, requestProperties, runSmokeTest); requestStages.persist(); return requestStages.getRequestStatusResponse(); @@ -675,8 +567,7 @@ public class HostComponentResourceProviderTest { */ public TestHostComponentResourceProvider(Set<String> propertyIds, Map<Resource.Type, String> keyPropertyIds, AmbariManagementController managementController, Injector injector, - MaintenanceStateHelper maintenanceStateHelper, - KerberosHelper kerberosHelper) throws Exception { + MaintenanceStateHelper maintenanceStateHelper) throws Exception { super(propertyIds, keyPropertyIds, managementController, injector); @@ -685,10 +576,6 @@ public class HostComponentResourceProviderTest { Field f = c.getDeclaredField("maintenanceStateHelper"); f.setAccessible(true); f.set(this, maintenanceStateHelper); - - f = c.getDeclaredField("kerberosHelper"); - f.setAccessible(true); - f.set(this, kerberosHelper); } } } http://git-wip-us.apache.org/repos/asf/ambari/blob/1646be07/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/UpdateKerberosConfigsServerActionTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/UpdateKerberosConfigsServerActionTest.java b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/UpdateKerberosConfigsServerActionTest.java index 8215120..6bb59c5 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/UpdateKerberosConfigsServerActionTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/UpdateKerberosConfigsServerActionTest.java @@ -26,6 +26,7 @@ import org.apache.ambari.server.controller.AmbariManagementController; import org.apache.ambari.server.controller.ConfigurationRequest; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; +import org.apache.ambari.server.state.ConfigHelper; import org.apache.commons.codec.digest.DigestUtils; import org.easymock.EasyMock; import org.junit.After; @@ -50,9 +51,11 @@ public class UpdateKerberosConfigsServerActionTest { String dataDir; private Injector injector; private UpdateKerberosConfigsServerAction action; - final AmbariManagementController controller = EasyMock.createNiceMock(AmbariManagementController.class); - Clusters clusters = EasyMock.createNiceMock(Clusters.class); - Cluster cluster = EasyMock.createNiceMock(Cluster.class); + + private final AmbariManagementController controller = EasyMock.createNiceMock(AmbariManagementController.class); + private final ConfigHelper configHelper = createNiceMock(ConfigHelper.class); + private final Clusters clusters = EasyMock.createNiceMock(Clusters.class); + private final Cluster cluster = EasyMock.createNiceMock(Cluster.class); @Before public void setup() throws Exception { @@ -60,14 +63,13 @@ public class UpdateKerberosConfigsServerActionTest { setupConfigDat(); expect(controller.getClusters()).andReturn(clusters).once(); - - expect(controller.createConfiguration(anyObject(ConfigurationRequest.class))).andReturn( - null).once(); - replay(controller); - expect(cluster.getConfigsByType("hdfs-site")).andReturn(null).once(); - expect(cluster.getDesiredConfigByType("hdfs-site")).andReturn(null).once(); + configHelper.updateConfigType(anyObject(Cluster.class), anyObject(AmbariManagementController.class), + anyObject(String.class), anyObject(Map.class), anyObject(String.class), anyObject(String.class)); + expectLastCall().atLeastOnce(); + replay(configHelper); + replay(cluster); expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster).once(); @@ -78,6 +80,7 @@ public class UpdateKerberosConfigsServerActionTest { @Override protected void configure() { bind(AmbariManagementController.class).toInstance(controller); + bind(ConfigHelper.class).toInstance(configHelper); } }); action = injector.getInstance(UpdateKerberosConfigsServerAction.class); @@ -137,9 +140,7 @@ public class UpdateKerberosConfigsServerActionTest { action.execute(requestSharedDataContext); - verify(controller); - verify(clusters); - verify(cluster); + verify(controller, clusters, cluster, configHelper); } @Test http://git-wip-us.apache.org/repos/asf/ambari/blob/1646be07/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosComponentDescriptorTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosComponentDescriptorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosComponentDescriptorTest.java index e657f38..9f0f7a1 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosComponentDescriptorTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosComponentDescriptorTest.java @@ -25,8 +25,11 @@ import org.junit.Test; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.TreeSet; public class KerberosComponentDescriptorTest { public static final String JSON_VALUE = @@ -42,7 +45,10 @@ public class KerberosComponentDescriptorTest { " \"service.component.property2\": \"value2\"" + " }" + " }" + - " ]" + + " ]," + + " \"auth_to_local_properties\": [" + + " component.name.rules1" + + " ]" + "}"; public static final Map<String, Object> MAP_VALUE = @@ -66,6 +72,9 @@ public class KerberosComponentDescriptorTest { } }); }}); + put(KerberosDescriptorType.AUTH_TO_LOCAL_PROPERTY.getDescriptorPluralName(), new ArrayList<String>() {{ + add("component.name.rules2"); + }}); } }; @@ -96,6 +105,11 @@ public class KerberosComponentDescriptorTest { Assert.assertEquals(2, properties.size()); Assert.assertEquals("value1", properties.get("service.component.property1")); Assert.assertEquals("value2", properties.get("service.component.property2")); + + Set<String> authToLocalProperties = componentDescriptor.getAuthToLocalProperties(); + Assert.assertNotNull(authToLocalProperties); + Assert.assertEquals(1, authToLocalProperties.size()); + Assert.assertEquals("component.name.rules1", authToLocalProperties.iterator().next()); } public static void validateFromMap(KerberosComponentDescriptor componentDescriptor) { @@ -125,6 +139,11 @@ public class KerberosComponentDescriptorTest { Assert.assertEquals(2, properties.size()); Assert.assertEquals("red", properties.get("service.component.property1")); Assert.assertEquals("green", properties.get("service.component.property")); + + Set<String> authToLocalProperties = componentDescriptor.getAuthToLocalProperties(); + Assert.assertNotNull(authToLocalProperties); + Assert.assertEquals(1, authToLocalProperties.size()); + Assert.assertEquals("component.name.rules2", authToLocalProperties.iterator().next()); } public static void validateUpdatedData(KerberosComponentDescriptor componentDescriptor) { @@ -154,6 +173,15 @@ public class KerberosComponentDescriptorTest { Assert.assertEquals("red", properties.get("service.component.property1")); Assert.assertEquals("value2", properties.get("service.component.property2")); Assert.assertEquals("green", properties.get("service.component.property")); + + Set<String> authToLocalProperties = componentDescriptor.getAuthToLocalProperties(); + Assert.assertNotNull(authToLocalProperties); + Assert.assertEquals(2, authToLocalProperties.size()); + // guarantee ordering... + Iterator<String> iterator = new TreeSet<String>(authToLocalProperties).iterator(); + Assert.assertEquals("component.name.rules1", iterator.next()); + Assert.assertEquals("component.name.rules2", iterator.next()); + } private static KerberosComponentDescriptor createFromJSON() { http://git-wip-us.apache.org/repos/asf/ambari/blob/1646be07/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosDescriptorTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosDescriptorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosDescriptorTest.java index 7944cd6..97f8008 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosDescriptorTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosDescriptorTest.java @@ -24,8 +24,11 @@ import org.junit.Test; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.TreeSet; public class KerberosDescriptorTest { private static final KerberosDescriptorFactory KERBEROS_DESCRIPTOR_FACTORY = new KerberosDescriptorFactory(); @@ -37,6 +40,9 @@ public class KerberosDescriptorTest { " \"realm\": \"${cluster-env/kerberos_domain}\"," + " \"keytab_dir\": \"/etc/security/keytabs\"" + " }," + + " \"auth_to_local_properties\": [" + + " generic.name.rules" + + " ]," + " \"services\": [" + KerberosServiceDescriptorTest.JSON_VALUE + " ]" + @@ -50,6 +56,10 @@ public class KerberosDescriptorTest { put("some.property", "Hello World"); }}); + put(KerberosDescriptorType.AUTH_TO_LOCAL_PROPERTY.getDescriptorPluralName(), new ArrayList<String>() {{ + add("global.name.rules"); + }}); + put(KerberosDescriptorType.SERVICE.getDescriptorPluralName(), new ArrayList<Object>() {{ add(KerberosServiceDescriptorTest.MAP_VALUE); }}); @@ -102,6 +112,11 @@ public class KerberosDescriptorTest { Assert.assertEquals("${cluster-env/kerberos_domain}", properties.get("realm")); Assert.assertEquals("/etc/security/keytabs", properties.get("keytab_dir")); + Set<String> authToLocalProperties = descriptor.getAuthToLocalProperties(); + Assert.assertNotNull(authToLocalProperties); + Assert.assertEquals(1, authToLocalProperties.size()); + Assert.assertEquals("generic.name.rules", authToLocalProperties.iterator().next()); + Map<String, KerberosServiceDescriptor> serviceDescriptors = descriptor.getServices(); Assert.assertNotNull(serviceDescriptors); Assert.assertEquals(1, serviceDescriptors.size()); @@ -125,6 +140,11 @@ public class KerberosDescriptorTest { Assert.assertEquals("EXAMPLE.COM", properties.get("realm")); Assert.assertEquals("Hello World", properties.get("some.property")); + Set<String> authToLocalProperties = descriptor.getAuthToLocalProperties(); + Assert.assertNotNull(authToLocalProperties); + Assert.assertEquals(1, authToLocalProperties.size()); + Assert.assertEquals("global.name.rules", authToLocalProperties.iterator().next()); + Map<String, KerberosServiceDescriptor> services = descriptor.getServices(); Assert.assertNotNull(services); Assert.assertEquals(1, services.size()); @@ -193,6 +213,14 @@ public class KerberosDescriptorTest { Assert.assertEquals("/etc/security/keytabs", properties.get("keytab_dir")); Assert.assertEquals("Hello World", properties.get("some.property")); + Set<String> authToLocalProperties = descriptor.getAuthToLocalProperties(); + Assert.assertNotNull(authToLocalProperties); + Assert.assertEquals(2, authToLocalProperties.size()); + // guarantee ordering... + Iterator<String> iterator = new TreeSet<String>(authToLocalProperties).iterator(); + Assert.assertEquals("generic.name.rules", iterator.next()); + Assert.assertEquals("global.name.rules", iterator.next()); + Map<String, KerberosServiceDescriptor> serviceDescriptors = descriptor.getServices(); Assert.assertNotNull(serviceDescriptors); Assert.assertEquals(2, serviceDescriptors.size()); http://git-wip-us.apache.org/repos/asf/ambari/blob/1646be07/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosServiceDescriptorTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosServiceDescriptorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosServiceDescriptorTest.java index 040d481..e5392c0 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosServiceDescriptorTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosServiceDescriptorTest.java @@ -26,8 +26,11 @@ import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.TreeSet; public class KerberosServiceDescriptorTest { public static final String JSON_VALUE = @@ -39,6 +42,9 @@ public class KerberosServiceDescriptorTest { " \"components\": [" + KerberosComponentDescriptorTest.JSON_VALUE + "]," + + " \"auth_to_local_properties\": [" + + " service.name.rules1" + + " ]," + " \"configurations\": [" + " {" + " \"service-site\": {" + @@ -60,6 +66,9 @@ public class KerberosServiceDescriptorTest { " \"components\": [" + KerberosComponentDescriptorTest.JSON_VALUE + "]," + + " \"auth_to_local_properties\": [" + + " service.name.rules1" + + " ]," + " \"configurations\": [" + " {" + " \"service-site\": {" + @@ -111,6 +120,9 @@ public class KerberosServiceDescriptorTest { } }); }}); + put(KerberosDescriptorType.AUTH_TO_LOCAL_PROPERTY.getDescriptorPluralName(), new ArrayList<String>() {{ + add("service.name.rules2"); + }}); } }; @@ -161,6 +173,11 @@ public class KerberosServiceDescriptorTest { Assert.assertEquals(2, properties.size()); Assert.assertEquals("value1", properties.get("service.property1")); Assert.assertEquals("value2", properties.get("service.property2")); + + Set<String> authToLocalProperties = serviceDescriptor.getAuthToLocalProperties(); + Assert.assertNotNull(authToLocalProperties); + Assert.assertEquals(1, authToLocalProperties.size()); + Assert.assertEquals("service.name.rules1", authToLocalProperties.iterator().next()); } public static void validateFromMap(KerberosServiceDescriptor serviceDescriptor) { @@ -201,6 +218,11 @@ public class KerberosServiceDescriptorTest { Assert.assertEquals(2, properties.size()); Assert.assertEquals("red", properties.get("service.property1")); Assert.assertEquals("green", properties.get("service.property")); + + Set<String> authToLocalProperties = serviceDescriptor.getAuthToLocalProperties(); + Assert.assertNotNull(authToLocalProperties); + Assert.assertEquals(1, authToLocalProperties.size()); + Assert.assertEquals("service.name.rules2", authToLocalProperties.iterator().next()); } public void validateUpdatedData(KerberosServiceDescriptor serviceDescriptor) { @@ -240,6 +262,15 @@ public class KerberosServiceDescriptorTest { Assert.assertEquals("red", properties.get("service.property1")); Assert.assertEquals("value2", properties.get("service.property2")); Assert.assertEquals("green", properties.get("service.property")); + + Set<String> authToLocalProperties = serviceDescriptor.getAuthToLocalProperties(); + Assert.assertNotNull(authToLocalProperties); + Assert.assertEquals(2, authToLocalProperties.size()); + // guarantee ordering... + Iterator<String> iterator = new TreeSet<String>(authToLocalProperties).iterator(); + Assert.assertEquals("service.name.rules1", iterator.next()); + Assert.assertEquals("service.name.rules2", iterator.next()); + } private KerberosServiceDescriptor createFromJSON() throws AmbariException { http://git-wip-us.apache.org/repos/asf/ambari/blob/1646be07/ambari-server/src/test/resources/stacks/HDP/2.0.8/kerberos.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.8/kerberos.json b/ambari-server/src/test/resources/stacks/HDP/2.0.8/kerberos.json index 1902319..cf49786 100644 --- a/ambari-server/src/test/resources/stacks/HDP/2.0.8/kerberos.json +++ b/ambari-server/src/test/resources/stacks/HDP/2.0.8/kerberos.json @@ -23,13 +23,16 @@ } } ], + "auth_to_local_properties" : [ + "hadoop.security.auth_to_local" + ], "configurations": [ { "core-site": { "hadoop.security.authentication": "kerberos", "hadoop.rpc.protection": "authentication", "hadoop.security.authorization": "true", - "hadoop.security.auth_to_local": "_AUTH_TO_LOCAL_RULES", + "hadoop.security.auth_to_local": "", "hadoop.proxyuser.superuser.hosts": "", "hadoop.proxyuser.superuser.groups": "" }
