http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java index c27ef7e..e194115 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/RootServiceResponseFactoryTest.java @@ -29,7 +29,6 @@ import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.H2DatabaseCleaner; import org.apache.ambari.server.ObjectNotFoundException; import org.apache.ambari.server.api.services.AmbariMetaInfo; -import org.apache.ambari.server.controller.RootServiceResponseFactory.Components; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; import org.junit.After; @@ -66,13 +65,13 @@ public class RootServiceResponseFactoryTest { // Request a null service name RootServiceRequest request = new RootServiceRequest(null); Set<RootServiceResponse> rootServices = responseFactory.getRootServices(request); - assertEquals(RootServiceResponseFactory.Services.values().length, + assertEquals(RootService.values().length, rootServices.size()); // null request request = null; rootServices = responseFactory.getRootServices(request); - assertEquals(RootServiceResponseFactory.Services.values().length, + assertEquals(RootService.values().length, rootServices.size()); // Request nonexistent service @@ -85,12 +84,12 @@ public class RootServiceResponseFactoryTest { // Request existent service request = new RootServiceRequest( - RootServiceResponseFactory.Services.AMBARI.name()); + RootService.AMBARI.name()); rootServices = responseFactory.getRootServices(request); assertEquals(1, rootServices.size()); assertTrue(rootServices.contains(new RootServiceResponse( - RootServiceResponseFactory.Services.AMBARI.name()))); + RootService.AMBARI.name()))); } @Test @@ -106,7 +105,7 @@ public class RootServiceResponseFactoryTest { assertTrue(e instanceof ObjectNotFoundException); } - RootServiceResponseFactory.Components ambariServerComponent = RootServiceResponseFactory.Components.AMBARI_SERVER; + RootComponent ambariServerComponent = RootComponent.AMBARI_SERVER; // Request null service name, not-null component name request = new RootServiceComponentRequest(null, ambariServerComponent.name()); @@ -118,18 +117,18 @@ public class RootServiceResponseFactoryTest { } // Request existent service name, null component name - String serviceName = RootServiceResponseFactory.Services.AMBARI.name(); + String serviceName = RootService.AMBARI.name(); request = new RootServiceComponentRequest(serviceName, null); rootServiceComponents = responseFactory.getRootServiceComponents(request); assertEquals( - RootServiceResponseFactory.Services.AMBARI.getComponents().length, + RootService.AMBARI.getComponents().length, rootServiceComponents.size()); String ambariVersion = ambariMetaInfo.getServerVersion(); - for (int i = 0; i < RootServiceResponseFactory.Services.AMBARI.getComponents().length; i++) { - Components component = RootServiceResponseFactory.Services.AMBARI.getComponents()[i]; + for (int i = 0; i < RootService.AMBARI.getComponents().length; i++) { + RootComponent component = RootService.AMBARI.getComponents()[i]; if (component.name().equals(ambariServerComponent.name())) { for (RootServiceComponentResponse response : rootServiceComponents) { @@ -148,14 +147,14 @@ public class RootServiceResponseFactoryTest { // Request existent service name, existent component name request = new RootServiceComponentRequest( - RootServiceResponseFactory.Services.AMBARI.name(), - RootServiceResponseFactory.Services.AMBARI.getComponents()[0].name()); + RootService.AMBARI.name(), + RootService.AMBARI.getComponents()[0].name()); rootServiceComponents = responseFactory.getRootServiceComponents(request); assertEquals(1, rootServiceComponents.size()); for (RootServiceComponentResponse response : rootServiceComponents) { if (response.getComponentName().equals( - RootServiceResponseFactory.Services.AMBARI.getComponents()[0].name())) { + RootService.AMBARI.getComponents()[0].name())) { assertEquals(ambariVersion, response.getComponentVersion()); assertEquals(2, response.getProperties().size()); assertTrue(response.getProperties().containsKey("jdk_location")); @@ -166,7 +165,7 @@ public class RootServiceResponseFactoryTest { // Request existent service name, and component, not belongs to requested // service request = new RootServiceComponentRequest( - RootServiceResponseFactory.Services.AMBARI.name(), "XXX"); + RootService.AMBARI.name(), "XXX"); try { rootServiceComponents = responseFactory.getRootServiceComponents(request);
http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariConfigurationResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariConfigurationResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariConfigurationResourceProviderTest.java deleted file mode 100644 index c2a1421..0000000 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariConfigurationResourceProviderTest.java +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ambari.server.controller.internal; - -import java.util.Map; -import java.util.Set; - -import org.apache.ambari.server.controller.spi.Predicate; -import org.apache.ambari.server.controller.spi.Request; -import org.apache.ambari.server.controller.spi.Resource; -import org.apache.ambari.server.controller.utilities.PredicateBuilder; -import org.apache.ambari.server.events.AmbariLdapConfigChangedEvent; -import org.apache.ambari.server.events.publishers.AmbariEventPublisher; -import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO; -import org.apache.ambari.server.orm.entities.AmbariConfigurationEntity; -import org.apache.ambari.server.orm.entities.ConfigurationBaseEntity; -import org.easymock.Capture; -import org.easymock.EasyMock; -import org.easymock.EasyMockRule; -import org.easymock.EasyMockSupport; -import org.easymock.Mock; -import org.easymock.TestSubject; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -public class AmbariConfigurationResourceProviderTest extends EasyMockSupport { - - @Rule - public EasyMockRule mocks = new EasyMockRule(this); - - @Mock - private Request requestMock; - - @Mock - private AmbariConfigurationDAO ambariConfigurationDAO; - - @Mock - private AmbariEventPublisher publisher; - - private Capture<AmbariConfigurationEntity> ambariConfigurationEntityCapture; - - private Gson gson; - - private static final String DATA_MOCK_STR = "[\n" + - " {\n" + - " \"authentication.ldap.baseDn\" : \"dc=ambari,dc=apache,dc=org\",\n" + - " \"authentication.ldap.primaryUrl\" : \"localhost:33389\",\n" + - " \"authentication.ldap.secondaryUrl\" : \"localhost:333\"\n" + - " }\n" + - " ]"; - - private static final Long PK_LONG = Long.valueOf(1); - private static final String PK_STRING = String.valueOf(1); - private static final String VERSION_TAG = "test version"; - private static final String VERSION = "1"; - private static final String TYPE = "AmbariConfiguration"; - - @TestSubject - private AmbariConfigurationResourceProvider ambariConfigurationResourceProvider = new AmbariConfigurationResourceProvider(); - - @Before - public void setup() { - ambariConfigurationEntityCapture = Capture.newInstance(); - gson = new GsonBuilder().create(); - } - - @Test - public void testCreateAmbariConfigurationRequestResultsInTheProperPersistenceCall() throws Exception { - - // GIVEN - // configuration properties parsed from the request - Set<Map<String, Object>> resourcePropertiesSet = Sets.newHashSet( - new PropertiesMapBuilder() - .withId(PK_LONG) - .withVersion(VERSION) - .withVersionTag(VERSION_TAG) - .withData(DATA_MOCK_STR) - .withType(TYPE) - .build()); - - // mock the request to return the properties - EasyMock.expect(requestMock.getProperties()).andReturn(resourcePropertiesSet); - - // capture the entity the DAO gets called with - ambariConfigurationDAO.create(EasyMock.capture(ambariConfigurationEntityCapture)); - publisher.publish(EasyMock.anyObject(AmbariLdapConfigChangedEvent.class)); - - replayAll(); - - // WHEN - ambariConfigurationResourceProvider.createResourcesAuthorized(requestMock); - - // THEN - AmbariConfigurationEntity capturedAmbariConfigurationEntity = ambariConfigurationEntityCapture.getValue(); - Assert.assertNotNull(capturedAmbariConfigurationEntity); - Assert.assertNull("The entity identifier should be null", capturedAmbariConfigurationEntity.getId()); - Assert.assertEquals("The entity version is not the expected", Integer.valueOf(VERSION), - capturedAmbariConfigurationEntity.getConfigurationBaseEntity().getVersion()); - Assert.assertEquals("The entity version tag is not the expected", VERSION_TAG, - capturedAmbariConfigurationEntity.getConfigurationBaseEntity().getVersionTag()); - Assert.assertEquals("The entity data is not the expected", DATA_MOCK_STR, - gson.fromJson(capturedAmbariConfigurationEntity.getConfigurationBaseEntity().getConfigurationData(), String.class)); - } - - @Test - public void testRemoveAmbariConfigurationRequestResultsInTheProperPersistenceCall() throws Exception { - // GIVEN - Predicate predicate = new PredicateBuilder().property( - AmbariConfigurationResourceProvider.ResourcePropertyId.ID.getPropertyId()).equals("1").toPredicate(); - - Capture<Long> pkCapture = Capture.newInstance(); - ambariConfigurationDAO.removeByPK(EasyMock.capture(pkCapture)); - publisher.publish(EasyMock.anyObject(AmbariLdapConfigChangedEvent.class)); - - replayAll(); - - // WHEN - ambariConfigurationResourceProvider.deleteResourcesAuthorized(requestMock, predicate); - - // THEN - Assert.assertEquals("The pk of the entity to be removed doen't match the expected id", Long.valueOf(1), pkCapture.getValue()); - } - - - @Test - public void testRetrieveAmbariConfigurationShouldResultsInTheProperDAOCall() throws Exception { - // GIVEN - Predicate predicate = new PredicateBuilder().property( - AmbariConfigurationResourceProvider.ResourcePropertyId.ID.getPropertyId()).equals("1").toPredicate(); - - EasyMock.expect(ambariConfigurationDAO.findAll()).andReturn(Lists.newArrayList(createDummyAmbariConfigurationEntity())); - replayAll(); - - // WHEN - Set<Resource> resourceSet = ambariConfigurationResourceProvider.getResourcesAuthorized(requestMock, predicate); - - // THEN - Assert.assertNotNull(resourceSet); - Assert.assertFalse(resourceSet.isEmpty()); - } - - @Test - public void testUpdateAmbariConfigurationShouldResultInTheProperDAOCalls() throws Exception { - // GIVEN - - Predicate predicate = new PredicateBuilder().property( - AmbariConfigurationResourceProvider.ResourcePropertyId.ID.getPropertyId()).equals("1").toPredicate(); - - // properteies in the request, representing the updated configuration - Set<Map<String, Object>> resourcePropertiesSet = Sets.newHashSet(new PropertiesMapBuilder() - .withId(PK_LONG) - .withVersion("2") - .withVersionTag("version-2") - .withData(DATA_MOCK_STR) - .withType(TYPE) - .build()); - - EasyMock.expect(requestMock.getProperties()).andReturn(resourcePropertiesSet); - - AmbariConfigurationEntity persistedEntity = createDummyAmbariConfigurationEntity(); - EasyMock.expect(ambariConfigurationDAO.findByPK(PK_LONG)).andReturn(persistedEntity); - ambariConfigurationDAO.update(EasyMock.capture(ambariConfigurationEntityCapture)); - publisher.publish(EasyMock.anyObject(AmbariLdapConfigChangedEvent.class)); - - replayAll(); - - // WHEN - ambariConfigurationResourceProvider.updateResourcesAuthorized(requestMock, predicate); - - // the captured entity should be the updated one - AmbariConfigurationEntity updatedEntity = ambariConfigurationEntityCapture.getValue(); - - // THEN - Assert.assertNotNull(updatedEntity); - Assert.assertEquals("The updated version is wrong", Integer.valueOf(2), updatedEntity.getConfigurationBaseEntity().getVersion()); - } - - private class PropertiesMapBuilder { - - private Map<String, Object> resourcePropertiesMap = Maps.newHashMap(); - - private PropertiesMapBuilder() { - } - - public PropertiesMapBuilder withId(Long id) { - resourcePropertiesMap.put(AmbariConfigurationResourceProvider.ResourcePropertyId.ID.getPropertyId(), id); - return this; - } - - private PropertiesMapBuilder withVersion(String version) { - resourcePropertiesMap.put(AmbariConfigurationResourceProvider.ResourcePropertyId.VERSION.getPropertyId(), version); - return this; - } - - private PropertiesMapBuilder withVersionTag(String versionTag) { - resourcePropertiesMap.put(AmbariConfigurationResourceProvider.ResourcePropertyId.VERSION_TAG.getPropertyId(), versionTag); - return this; - } - - private PropertiesMapBuilder withData(String dataJson) { - resourcePropertiesMap.put(AmbariConfigurationResourceProvider.ResourcePropertyId.DATA.getPropertyId(), dataJson); - return this; - } - - private PropertiesMapBuilder withType(String type) { - resourcePropertiesMap.put(AmbariConfigurationResourceProvider.ResourcePropertyId.TYPE.getPropertyId(), type); - return this; - } - - - public Map<String, Object> build() { - return this.resourcePropertiesMap; - } - - } - - private AmbariConfigurationEntity createDummyAmbariConfigurationEntity() { - AmbariConfigurationEntity acEntity = new AmbariConfigurationEntity(); - ConfigurationBaseEntity configurationBaseEntity = new ConfigurationBaseEntity(); - acEntity.setConfigurationBaseEntity(configurationBaseEntity); - acEntity.setId(PK_LONG); - acEntity.getConfigurationBaseEntity().setConfigurationData(DATA_MOCK_STR); - acEntity.getConfigurationBaseEntity().setVersion(Integer.valueOf(VERSION)); - acEntity.getConfigurationBaseEntity().setVersionTag(VERSION_TAG); - acEntity.getConfigurationBaseEntity().setType("ldap-config"); - - return acEntity; - } - - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java index 3ace62d..4b5d6c0 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java @@ -278,6 +278,7 @@ public class ClientConfigResourceProviderTest { expect(configuration.areHostsSysPrepped()).andReturn("false"); expect(configuration.isAgentStackRetryOnInstallEnabled()).andReturn("false"); expect(configuration.getAgentStackRetryOnInstallCount()).andReturn("5"); + expect(configuration.getGplLicenseAccepted()).andReturn(Configuration.GPL_LICENSE_ACCEPTED.getDefaultValue()); expect(configuration.getExternalScriptThreadPoolSize()).andReturn(Configuration.THREAD_POOL_SIZE_FOR_EXTERNAL_SCRIPT.getDefaultValue()); expect(configuration.getExternalScriptTimeout()).andReturn(Configuration.EXTERNAL_SCRIPT_TIMEOUT.getDefaultValue()); Map<String,String> props = new HashMap<>(); @@ -535,6 +536,7 @@ public class ClientConfigResourceProviderTest { expect(configuration.areHostsSysPrepped()).andReturn("false"); expect(configuration.isAgentStackRetryOnInstallEnabled()).andReturn("false"); expect(configuration.getAgentStackRetryOnInstallCount()).andReturn("5"); + expect(configuration.getGplLicenseAccepted()).andReturn(Configuration.GPL_LICENSE_ACCEPTED.getDefaultValue()); expect(configuration.getExternalScriptThreadPoolSize()).andReturn(Configuration.THREAD_POOL_SIZE_FOR_EXTERNAL_SCRIPT.getDefaultValue()); expect(configuration.getExternalScriptTimeout()).andReturn(Configuration.EXTERNAL_SCRIPT_TIMEOUT.getDefaultValue()); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java index 9840106..a6fc919 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java @@ -99,6 +99,7 @@ import org.apache.ambari.server.state.StackId; import org.apache.ambari.server.state.StackInfo; import org.apache.ambari.server.state.cluster.ClusterImpl; import org.apache.ambari.server.state.repository.AvailableService; +import org.apache.ambari.server.state.repository.ClusterVersionSummary; import org.apache.ambari.server.state.repository.VersionDefinitionXml; import org.apache.ambari.server.state.stack.upgrade.Direction; import org.apache.ambari.server.state.stack.upgrade.RepositoryVersionHelper; @@ -1883,6 +1884,289 @@ public class ClusterStackVersionResourceProviderTest { } + @Test + public void testCreateResourcesPatch() throws Exception { + JsonArray json = new JsonParser().parse(OS_JSON).getAsJsonArray(); + + JsonObject jsonObj = json.get(0).getAsJsonObject(); + jsonObj.addProperty(OperatingSystemResourceProvider.OPERATING_SYSTEM_AMBARI_MANAGED_REPOS, false); + + String os_json = json.toString(); + + Cluster cluster = createNiceMock(Cluster.class); + StackId stackId = new StackId("HDP", "2.0.1"); + + StackEntity fromStack = new StackEntity(); + fromStack.setStackName(stackId.getStackName()); + fromStack.setStackVersion(stackId.getStackVersion()); + + RepositoryVersionEntity fromRepo = new RepositoryVersionEntity(); + fromRepo.setId(0L); + fromRepo.setOperatingSystems(os_json); + fromRepo.setVersionXsd("version_definition.xsd"); + fromRepo.setType(RepositoryType.STANDARD); + fromRepo.setStack(fromStack); + fromRepo.setVersion("2.0.1.0-1234"); + + + StackEntity stackEntity = new StackEntity(); + stackEntity.setStackName("HDP"); + stackEntity.setStackVersion("2.1.1"); + + String hbaseVersionTestXML = "\n" + + "<repository-version xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + + " xsi:noNamespaceSchemaLocation=\"version_definition.xsd\">\n" + + " \n" + + " <release>\n" + + " <type>PATCH</type>\n" + + " <stack-id>HDP-2.3</stack-id>\n" + + " <version>2.3.4.0</version>\n" + + " <build>3396</build>\n" + + " <compatible-with>2.3.2.[0-9]</compatible-with>\n" + + " <release-notes>http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.4/</release-notes>\n" + + " </release>\n" + + " \n" + + " <manifest>\n" + + " <service id=\"HBASE-112\" name=\"HBASE\" version=\"1.1.2\" version-id=\"2_3_4_0-3396\" />\n" + + " </manifest>\n" + + " \n" + + " <available-services>\n" + + " <service idref=\"HBASE-112\" />\n" + + " </available-services>\n" + + " \n" + + " <repository-info>\n" + + " <os family=\"redhat6\">\n" + + " <package-version>2_3_4_0_3396</package-version>\n" + + " <repo>\n" + + " <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.4.0</baseurl>\n" + + " <repoid>HDP-2.3</repoid>\n" + + " <reponame>HDP</reponame>\n" + + " <unique>true</unique>\n" + + " </repo>\n" + + " <repo>\n" + + " <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6</baseurl>\n" + + " <repoid>HDP-UTILS-1.1.0.20</repoid>\n" + + " <reponame>HDP-UTILS</reponame>\n" + + " <unique>false</unique>\n" + + " </repo>\n" + + " </os>\n" + + " </repository-info>\n" + + " \n" + + " <upgrade>\n" + + " <configuration type=\"hdfs-site\">\n" + + " <set key=\"foo\" value=\"bar\" />\n" + + " </configuration>\n" + + " </upgrade>\n" + + "</repository-version>"; + + String xmlString = hbaseVersionTestXML; + // hack to remove ZK + xmlString = xmlString.replace("<service idref=\"ZOOKEEPER-346\" />", ""); + + + RepositoryVersionEntity repoVersion = new RepositoryVersionEntity(); + repoVersion.setId(1l); + repoVersion.setOperatingSystems(os_json); + repoVersion.setVersionXml(xmlString); + repoVersion.setVersionXsd("version_definition.xsd"); + repoVersion.setType(RepositoryType.PATCH); + repoVersion.setStack(stackEntity); + + ambariMetaInfo.getComponent("HDP", "2.1.1", "HBASE", "HBASE_MASTER").setVersionAdvertised(true); + ambariMetaInfo.getComponent("HDP", "2.0.1", "HBASE", "HBASE_MASTER").setVersionAdvertised(true); + + final String hostWithoutVersionableComponents = "host3"; + List<Host> hostsNeedingInstallCommands = new ArrayList<>(); + + Map<String, Host> hostsForCluster = new HashMap<>(); + int hostCount = 10; + for (int i = 0; i < hostCount; i++) { + String hostname = "host" + i; + Host host = createNiceMock(hostname, Host.class); + expect(host.getHostName()).andReturn(hostname).anyTimes(); + expect(host.getOsFamily()).andReturn("redhat6").anyTimes(); + expect(host.getMaintenanceState(EasyMock.anyLong())).andReturn( + MaintenanceState.OFF).anyTimes(); + expect(host.getAllHostVersions()).andReturn( + Collections.<HostVersionEntity>emptyList()).anyTimes(); + expect(host.getHostAttributes()).andReturn(new HashMap<String, String>()).anyTimes(); + replay(host); + hostsForCluster.put(hostname, host); + + if (StringUtils.equals(hostWithoutVersionableComponents, hostname)) { + hostsNeedingInstallCommands.add(host); + } + } + + Service hdfsService = createNiceMock(Service.class); + expect(hdfsService.getName()).andReturn("HDFS").anyTimes(); + expect(hdfsService.getServiceComponents()).andReturn(new HashMap<String, ServiceComponent>()); + expect(hdfsService.getDesiredRepositoryVersion()).andReturn(fromRepo).anyTimes(); + + Service hbaseService = createNiceMock(Service.class); + expect(hbaseService.getName()).andReturn("HBASE").anyTimes(); + expect(hbaseService.getServiceComponents()).andReturn(new HashMap<String, ServiceComponent>()); + expect(hbaseService.getDesiredRepositoryVersion()).andReturn(fromRepo).anyTimes(); + + Map<String, Service> serviceMap = new HashMap<>(); + serviceMap.put("HDFS", hdfsService); + serviceMap.put("HBASE", hbaseService); + + final ServiceComponentHost schDatanode = createMock(ServiceComponentHost.class); + expect(schDatanode.getServiceName()).andReturn("HDFS").anyTimes(); + expect(schDatanode.getServiceComponentName()).andReturn("DATANODE").anyTimes(); + + final ServiceComponentHost schNamenode = createMock(ServiceComponentHost.class); + expect(schNamenode.getServiceName()).andReturn("HDFS").anyTimes(); + expect(schNamenode.getServiceComponentName()).andReturn("NAMENODE").anyTimes(); + + final ServiceComponentHost schHBM = createMock(ServiceComponentHost.class); + expect(schHBM.getServiceName()).andReturn("HBASE").anyTimes(); + expect(schHBM.getServiceComponentName()).andReturn("HBASE_MASTER").anyTimes(); + + // First host contains versionable components + final List<ServiceComponentHost> schsH1 = Arrays.asList(schDatanode, schNamenode); + + // Second host contains versionable components + final List<ServiceComponentHost> schsH2 = Arrays.asList(schDatanode); + + // Third host only has hbase + final List<ServiceComponentHost> schsH3 = Arrays.asList(schHBM); + + ServiceOsSpecific.Package hdfsPackage = new ServiceOsSpecific.Package(); + hdfsPackage.setName("hdfs"); + + List<ServiceOsSpecific.Package> packages = Collections.singletonList(hdfsPackage); + + ActionManager actionManager = createNiceMock(ActionManager.class); + + RequestStatusResponse response = createNiceMock(RequestStatusResponse.class); + ResourceProvider csvResourceProvider = createNiceMock(ResourceProvider.class); + + Map<String, Map<String, String>> hostConfigTags = new HashMap<>(); + expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class), anyObject(String.class))).andReturn(hostConfigTags); + + expect(managementController.getClusters()).andReturn(clusters).anyTimes(); + expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes(); + expect(managementController.getAuthName()).andReturn("admin").anyTimes(); + expect(managementController.getActionManager()).andReturn(actionManager).anyTimes(); + expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes(); + expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class), + EasyMock.<Map<String, String>>anyObject(), anyObject(String.class))). + andReturn(packages).anyTimes(); // only one host has the versionable component + + expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString())) + .andReturn(new HashMap<String, Map<String, String>>()).anyTimes(); + + expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster).anyTimes(); + expect(clusters.getHostsForCluster(anyObject(String.class))).andReturn( + hostsForCluster).anyTimes(); + + String clusterName = "Cluster100"; + expect(cluster.getClusterId()).andReturn(1L).anyTimes(); + expect(cluster.getHosts()).andReturn(hostsForCluster.values()).atLeastOnce(); + expect(cluster.getServices()).andReturn(serviceMap).anyTimes(); + expect(cluster.getCurrentStackVersion()).andReturn(stackId); + expect(cluster.getServiceComponentHosts(anyObject(String.class))).andAnswer(new IAnswer<List<ServiceComponentHost>>() { + @Override + public List<ServiceComponentHost> answer() throws Throwable { + String hostname = (String) EasyMock.getCurrentArguments()[0]; + if (hostname.equals("host2")) { + return schsH2; + } else if (hostname.equals("host3")) { + return schsH3; + } else { + return schsH1; + } + } + }).anyTimes(); + + expect(cluster.transitionHostsToInstalling(anyObject(RepositoryVersionEntity.class), + anyObject(VersionDefinitionXml.class), eq(false))).andReturn(hostsNeedingInstallCommands).atLeastOnce(); + + ExecutionCommand executionCommand = new ExecutionCommand(); + ExecutionCommandWrapper executionCommandWrapper = createNiceMock(ExecutionCommandWrapper.class); + + expect(executionCommandWrapper.getExecutionCommand()).andReturn(executionCommand).anyTimes(); + + Stage stage = createNiceMock(Stage.class); + expect(stage.getExecutionCommandWrapper(anyObject(String.class), anyObject(String.class))). + andReturn(executionCommandWrapper).anyTimes(); + + Map<Role, Float> successFactors = new HashMap<>(); + expect(stage.getSuccessFactors()).andReturn(successFactors).atLeastOnce(); + + // Check that we create proper stage count + expect(stageFactory.createNew(anyLong(), anyObject(String.class), + anyObject(String.class), anyLong(), + anyObject(String.class), anyObject(String.class), + anyObject(String.class))).andReturn(stage). + times((int) Math.ceil(hostCount / MAX_TASKS_PER_STAGE)); + + expect(repositoryVersionDAOMock.findByStackAndVersion(anyObject(StackId.class), + anyObject(String.class))).andReturn(repoVersion); + + Capture<org.apache.ambari.server.actionmanager.Request> c = Capture.newInstance(); + Capture<ExecuteActionRequest> ear = Capture.newInstance(); + + actionManager.sendActions(capture(c), capture(ear)); + expectLastCall().atLeastOnce(); + expect(actionManager.getRequestTasks(anyLong())).andReturn(Collections.<HostRoleCommand>emptyList()).anyTimes(); + + ClusterEntity clusterEntity = new ClusterEntity(); + clusterEntity.setClusterId(1l); + clusterEntity.setClusterName(clusterName); + + StageUtils.setTopologyManager(injector.getInstance(TopologyManager.class)); + StageUtils.setConfiguration(injector.getInstance(Configuration.class)); + + // replay + replay(managementController, response, clusters, hdfsService, hbaseService, csvResourceProvider, + cluster, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schHBM, actionManager, + executionCommandWrapper,stage, stageFactory); + + ResourceProvider provider = createProvider(managementController); + injector.injectMembers(provider); + + // add the property map to a set for the request. add more maps for multiple creates + Set<Map<String, Object>> propertySet = new LinkedHashSet<>(); + + Map<String, Object> properties = new LinkedHashMap<>(); + + // add properties to the request map + properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID, "Cluster100"); + properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID, "2.2.0.1-885"); + properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_STACK_PROPERTY_ID, "HDP"); + properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_VERSION_PROPERTY_ID, "2.1.1"); + + propertySet.add(properties); + + // create the request + Request request = PropertyHelper.getCreateRequest(propertySet, null); + + SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator()); + + RequestStatus status = provider.createResources(request); + Assert.assertNotNull(status); + + // check that the success factor was populated in the stage + Float successFactor = successFactors.get(Role.INSTALL_PACKAGES); + Assert.assertEquals(Float.valueOf(0.85f), successFactor); + + Assert.assertNotNull(executionCommand.getRepositoryFile()); + Assert.assertNotNull(executionCommand.getRoleParameters()); + Map<String, Object> roleParams = executionCommand.getRoleParameters(); + Assert.assertTrue(roleParams.containsKey(KeyNames.CLUSTER_VERSION_SUMMARY)); + Assert.assertEquals(ClusterVersionSummary.class, + roleParams.get(KeyNames.CLUSTER_VERSION_SUMMARY).getClass()); + + Assert.assertEquals(2, executionCommand.getRepositoryFile().getRepositories().size()); + for (CommandRepository.Repository repo : executionCommand.getRepositoryFile().getRepositories()) { + Assert.assertFalse(repo.isAmbariManaged()); + } + + } + private ClusterStackVersionResourceProvider createProvider(AmbariManagementController amc) { ResourceProviderFactory factory = injector.getInstance(ResourceProviderFactory.class); AbstractControllerResourceProvider.init(factory); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostKerberosIdentityResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostKerberosIdentityResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostKerberosIdentityResourceProviderTest.java index 9c94f35..59fbba0 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostKerberosIdentityResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostKerberosIdentityResourceProviderTest.java @@ -139,11 +139,12 @@ public class HostKerberosIdentityResourceProviderTest extends EasyMockSupport { expect(principalDescriptor1.getLocalUsername()).andReturn("principal1"); KerberosKeytabDescriptor keytabDescriptor1 = createStrictMock(KerberosKeytabDescriptor.class); - expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").times(1); - expect(keytabDescriptor1.getGroupAccess()).andReturn("r").times(1); expect(keytabDescriptor1.getFile()).andReturn("/etc/security/keytabs/principal1.headless.keytab").times(1); - expect(keytabDescriptor1.getOwnerName()).andReturn("principal1").times(1); - expect(keytabDescriptor1.getGroupName()).andReturn("principal1").times(1); + expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").once(); + expect(keytabDescriptor1.getGroupAccess()).andReturn("r").once(); + expect(keytabDescriptor1.getFile()).andReturn("/etc/security/keytabs/principal1.headless.keytab").times(1); + expect(keytabDescriptor1.getOwnerName()).andReturn("principal1").once(); + expect(keytabDescriptor1.getGroupName()).andReturn("principal1").once(); KerberosIdentityDescriptor identity1 = createStrictMock(KerberosIdentityDescriptor.class); expect(identity1.getPrincipalDescriptor()).andReturn(principalDescriptor1).times(1); @@ -189,8 +190,7 @@ public class HostKerberosIdentityResourceProviderTest extends EasyMockSupport { expect(kerberosPrincipalDAO.exists("[email protected]")).andReturn(false).times(1); KerberosPrincipalHostDAO kerberosPrincipalHostDAO = createStrictMock(KerberosPrincipalHostDAO.class); - expect(kerberosPrincipalHostDAO.exists("[email protected]", 100L)).andReturn(true).times(1); - expect(kerberosPrincipalHostDAO.exists("principal2/[email protected]", 100L)).andReturn(false).times(1); + expect(kerberosPrincipalHostDAO.exists("[email protected]", 100L, "/etc/security/keytabs/principal1.headless.keytab")).andReturn(true).times(1); HostEntity host100 = createStrictMock(HostEntity.class); expect(host100.getHostId()).andReturn(100L).times(1); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java index ca5cde0..abdef9b 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryResourceProviderTest.java @@ -23,6 +23,7 @@ import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; +import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.Map; @@ -36,6 +37,7 @@ import org.apache.ambari.server.controller.spi.Resource; import org.apache.ambari.server.controller.spi.ResourceProvider; import org.apache.ambari.server.controller.utilities.PredicateBuilder; import org.apache.ambari.server.controller.utilities.PropertyHelper; +import org.apache.ambari.server.state.stack.RepoTag; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Test; @@ -56,7 +58,7 @@ public class RepositoryResourceProviderTest { AmbariManagementController managementController = EasyMock.createMock(AmbariManagementController.class); RepositoryResponse rr = new RepositoryResponse(VAL_BASE_URL, VAL_OS, - VAL_REPO_ID, VAL_REPO_NAME, VAL_DISTRIBUTION, VAL_COMPONENT_NAME, null, null); + VAL_REPO_ID, VAL_REPO_NAME, VAL_DISTRIBUTION, VAL_COMPONENT_NAME, null, null, Collections.<RepoTag>emptySet()); rr.setStackName(VAL_STACK_NAME); rr.setStackVersion(VAL_STACK_VERSION); Set<RepositoryResponse> allResponse = new HashSet<>(); @@ -168,7 +170,7 @@ public class RepositoryResourceProviderTest { AmbariManagementController managementController = EasyMock.createMock(AmbariManagementController.class); RepositoryResponse rr = new RepositoryResponse(VAL_BASE_URL, VAL_OS, - VAL_REPO_ID, VAL_REPO_NAME, null, null, null, null); + VAL_REPO_ID, VAL_REPO_NAME, null, null, null, null , Collections.<RepoTag>emptySet()); Set<RepositoryResponse> allResponse = new HashSet<>(); allResponse.add(rr); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java new file mode 100644 index 0000000..5016160 --- /dev/null +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java @@ -0,0 +1,393 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ambari.server.controller.internal; + +import static org.apache.ambari.server.controller.internal.RootServiceComponentConfigurationResourceProvider.CONFIGURATION_CATEGORY_PROPERTY_ID; +import static org.apache.ambari.server.controller.internal.RootServiceComponentConfigurationResourceProvider.CONFIGURATION_COMPONENT_NAME_PROPERTY_ID; +import static org.apache.ambari.server.controller.internal.RootServiceComponentConfigurationResourceProvider.CONFIGURATION_PROPERTIES_PROPERTY_ID; +import static org.apache.ambari.server.controller.internal.RootServiceComponentConfigurationResourceProvider.CONFIGURATION_SERVICE_NAME_PROPERTY_ID; +import static org.easymock.EasyMock.anyObject; +import static org.easymock.EasyMock.capture; +import static org.easymock.EasyMock.eq; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.expectLastCall; +import static org.easymock.EasyMock.newCapture; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; + +import javax.persistence.EntityManager; + +import org.apache.ambari.server.controller.RootComponent; +import org.apache.ambari.server.controller.RootService; +import org.apache.ambari.server.controller.predicate.AndPredicate; +import org.apache.ambari.server.controller.spi.Predicate; +import org.apache.ambari.server.controller.spi.Request; +import org.apache.ambari.server.controller.spi.Resource; +import org.apache.ambari.server.controller.spi.ResourceProvider; +import org.apache.ambari.server.controller.utilities.PredicateBuilder; +import org.apache.ambari.server.events.AmbariConfigurationChangedEvent; +import org.apache.ambari.server.events.publishers.AmbariEventPublisher; +import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO; +import org.apache.ambari.server.orm.entities.AmbariConfigurationEntity; +import org.apache.ambari.server.security.TestAuthenticationFactory; +import org.apache.ambari.server.security.authorization.AuthorizationException; +import org.easymock.Capture; +import org.easymock.EasyMockSupport; +import org.junit.After; +import org.junit.Test; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.Injector; + +import junit.framework.Assert; + +public class RootServiceComponentConfigurationResourceProviderTest extends EasyMockSupport { + + private static final String CATEGORY_NAME_1 = "test-category-1"; + private static final String CATEGORY_NAME_2 = "test-category-2"; + + @After + public void clearAuthentication() { + SecurityContextHolder.getContext().setAuthentication(null); + } + + @Test + public void testCreateResources_Administrator() throws Exception { + testCreateResources(TestAuthenticationFactory.createAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testCreateResources_ClusterAdministrator() throws Exception { + testCreateResources(TestAuthenticationFactory.createClusterAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testCreateResources_ClusterOperator() throws Exception { + testCreateResources(TestAuthenticationFactory.createClusterOperator()); + } + + @Test(expected = AuthorizationException.class) + public void testCreateResources_ServiceAdministrator() throws Exception { + testCreateResources(TestAuthenticationFactory.createServiceAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testCreateResources_ServiceOperator() throws Exception { + testCreateResources(TestAuthenticationFactory.createServiceOperator()); + } + + private void testCreateResources(Authentication authentication) throws Exception { + Injector injector = createInjector(); + + ResourceProvider resourceProvider = injector.getInstance(RootServiceComponentConfigurationResourceProvider.class); + + Set<Map<String, Object>> propertySets = new HashSet<>(); + + Map<String, String> properties1 = new HashMap<>(); + properties1.put("property1a", "value1"); + properties1.put("property2a", "value2"); + propertySets.add(toRequestProperties(CATEGORY_NAME_1, properties1)); + + Map<String, String> properties2 = new HashMap<>(); + properties2.put("property1b", "value1"); + properties2.put("property2b", "value2"); + propertySets.add(toRequestProperties(CATEGORY_NAME_2, properties2)); + + Request request = createMock(Request.class); + expect(request.getProperties()).andReturn(propertySets).once(); + + Capture<Map<String, String>> capturedProperties1 = newCapture(); + Capture<Map<String, String>> capturedProperties2 = newCapture(); + + AmbariConfigurationDAO dao = injector.getInstance(AmbariConfigurationDAO.class); + expect(dao.reconcileCategory(eq(CATEGORY_NAME_1), capture(capturedProperties1), eq(true))) + .andReturn(true) + .once(); + expect(dao.reconcileCategory(eq(CATEGORY_NAME_2), capture(capturedProperties2), eq(true))) + .andReturn(true) + .once(); + + AmbariEventPublisher publisher = injector.getInstance(AmbariEventPublisher.class); + publisher.publish(anyObject(AmbariConfigurationChangedEvent.class)); + expectLastCall().times(2); + + replayAll(); + + SecurityContextHolder.getContext().setAuthentication(authentication); + + resourceProvider.createResources(request); + + verifyAll(); + + validateCapturedProperties(properties1, capturedProperties1); + validateCapturedProperties(properties2, capturedProperties2); + } + + @Test + public void testDeleteResources_Administrator() throws Exception { + testDeleteResources(TestAuthenticationFactory.createAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testDeleteResources_ClusterAdministrator() throws Exception { + testDeleteResources(TestAuthenticationFactory.createClusterAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testDeleteResources_ClusterOperator() throws Exception { + testDeleteResources(TestAuthenticationFactory.createClusterOperator()); + } + + @Test(expected = AuthorizationException.class) + public void testDeleteResources_ServiceAdministrator() throws Exception { + testDeleteResources(TestAuthenticationFactory.createServiceAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testDeleteResources_ServiceOperator() throws Exception { + testDeleteResources(TestAuthenticationFactory.createServiceOperator()); + } + + private void testDeleteResources(Authentication authentication) throws Exception { + Injector injector = createInjector(); + + ResourceProvider resourceProvider = injector.getInstance(RootServiceComponentConfigurationResourceProvider.class); + + Predicate predicate = createPredicate(RootService.AMBARI.name(), RootComponent.AMBARI_SERVER.name(), CATEGORY_NAME_1); + + Request request = createMock(Request.class); + + AmbariConfigurationDAO dao = injector.getInstance(AmbariConfigurationDAO.class); + expect(dao.removeByCategory(CATEGORY_NAME_1)).andReturn(1).once(); + + AmbariEventPublisher publisher = injector.getInstance(AmbariEventPublisher.class); + publisher.publish(anyObject(AmbariConfigurationChangedEvent.class)); + expectLastCall().once(); + + replayAll(); + + SecurityContextHolder.getContext().setAuthentication(authentication); + + resourceProvider.deleteResources(request, predicate); + + verifyAll(); + } + + @Test + public void testGetResources_Administrator() throws Exception { + testGetResources(TestAuthenticationFactory.createAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testGetResources_ClusterAdministrator() throws Exception { + testGetResources(TestAuthenticationFactory.createClusterAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testGetResources_ClusterOperator() throws Exception { + testGetResources(TestAuthenticationFactory.createClusterOperator()); + } + + @Test(expected = AuthorizationException.class) + public void testGetResources_ServiceAdministrator() throws Exception { + testGetResources(TestAuthenticationFactory.createServiceAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testGetResources_ServiceOperator() throws Exception { + testGetResources(TestAuthenticationFactory.createServiceOperator()); + } + + private void testGetResources(Authentication authentication) throws Exception { + Injector injector = createInjector(); + + ResourceProvider resourceProvider = injector.getInstance(RootServiceComponentConfigurationResourceProvider.class); + + Predicate predicate = createPredicate(RootService.AMBARI.name(), RootComponent.AMBARI_SERVER.name(), CATEGORY_NAME_1); + + Request request = createMock(Request.class); + expect(request.getPropertyIds()).andReturn(null).anyTimes(); + + Map<String, String> properties = new HashMap<>(); + properties.put("property1a", "value1"); + properties.put("property2a", "value2"); + + AmbariConfigurationDAO dao = injector.getInstance(AmbariConfigurationDAO.class); + expect(dao.findByCategory(CATEGORY_NAME_1)).andReturn(createEntities(CATEGORY_NAME_1, properties)).once(); + + replayAll(); + + SecurityContextHolder.getContext().setAuthentication(authentication); + + Set<Resource> response = resourceProvider.getResources(request, predicate); + + verifyAll(); + + Assert.assertNotNull(response); + Assert.assertEquals(1, response.size()); + + Resource resource = response.iterator().next(); + Assert.assertEquals(Resource.Type.RootServiceComponentConfiguration, resource.getType()); + + Map<String, Map<String, Object>> propertiesMap = resource.getPropertiesMap(); + Assert.assertEquals(2, propertiesMap.size()); + + Assert.assertEquals(CATEGORY_NAME_1, propertiesMap.get(RootServiceComponentConfigurationResourceProvider.RESOURCE_KEY).get("category")); + + Map<String, Object> retrievedProperties = propertiesMap.get(RootServiceComponentConfigurationResourceProvider.RESOURCE_KEY + "/properties"); + Assert.assertEquals(2, retrievedProperties.size()); + + for (Map.Entry<String, String> entry : properties.entrySet()) { + Assert.assertEquals(entry.getValue(), retrievedProperties.get(entry.getKey())); + } + } + + @Test + public void testUpdateResources_Administrator() throws Exception { + testUpdateResources(TestAuthenticationFactory.createAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testUpdateResources_ClusterAdministrator() throws Exception { + testUpdateResources(TestAuthenticationFactory.createClusterAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testUpdateResources_ClusterOperator() throws Exception { + testUpdateResources(TestAuthenticationFactory.createClusterOperator()); + } + + @Test(expected = AuthorizationException.class) + public void testUpdateResources_ServiceAdministrator() throws Exception { + testUpdateResources(TestAuthenticationFactory.createServiceAdministrator()); + } + + @Test(expected = AuthorizationException.class) + public void testUpdateResources_ServiceOperator() throws Exception { + testUpdateResources(TestAuthenticationFactory.createServiceOperator()); + } + + private void testUpdateResources(Authentication authentication) throws Exception { + Injector injector = createInjector(); + + ResourceProvider resourceProvider = injector.getInstance(RootServiceComponentConfigurationResourceProvider.class); + + Predicate predicate = createPredicate(RootService.AMBARI.name(), RootComponent.AMBARI_SERVER.name(), CATEGORY_NAME_1); + + Set<Map<String, Object>> propertySets = new HashSet<>(); + + Map<String, String> properties1 = new HashMap<>(); + properties1.put("property1a", "value1"); + properties1.put("property2a", "value2"); + propertySets.add(toRequestProperties(CATEGORY_NAME_1, properties1)); + + Request request = createMock(Request.class); + expect(request.getProperties()).andReturn(propertySets).once(); + + Capture<Map<String, String>> capturedProperties1 = newCapture(); + + AmbariConfigurationDAO dao = injector.getInstance(AmbariConfigurationDAO.class); + expect(dao.reconcileCategory(eq(CATEGORY_NAME_1), capture(capturedProperties1), eq(false))) + .andReturn(true) + .once(); + + AmbariEventPublisher publisher = injector.getInstance(AmbariEventPublisher.class); + publisher.publish(anyObject(AmbariConfigurationChangedEvent.class)); + expectLastCall().times(1); + + replayAll(); + + SecurityContextHolder.getContext().setAuthentication(authentication); + + resourceProvider.updateResources(request, predicate); + + verifyAll(); + + validateCapturedProperties(properties1, capturedProperties1); + } + + private Predicate createPredicate(String serviceName, String componentName, String categoryName) { + Predicate predicateService = new PredicateBuilder() + .property(CONFIGURATION_SERVICE_NAME_PROPERTY_ID) + .equals(serviceName) + .toPredicate(); + Predicate predicateComponent = new PredicateBuilder() + .property(CONFIGURATION_COMPONENT_NAME_PROPERTY_ID) + .equals(componentName) + .toPredicate(); + Predicate predicateCategory = new PredicateBuilder() + .property(CONFIGURATION_CATEGORY_PROPERTY_ID) + .equals(categoryName) + .toPredicate(); + return new AndPredicate(predicateService, predicateComponent, predicateCategory); + } + + private List<AmbariConfigurationEntity> createEntities(String categoryName, Map<String, String> properties) { + List<AmbariConfigurationEntity> entities = new ArrayList<>(); + + for (Map.Entry<String, String> property : properties.entrySet()) { + AmbariConfigurationEntity entity = new AmbariConfigurationEntity(); + entity.setCategoryName(categoryName); + entity.setPropertyName(property.getKey()); + entity.setPropertyValue(property.getValue()); + entities.add(entity); + } + + return entities; + } + + private Map<String, Object> toRequestProperties(String categoryName1, Map<String, String> properties) { + Map<String, Object> requestProperties = new HashMap<>(); + requestProperties.put(CONFIGURATION_SERVICE_NAME_PROPERTY_ID, "AMBARI"); + requestProperties.put(CONFIGURATION_COMPONENT_NAME_PROPERTY_ID, "AMBARI_SERVER"); + requestProperties.put(CONFIGURATION_CATEGORY_PROPERTY_ID, categoryName1); + for (Map.Entry<String, String> entry : properties.entrySet()) { + requestProperties.put(CONFIGURATION_PROPERTIES_PROPERTY_ID + "/" + entry.getKey(), entry.getValue()); + } + return requestProperties; + } + + private void validateCapturedProperties(Map<String, String> expectedProperties, Capture<Map<String, String>> capturedProperties) { + Assert.assertTrue(capturedProperties.hasCaptured()); + + Map<String, String> properties = capturedProperties.getValue(); + Assert.assertNotNull(properties); + + // Convert the Map to a TreeMap to help with comparisons + expectedProperties = new TreeMap<>(expectedProperties); + properties = new TreeMap<>(properties); + Assert.assertEquals(expectedProperties, properties); + } + + private Injector createInjector() throws Exception { + return Guice.createInjector(new AbstractModule() { + @Override + protected void configure() { + bind(EntityManager.class).toInstance(createNiceMock(EntityManager.class)); + bind(AmbariConfigurationDAO.class).toInstance(createMock(AmbariConfigurationDAO.class)); + bind(AmbariEventPublisher.class).toInstance(createMock(AmbariEventPublisher.class)); + } + }); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentPropertyProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentPropertyProviderTest.java index a202516..d3f9bd1 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentPropertyProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentPropertyProviderTest.java @@ -24,7 +24,8 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import org.apache.ambari.server.controller.RootServiceResponseFactory; +import org.apache.ambari.server.controller.RootComponent; +import org.apache.ambari.server.controller.RootService; import org.apache.ambari.server.controller.spi.Request; import org.apache.ambari.server.controller.spi.Resource; import org.apache.ambari.server.controller.utilities.PropertyHelper; @@ -34,27 +35,27 @@ import org.junit.Test; public class RootServiceComponentPropertyProviderTest { @Test public void testPopulateResources_AmbariServer_None() throws Exception { - testPopulateResources(RootServiceResponseFactory.Components.AMBARI_SERVER.name(), false, false, false, false); + testPopulateResources(RootComponent.AMBARI_SERVER.name(), false, false, false, false); } @Test public void testPopulateResources_AmbariServer_CiphersAndJCEPolicy() throws Exception { - testPopulateResources(RootServiceResponseFactory.Components.AMBARI_SERVER.name(), true, true, true, true); + testPopulateResources(RootComponent.AMBARI_SERVER.name(), true, true, true, true); } @Test public void testPopulateResources_AmbariServer_JCEPolicy() throws Exception { - testPopulateResources(RootServiceResponseFactory.Components.AMBARI_SERVER.name(), false, true, false, true); + testPopulateResources(RootComponent.AMBARI_SERVER.name(), false, true, false, true); } @Test public void testPopulateResources_AmbariServer_Ciphers() throws Exception { - testPopulateResources(RootServiceResponseFactory.Components.AMBARI_SERVER.name(), true, false, true, false); + testPopulateResources(RootComponent.AMBARI_SERVER.name(), true, false, true, false); } @Test public void testPopulateResources_AmbariAgent_CiphersAndJCEPolicy() throws Exception { - testPopulateResources(RootServiceResponseFactory.Components.AMBARI_AGENT.name(), true, true, false, false); + testPopulateResources(RootComponent.AMBARI_AGENT.name(), true, true, false, false); } public void testPopulateResources(String componentName, @@ -64,7 +65,7 @@ public class RootServiceComponentPropertyProviderTest { Resource resource = new ResourceImpl(Resource.Type.RootService); resource.setProperty(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID, componentName); - resource.setProperty(RootServiceComponentResourceProvider.SERVICE_NAME_PROPERTY_ID, RootServiceResponseFactory.Services.AMBARI.name()); + resource.setProperty(RootServiceComponentResourceProvider.SERVICE_NAME_PROPERTY_ID, RootService.AMBARI.name()); HashSet<String> requestIds = new HashSet<>(); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java index 222340b..4316647 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentResourceProviderTest.java @@ -29,8 +29,9 @@ import java.util.Map; import java.util.Set; import org.apache.ambari.server.controller.AmbariManagementController; +import org.apache.ambari.server.controller.RootComponent; +import org.apache.ambari.server.controller.RootService; import org.apache.ambari.server.controller.RootServiceComponentResponse; -import org.apache.ambari.server.controller.RootServiceResponseFactory; import org.apache.ambari.server.controller.spi.Predicate; import org.apache.ambari.server.controller.spi.Request; import org.apache.ambari.server.controller.spi.Resource; @@ -50,12 +51,12 @@ public class RootServiceComponentResourceProviderTest { AmbariManagementController managementController = createMock(AmbariManagementController.class); Set<RootServiceComponentResponse> allResponse = new HashSet<>(); - String serviceName = RootServiceResponseFactory.Services.AMBARI.name(); + String serviceName = RootService.AMBARI.name(); Map<String, String> emptyMap = Collections.emptyMap(); allResponse.add(new RootServiceComponentResponse(serviceName, "component1", "1.1.1", emptyMap)); allResponse.add(new RootServiceComponentResponse(serviceName, "component2", "1.1.1", emptyMap)); allResponse.add(new RootServiceComponentResponse(serviceName, "component3", "1.1.1", emptyMap)); - allResponse.add(new RootServiceComponentResponse(serviceName, RootServiceResponseFactory.Components.AMBARI_SERVER.name(), "1.1.1", emptyMap)); + allResponse.add(new RootServiceComponentResponse(serviceName, RootComponent.AMBARI_SERVER.name(), "1.1.1", emptyMap)); Set<RootServiceComponentResponse> nameResponse = new HashSet<>(); nameResponse.add(new RootServiceComponentResponse(serviceName, "component4", "1.1.1", emptyMap)); @@ -92,7 +93,7 @@ public class RootServiceComponentResourceProviderTest { String componentName = (String) resource.getPropertyValue(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID); String componentVersion = (String) resource.getPropertyValue(RootServiceComponentResourceProvider.COMPONENT_VERSION_PROPERTY_ID); Long server_clock = (Long) resource.getPropertyValue(RootServiceComponentResourceProvider.SERVER_CLOCK_PROPERTY_ID); - if (componentName.equals(RootServiceResponseFactory.Components.AMBARI_SERVER.name())){ + if (componentName.equals(RootComponent.AMBARI_SERVER.name())){ Assert.assertNotNull(server_clock); } else { Assert.assertNull(server_clock); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java index 9c5fb98..9e6b98b 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java @@ -214,23 +214,25 @@ public class UpgradeResourceProviderTest extends EasyMockSupport { StackEntity stackEntity220 = stackDAO.find("HDP", "2.2.0"); StackId stack211 = new StackId(stackEntity211); + String operatingSystems = "[{\"OperatingSystems/ambari_managed_repositories\":\"true\",\"repositories\":[{\"Repositories/repo_id\":\"HDP\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP\"},{\"Repositories/repo_id\":\"HDP-UTILS\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP-UTILS\"}],\"OperatingSystems/os_type\":\"redhat6\"}]"; + repoVersionEntity2110 = new RepositoryVersionEntity(); repoVersionEntity2110.setDisplayName("My New Version 1"); - repoVersionEntity2110.setOperatingSystems(""); + repoVersionEntity2110.setOperatingSystems(operatingSystems); repoVersionEntity2110.setStack(stackEntity211); repoVersionEntity2110.setVersion("2.1.1.0"); repoVersionDao.create(repoVersionEntity2110); repoVersionEntity2111 = new RepositoryVersionEntity(); repoVersionEntity2111.setDisplayName("My New Version 2 for minor upgrade"); - repoVersionEntity2111.setOperatingSystems(""); + repoVersionEntity2111.setOperatingSystems(operatingSystems); repoVersionEntity2111.setStack(stackEntity211); repoVersionEntity2111.setVersion("2.1.1.1"); repoVersionDao.create(repoVersionEntity2111); repoVersionEntity2112 = new RepositoryVersionEntity(); repoVersionEntity2112.setDisplayName("My New Version 3 for patch upgrade"); - repoVersionEntity2112.setOperatingSystems(""); + repoVersionEntity2112.setOperatingSystems(operatingSystems); repoVersionEntity2112.setStack(stackEntity211); repoVersionEntity2112.setVersion("2.1.1.2"); repoVersionEntity2112.setType(RepositoryType.PATCH); @@ -239,7 +241,7 @@ public class UpgradeResourceProviderTest extends EasyMockSupport { repoVersionEntity2200 = new RepositoryVersionEntity(); repoVersionEntity2200.setDisplayName("My New Version 4 for major upgrade"); - repoVersionEntity2200.setOperatingSystems(""); + repoVersionEntity2200.setOperatingSystems(operatingSystems); repoVersionEntity2200.setStack(stackEntity220); repoVersionEntity2200.setVersion("2.2.0.0"); repoVersionDao.create(repoVersionEntity2200); @@ -1443,6 +1445,14 @@ public class UpgradeResourceProviderTest extends EasyMockSupport { requestProps.put(UpgradeResourceProvider.UPGRADE_HOST_ORDERED_HOSTS, hostsOrder); upgradeResourceProvider.createResources(request); + + + // make sure that the desired versions are updated + Cluster cluster = clusters.getCluster("c1"); + assertNotNull(cluster); + + Service service = cluster.getService("ZOOKEEPER"); + assertEquals(repoVersionEntity2200, service.getDesiredRepositoryVersion()); } /** @@ -1923,7 +1933,7 @@ public class UpgradeResourceProviderTest extends EasyMockSupport { StackEntity stackEntity = stackDAO.find("HDP", "2.1.1"); RepositoryVersionEntity repoVersionEntity = new RepositoryVersionEntity(); repoVersionEntity.setDisplayName("My New Version 3"); - repoVersionEntity.setOperatingSystems(""); + repoVersionEntity.setOperatingSystems("[{\"OperatingSystems/ambari_managed_repositories\":\"true\",\"repositories\":[{\"Repositories/repo_id\":\"HDP\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP\"},{\"Repositories/repo_id\":\"HDP-UTILS\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP-UTILS\"}],\"OperatingSystems/os_type\":\"redhat6\"}]"); repoVersionEntity.setStack(stackEntity); repoVersionEntity.setVersion("2.2.2.3"); repoVersionDao.create(repoVersionEntity); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java index 687cbee..a27dab4 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/KerberosIdentityCleanerTest.java @@ -77,7 +77,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport { @Test public void removesAllKerberosIdentitesOfComponentAfterComponentWasUninstalled() throws Exception { installComponent(OOZIE, OOZIE_SERVER, HOST); - kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1", "/OOZIE/OOZIE_SERVER/oozie_server2")); + kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER, -1l)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1", "/OOZIE/OOZIE_SERVER/oozie_server2")); expectLastCall().once(); replayAll(); uninstallComponent(OOZIE, OOZIE_SERVER, HOST); @@ -95,7 +95,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport { public void skipsRemovingIdentityThatIsSharedByPrincipalName() throws Exception { installComponent(OOZIE, OOZIE_SERVER, HOST); installComponent(OOZIE_2, OOZIE_SERVER_2, HOST); - kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1")); + kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, OOZIE, OOZIE_SERVER, -1l)), newHashSet("/OOZIE/OOZIE_SERVER/oozie_server1")); expectLastCall().once(); replayAll(); uninstallComponent(OOZIE, OOZIE_SERVER, HOST); @@ -106,7 +106,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport { public void skipsRemovingIdentityThatIsSharedByKeyTabFilePath() throws Exception { installComponent(YARN, RESOURCE_MANAGER, HOST); installComponent(YARN_2, RESOURCE_MANAGER_2, HOST); - kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, YARN, RESOURCE_MANAGER)), newHashSet("/YARN/RESOURCE_MANAGER/rm_unique")); + kerberosHelper.deleteIdentities(cluster, singletonList(new Component(HOST, YARN, RESOURCE_MANAGER, -1l)), newHashSet("/YARN/RESOURCE_MANAGER/rm_unique")); expectLastCall().once(); replayAll(); uninstallComponent(YARN, RESOURCE_MANAGER, HOST); @@ -141,7 +141,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport { } private ArrayList<Component> hdfsComponents() { - return newArrayList(new Component(HOST, HDFS, NAMENODE), new Component(HOST, HDFS, DATANODE)); + return newArrayList(new Component(HOST, HDFS, NAMENODE, 0l), new Component(HOST, HDFS, DATANODE, 0l)); } private void installComponent(String serviceName, String componentName, String... hostNames) { @@ -163,7 +163,7 @@ public class KerberosIdentityCleanerTest extends EasyMockSupport { } private void uninstallComponent(String service, String component, String host) throws KerberosMissingAdminCredentialsException { - kerberosIdentityCleaner.componentRemoved(new ServiceComponentUninstalledEvent(CLUSTER_ID, "any", "any", service, "", "", component, host, false)); + kerberosIdentityCleaner.componentRemoved(new ServiceComponentUninstalledEvent(CLUSTER_ID, "any", "any", service, "", "", component, host, false, null)); } private void uninstallService(String service, List<Component> components) throws KerberosMissingAdminCredentialsException { http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java index ed3a744..d792c5c 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListenerTest.java @@ -514,7 +514,7 @@ public class HostVersionOutOfSyncListenerTest { ServiceComponentUninstalledEvent event = new ServiceComponentUninstalledEvent( c1.getClusterId(), clusterStackId.getStackName(), clusterStackId.getStackVersion(), - "HDFS", "", "", "DATANODE", sch.getHostName(), false); + "HDFS", "", "", "DATANODE", sch.getHostName(), false, null); m_eventPublisher.publish(event); } http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/ldap/LdapModuleFunctionalTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/ldap/LdapModuleFunctionalTest.java b/ambari-server/src/test/java/org/apache/ambari/server/ldap/LdapModuleFunctionalTest.java index 30f5e22..3917cdf 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/ldap/LdapModuleFunctionalTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/ldap/LdapModuleFunctionalTest.java @@ -125,8 +125,8 @@ public class LdapModuleFunctionalTest { return ldapPropsMap; } - private static Map<String, Object> getADProps() { - Map<String, Object> ldapPropsMap = Maps.newHashMap(); + private static Map<String, String> getADProps() { + Map<String, String> ldapPropsMap = Maps.newHashMap(); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/ldap/domain/TestAmbariLdapConfigurationFactory.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/ldap/domain/TestAmbariLdapConfigurationFactory.java b/ambari-server/src/test/java/org/apache/ambari/server/ldap/domain/TestAmbariLdapConfigurationFactory.java index aa26498..1082250 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/ldap/domain/TestAmbariLdapConfigurationFactory.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/ldap/domain/TestAmbariLdapConfigurationFactory.java @@ -23,7 +23,7 @@ import java.util.Map; public class TestAmbariLdapConfigurationFactory implements AmbariLdapConfigurationFactory { @Override - public AmbariLdapConfiguration createLdapConfiguration(Map<String, Object> configuration) { + public AmbariLdapConfiguration createLdapConfiguration(Map<String, String> configuration) { return new AmbariLdapConfiguration(configuration); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/AmbariLdapFacadeTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/AmbariLdapFacadeTest.java b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/AmbariLdapFacadeTest.java index db0e5a9..97ce30e 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/AmbariLdapFacadeTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/AmbariLdapFacadeTest.java @@ -163,12 +163,12 @@ public class AmbariLdapFacadeTest extends EasyMockSupport { public void testShouldLdapAttributeDetectionDelegateToTheRightServiceCalls() throws Exception { // configuration map with user attributes detected - Map<String, Object> userConfigMap = Maps.newHashMap(); + Map<String, String> userConfigMap = Maps.newHashMap(); userConfigMap.put(AmbariLdapConfigKeys.USER_NAME_ATTRIBUTE.key(), "uid"); AmbariLdapConfiguration userAttrDecoratedConfig = ambariLdapConfigurationFactory.createLdapConfiguration(userConfigMap); // configuration map with user+group attributes detected - Map<String, Object> groupConfigMap = Maps.newHashMap(userConfigMap); + Map<String, String> groupConfigMap = Maps.newHashMap(userConfigMap); groupConfigMap.put(AmbariLdapConfigKeys.GROUP_NAME_ATTRIBUTE.key(), "dn"); AmbariLdapConfiguration groupAttrDecoratedConfig = ambariLdapConfigurationFactory.createLdapConfiguration(groupConfigMap); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionServiceTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionServiceTest.java index 09dea1c..a44bf7c 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionServiceTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionServiceTest.java @@ -78,7 +78,7 @@ public class DefaultLdapAttributeDetectionServiceTest extends EasyMockSupport { @SuppressWarnings("unchecked") public void shouldLdapUserAttributeDetection() throws Exception { // GIVEN - Map<String, Object> configMap = Maps.newHashMap(); + Map<String, String> configMap = Maps.newHashMap(); configMap.put(AmbariLdapConfigKeys.USER_SEARCH_BASE.key(), "dc=example,dc=com"); AmbariLdapConfiguration ldapConfiguration = ldapConfigurationFactory.createLdapConfiguration(configMap); @@ -109,7 +109,7 @@ public class DefaultLdapAttributeDetectionServiceTest extends EasyMockSupport { @Test(expected = AmbariLdapException.class) public void testShouldUserAttributeDetectionFailWhenLdapOerationFails() throws Exception { // GIVEN - Map<String, Object> configMap = Maps.newHashMap(); + Map<String, String> configMap = Maps.newHashMap(); configMap.put(AmbariLdapConfigKeys.USER_SEARCH_BASE.key(), "dc=example,dc=com"); AmbariLdapConfiguration ldapConfiguration = ldapConfigurationFactory.createLdapConfiguration(configMap); @@ -129,7 +129,7 @@ public class DefaultLdapAttributeDetectionServiceTest extends EasyMockSupport { @SuppressWarnings("unchecked") public void shouldLdapGroupAttributeDetection() throws Exception { // GIVEN - Map<String, Object> configMap = Maps.newHashMap(); + Map<String, String> configMap = Maps.newHashMap(); configMap.put(AmbariLdapConfigKeys.GROUP_SEARCH_BASE.key(), "dc=example,dc=com"); AmbariLdapConfiguration ldapConfiguration = ldapConfigurationFactory.createLdapConfiguration(configMap); @@ -160,7 +160,7 @@ public class DefaultLdapAttributeDetectionServiceTest extends EasyMockSupport { @Test(expected = AmbariLdapException.class) public void testShouldGroupAttributeDetectionFailWhenLdapOerationFails() throws Exception { // GIVEN - Map<String, Object> configMap = Maps.newHashMap(); + Map<String, String> configMap = Maps.newHashMap(); configMap.put(AmbariLdapConfigKeys.GROUP_SEARCH_BASE.key(), "dc=example,dc=com"); AmbariLdapConfiguration ldapConfiguration = ldapConfigurationFactory.createLdapConfiguration(configMap); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapConfigurationServiceTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapConfigurationServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapConfigurationServiceTest.java index 4d6d2a6..ec78e56 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapConfigurationServiceTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapConfigurationServiceTest.java @@ -102,7 +102,7 @@ public class DefaultLdapConfigurationServiceTest extends EasyMockSupport { @Test public void testShouldUserAttributeConfigurationCheckSucceedWhenUserDnIsFound() throws Exception { // GIVEN - Map<String, Object> configMap = Maps.newHashMap(); + Map<String, String> configMap = Maps.newHashMap(); configMap.put(AmbariLdapConfigKeys.USER_OBJECT_CLASS.key(), "person"); configMap.put(AmbariLdapConfigKeys.USER_NAME_ATTRIBUTE.key(), "uid"); @@ -126,7 +126,7 @@ public class DefaultLdapConfigurationServiceTest extends EasyMockSupport { @Test(expected = AmbariLdapException.class) public void testShouldUserAttributeConfigurationCheckFailWhenNoUsersFound() throws Exception { // GIVEN - Map<String, Object> configMap = Maps.newHashMap(); + Map<String, String> configMap = Maps.newHashMap(); configMap.put(AmbariLdapConfigKeys.USER_OBJECT_CLASS.key(), "posixAccount"); configMap.put(AmbariLdapConfigKeys.USER_NAME_ATTRIBUTE.key(), "dn"); @@ -155,7 +155,7 @@ public class DefaultLdapConfigurationServiceTest extends EasyMockSupport { public void testShouldGroupAttributeConfigurationCheckSucceedWhenGroupForUserDnIsFound() throws Exception { // GIVEN - Map<String, Object> configMap = groupConfigObjectMap(); + Map<String, String> configMap = groupConfigObjectMap(); SearchRequest sr = new SearchRequestImpl(); @@ -184,7 +184,7 @@ public class DefaultLdapConfigurationServiceTest extends EasyMockSupport { public void testShouldGroupAttributeConfigurationCheckFailWhenNoGroupsForUserDnFound() throws Exception { // GIVEN - Map<String, Object> configMap = groupConfigObjectMap(); + Map<String, String> configMap = groupConfigObjectMap(); SearchRequest sr = new SearchRequestImpl(); @@ -208,8 +208,8 @@ public class DefaultLdapConfigurationServiceTest extends EasyMockSupport { } - private Map<String, Object> groupConfigObjectMap() { - Map<String, Object> configMap = Maps.newHashMap(); + private Map<String, String> groupConfigObjectMap() { + Map<String, String> configMap = Maps.newHashMap(); configMap.put(AmbariLdapConfigKeys.GROUP_OBJECT_CLASS.key(), "groupOfNames"); configMap.put(AmbariLdapConfigKeys.GROUP_SEARCH_BASE.key(), "dc=example,dc=com"); configMap.put(AmbariLdapConfigKeys.GROUP_NAME_ATTRIBUTE.key(), "uid"); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/metadata/AgentAlertDefinitionsTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/metadata/AgentAlertDefinitionsTest.java b/ambari-server/src/test/java/org/apache/ambari/server/metadata/AgentAlertDefinitionsTest.java index adaf236..cb234ea 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/metadata/AgentAlertDefinitionsTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/metadata/AgentAlertDefinitionsTest.java @@ -22,7 +22,7 @@ import java.util.List; import javax.persistence.EntityManager; import org.apache.ambari.server.H2DatabaseCleaner; -import org.apache.ambari.server.controller.RootServiceResponseFactory.Components; +import org.apache.ambari.server.controller.RootComponent; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; import org.apache.ambari.server.state.alert.AlertDefinition; @@ -63,7 +63,7 @@ public class AgentAlertDefinitionsTest { Assert.assertEquals(3, definitions.size()); for( AlertDefinition definition : definitions){ - Assert.assertEquals(Components.AMBARI_AGENT.name(), + Assert.assertEquals(RootComponent.AMBARI_AGENT.name(), definition.getComponentName()); Assert.assertEquals("AMBARI", definition.getServiceName()); @@ -80,7 +80,7 @@ public class AgentAlertDefinitionsTest { Assert.assertEquals(4, definitions.size()); for (AlertDefinition definition : definitions) { - Assert.assertEquals(Components.AMBARI_SERVER.name(), + Assert.assertEquals(RootComponent.AMBARI_SERVER.name(), definition.getComponentName()); Assert.assertEquals("AMBARI", definition.getServiceName()); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java index 27fb18b..a03d7cc 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/OrmTestHelper.java @@ -671,8 +671,10 @@ public class OrmTestHelper { if (repositoryVersion == null) { try { + String operatingSystems = "[{\"OperatingSystems/ambari_managed_repositories\":\"true\",\"repositories\":[{\"Repositories/repo_id\":\"HDP\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP\"},{\"Repositories/repo_id\":\"HDP-UTILS\",\"Repositories/base_url\":\"\",\"Repositories/repo_name\":\"HDP-UTILS\"}],\"OperatingSystems/os_type\":\"redhat6\"}]"; + repositoryVersion = repositoryVersionDAO.create(stackEntity, version, - String.valueOf(System.currentTimeMillis()) + uniqueCounter.incrementAndGet(), ""); + String.valueOf(System.currentTimeMillis()) + uniqueCounter.incrementAndGet(), operatingSystems); } catch (Exception ex) { LOG.error("Caught exception", ex); http://git-wip-us.apache.org/repos/asf/ambari/blob/e83bf1bd/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDefinitionDAOTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDefinitionDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDefinitionDAOTest.java index d559e0c..9ebc2e5 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDefinitionDAOTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/AlertDefinitionDAOTest.java @@ -31,7 +31,8 @@ import java.util.TimeZone; import java.util.UUID; import org.apache.ambari.server.H2DatabaseCleaner; -import org.apache.ambari.server.controller.RootServiceResponseFactory; +import org.apache.ambari.server.controller.RootComponent; +import org.apache.ambari.server.controller.RootService; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; import org.apache.ambari.server.orm.OrmTestHelper; @@ -148,8 +149,8 @@ public class AlertDefinitionDAOTest { for (; i < 15; i++) { AlertDefinitionEntity definition = new AlertDefinitionEntity(); definition.setDefinitionName("Alert Definition " + i); - definition.setServiceName(RootServiceResponseFactory.Services.AMBARI.name()); - definition.setComponentName(RootServiceResponseFactory.Components.AMBARI_AGENT.name()); + definition.setServiceName(RootService.AMBARI.name()); + definition.setComponentName(RootComponent.AMBARI_AGENT.name()); definition.setClusterId(clusterId); definition.setHash(UUID.randomUUID().toString()); definition.setScheduleInterval(60);
