http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java index 5fbaed9..7e042a4 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ScaleClusterRequestTest.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -18,26 +18,6 @@ package org.apache.ambari.server.controller.internal; -import org.apache.ambari.server.controller.spi.ResourceProvider; -import org.apache.ambari.server.topology.Blueprint; -import org.apache.ambari.server.topology.BlueprintFactory; -import org.apache.ambari.server.topology.Configuration; -import org.apache.ambari.server.topology.HostGroup; -import org.apache.ambari.server.topology.HostGroupInfo; -import org.apache.ambari.server.topology.InvalidTopologyTemplateException; -import org.apache.ambari.server.topology.TopologyRequest; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.lang.reflect.Field; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.Map; -import java.util.Set; - import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.createNiceMock; import static org.easymock.EasyMock.expect; @@ -50,6 +30,26 @@ import static org.powermock.api.easymock.PowerMock.createStrictMock; import static org.powermock.api.easymock.PowerMock.replay; import static org.powermock.api.easymock.PowerMock.reset; +import java.lang.reflect.Field; +import java.util.Collections; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Set; + +import org.apache.ambari.server.controller.spi.ResourceProvider; +import org.apache.ambari.server.topology.Blueprint; +import org.apache.ambari.server.topology.BlueprintFactory; +import org.apache.ambari.server.topology.Configuration; +import org.apache.ambari.server.topology.HostGroup; +import org.apache.ambari.server.topology.HostGroupInfo; +import org.apache.ambari.server.topology.InvalidTopologyTemplateException; +import org.apache.ambari.server.topology.TopologyRequest; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + /** * Unit tests for ScaleClusterRequest. */ @@ -133,7 +133,7 @@ public class ScaleClusterRequestTest { reset(hostResourceProvider); replay(hostResourceProvider); - Set<Map<String, Object>> propertySet = new HashSet<Map<String, Object>>(); + Set<Map<String, Object>> propertySet = new HashSet<>(); propertySet.add(createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME, BLUEPRINT_NAME)); propertySet.add(createScaleClusterPropertiesGroup1_HostName2(CLUSTER_NAME, BLUEPRINT_NAME)); @@ -234,7 +234,7 @@ public class ScaleClusterRequestTest { @Test public void testMultipleHostGroups() throws Exception { - Set<Map<String, Object>> propertySet = new HashSet<Map<String, Object>>(); + Set<Map<String, Object>> propertySet = new HashSet<>(); propertySet.add(createScaleClusterPropertiesGroup1_HostCountAndPredicate(CLUSTER_NAME, BLUEPRINT_NAME)); propertySet.add(createScaleClusterPropertiesGroup1_HostCount(CLUSTER_NAME, BLUEPRINT_NAME)); propertySet.add(createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME, BLUEPRINT_NAME)); @@ -322,7 +322,7 @@ public class ScaleClusterRequestTest { reset(hostResourceProvider); replay(hostResourceProvider); - Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>(); + Set<Map<String, Object>> propertySet = new LinkedHashSet<>(); propertySet.add(createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME, BLUEPRINT_NAME)); propertySet.add(createScaleClusterPropertiesGroup1_HostName2(CLUSTER_NAME, "OTHER_BLUEPRINT")); @@ -331,33 +331,33 @@ public class ScaleClusterRequestTest { } public static Map<String, Object> createScaleClusterPropertiesGroup1_HostName(String clusterName, String blueprintName) { - Map<String, Object> properties = new LinkedHashMap<String, Object>(); + Map<String, Object> properties = new LinkedHashMap<>(); properties.put(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID, clusterName); properties.put(HostResourceProvider.BLUEPRINT_PROPERTY_ID, blueprintName); - properties.put(HostResourceProvider.HOSTGROUP_PROPERTY_ID, GROUP1_NAME); - properties.put(HostResourceProvider.HOST_NAME_NO_CATEGORY_PROPERTY_ID, HOST1_NAME); + properties.put(HostResourceProvider.HOST_GROUP_PROPERTY_ID, GROUP1_NAME); + properties.put(HostResourceProvider.HOST_NAME_PROPERTY_ID, HOST1_NAME); return properties; } public static Map<String, Object> createScaleClusterPropertiesGroup1_HostCount(String clusterName, String blueprintName) { - Map<String, Object> properties = new LinkedHashMap<String, Object>(); + Map<String, Object> properties = new LinkedHashMap<>(); properties.put(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID, clusterName); properties.put(HostResourceProvider.BLUEPRINT_PROPERTY_ID, blueprintName); - properties.put(HostResourceProvider.HOSTGROUP_PROPERTY_ID, GROUP2_NAME); + properties.put(HostResourceProvider.HOST_GROUP_PROPERTY_ID, GROUP2_NAME); properties.put(HostResourceProvider.HOST_COUNT_PROPERTY_ID, 1); return properties; } public static Map<String, Object> createScaleClusterPropertiesGroup1_HostCountAndPredicate(String clusterName, String blueprintName) { - Map<String, Object> properties = new LinkedHashMap<String, Object>(); + Map<String, Object> properties = new LinkedHashMap<>(); properties.put(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID, clusterName); properties.put(HostResourceProvider.BLUEPRINT_PROPERTY_ID, blueprintName); - properties.put(HostResourceProvider.HOSTGROUP_PROPERTY_ID, GROUP3_NAME); + properties.put(HostResourceProvider.HOST_GROUP_PROPERTY_ID, GROUP3_NAME); properties.put(HostResourceProvider.HOST_COUNT_PROPERTY_ID, 1); properties.put(HostResourceProvider.HOST_PREDICATE_PROPERTY_ID, PREDICATE); @@ -365,24 +365,24 @@ public class ScaleClusterRequestTest { } public static Map<String, Object> createScaleClusterPropertiesGroup1_HostCount2(String clusterName, String blueprintName) { - Map<String, Object> properties = new LinkedHashMap<String, Object>(); + Map<String, Object> properties = new LinkedHashMap<>(); properties.put(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID, clusterName); properties.put(HostResourceProvider.BLUEPRINT_PROPERTY_ID, blueprintName); - properties.put(HostResourceProvider.HOSTGROUP_PROPERTY_ID, GROUP3_NAME); + properties.put(HostResourceProvider.HOST_GROUP_PROPERTY_ID, GROUP3_NAME); properties.put(HostResourceProvider.HOST_COUNT_PROPERTY_ID, 2); return properties; } public static Map<String, Object> createScaleClusterPropertiesGroup1_HostName2(String clusterName, String blueprintName) { - Map<String, Object> properties = new LinkedHashMap<String, Object>(); + Map<String, Object> properties = new LinkedHashMap<>(); properties.put(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID, clusterName); properties.put(HostResourceProvider.BLUEPRINT_PROPERTY_ID, blueprintName); - properties.put(HostResourceProvider.HOSTGROUP_PROPERTY_ID, GROUP1_NAME); - properties.put(HostResourceProvider.HOST_NAME_NO_CATEGORY_PROPERTY_ID, HOST2_NAME); + properties.put(HostResourceProvider.HOST_GROUP_PROPERTY_ID, GROUP1_NAME); + properties.put(HostResourceProvider.HOST_NAME_PROPERTY_ID, HOST2_NAME); return properties; } -} +} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java index a0c58ea..7fe888d 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ServiceResourceProviderTest.java @@ -153,7 +153,7 @@ public class ServiceResourceProviderTest { properties.put(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID, "Service100"); properties.put(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID, "INIT"); properties.put(ServiceResourceProvider.SERVICE_DESIRED_STACK_PROPERTY_ID, "HDP-1.1"); - properties.put(ServiceResourceProvider.SERVICE_DESIRED_REPO_VERSION_ID_PROPERTY_ID, "1"); + properties.put(ServiceResourceProvider.SERVICE_DESIRED_REPO_VERSION_PROPERTY_ID, "1"); propertySet.add(properties); http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java index dc97f9b..7beaa43 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackDefinedPropertyProviderTest.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -57,12 +57,13 @@ import org.apache.ambari.server.events.publishers.AmbariEventPublisher; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; import org.apache.ambari.server.orm.OrmTestHelper; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.security.TestAuthenticationFactory; import org.apache.ambari.server.security.authorization.AuthorizationException; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Host; -import org.apache.ambari.server.state.RepositoryVersionState; +import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.StackId; import org.apache.ambari.server.state.services.MetricsRetrievalService; import org.apache.ambari.server.state.stack.Metric; @@ -137,13 +138,28 @@ public class StackDefinedPropertyProviderTest { Cluster cluster = clusters.getCluster("c2"); cluster.setDesiredStackVersion(stackId); - helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion()); - cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin", - RepositoryVersionState.INSTALLING); + RepositoryVersionEntity repositoryVersion = helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion()); + Service service = cluster.addService("HDFS", repositoryVersion); + service.addServiceComponent("NAMENODE"); + service.addServiceComponent("DATANODE"); + service.addServiceComponent("JOURNALNODE"); + + service = cluster.addService("YARN", repositoryVersion); + service.addServiceComponent("RESOURCEMANAGER"); + + service = cluster.addService("HBASE", repositoryVersion); + service.addServiceComponent("HBASE_MASTER"); + service.addServiceComponent("HBASE_REGIONSERVER"); + + stackId = new StackId("HDP-2.1.1"); + repositoryVersion = helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion()); + + service = cluster.addService("STORM", repositoryVersion); + service.addServiceComponent("STORM_REST_API"); clusters.addHost("h1"); Host host = clusters.getHost("h1"); - Map<String, String> hostAttributes = new HashMap<String, String>(); + Map<String, String> hostAttributes = new HashMap<>(); hostAttributes.put("os_family", "redhat"); hostAttributes.put("os_release_version", "6.3"); host.setHostAttributes(hostAttributes); @@ -429,7 +445,7 @@ public class StackDefinedPropertyProviderTest { */ public static class CustomMetricProvider3 implements PropertyProvider { private static CustomMetricProvider3 instance = null; - private Map<String, String> providerProperties = new HashMap<String, String>(); + private Map<String, String> providerProperties = new HashMap<>(); public static CustomMetricProvider3 getInstance(Map<String, String> properties, Map<String, Metric> metrics) { if (null == instance) { @@ -595,7 +611,7 @@ public class StackDefinedPropertyProviderTest { resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED"); // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); + Map<String, TemporalInfo> temporalInfoMap = new HashMap<>(); Request request = PropertyHelper.getReadRequest(Collections.singleton("metrics/yarn/Queue/root/AvailableMB"), temporalInfoMap); Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); @@ -632,7 +648,7 @@ public class StackDefinedPropertyProviderTest { resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED"); // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); + Map<String, TemporalInfo> temporalInfoMap = new HashMap<>(); Request request = PropertyHelper.getReadRequest(Collections.singleton("metrics/yarn/Queue"), temporalInfoMap); Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); @@ -684,7 +700,7 @@ public class StackDefinedPropertyProviderTest { resource.setProperty(HOST_COMPONENT_STATE_PROPERTY_ID, "STARTED"); // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); + Map<String, TemporalInfo> temporalInfoMap = new HashMap<>(); Request request = PropertyHelper.getReadRequest(Collections.singleton("metrics/yarn/Queue/root/default"), temporalInfoMap); Assert.assertEquals(1, propertyProvider.populateResources(Collections.singleton(resource), request, null).size()); @@ -989,7 +1005,7 @@ public class StackDefinedPropertyProviderTest { String RM_AVAILABLE_MEMORY_PROPERTY = PropertyHelper.getPropertyId(RM_CATEGORY_1, "AvailableMB"); // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); + Map<String, TemporalInfo> temporalInfoMap = new HashMap<>(); temporalInfoMap.put(RM_CATEGORY_1, new TemporalInfoImpl(10L, 20L, 1L)); Request request = PropertyHelper.getReadRequest(Collections.singleton(RM_CATEGORY_1), temporalInfoMap); @@ -1086,8 +1102,8 @@ public class StackDefinedPropertyProviderTest { {"metrics/dfs/journalNode", "txnsWritten", 0.0} }; - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); - Set<String> properties = new LinkedHashSet<String>(); + Map<String, TemporalInfo> temporalInfoMap = new HashMap<>(); + Set<String> properties = new LinkedHashSet<>(); for (Object[] row : testData) { properties.add(PropertyHelper.getPropertyId(row[0].toString(), row[1].toString())); @@ -1152,7 +1168,7 @@ public class StackDefinedPropertyProviderTest { resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "RESOURCEMANAGER"); // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); + Map<String, TemporalInfo> temporalInfoMap = new HashMap<>(); temporalInfoMap.put(metric, new TemporalInfoImpl(10L, 20L, 1L)); Request request = PropertyHelper.getReadRequest(Collections.singleton(metric), temporalInfoMap); @@ -1202,7 +1218,7 @@ public class StackDefinedPropertyProviderTest { resource.setProperty(HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID, "HBASE_REGIONSERVER"); // only ask for one property - Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>(); + Map<String, TemporalInfo> temporalInfoMap = new HashMap<>(); temporalInfoMap.put(metric, new TemporalInfoImpl(1429824611300L, 1429825241400L, 1L)); Request request = PropertyHelper.getReadRequest(Collections.singleton(metric), temporalInfoMap); @@ -1232,4 +1248,4 @@ public class StackDefinedPropertyProviderTest { return "8020".equals(port) ? "client" : null; } } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java index c2d9414..474eb50 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -17,10 +17,13 @@ */ package org.apache.ambari.server.controller.internal; +import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.expectLastCall; +import static org.junit.Assert.assertEquals; -import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.persistence.EntityManager; @@ -30,7 +33,6 @@ import org.apache.ambari.server.actionmanager.HostRoleCommandFactory; import org.apache.ambari.server.actionmanager.HostRoleCommandFactoryImpl; import org.apache.ambari.server.actionmanager.RequestFactory; import org.apache.ambari.server.actionmanager.StageFactory; -import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.controller.AbstractRootServiceResponseFactory; import org.apache.ambari.server.controller.AmbariManagementController; import org.apache.ambari.server.controller.KerberosHelper; @@ -40,8 +42,10 @@ import org.apache.ambari.server.hooks.HookService; import org.apache.ambari.server.orm.DBAccessor; import org.apache.ambari.server.orm.dao.HostRoleCommandDAO; import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; +import org.apache.ambari.server.orm.dao.ServiceConfigDAO; +import org.apache.ambari.server.orm.entities.ClusterConfigEntity; import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; -import org.apache.ambari.server.orm.entities.StackEntity; +import org.apache.ambari.server.orm.entities.ServiceConfigEntity; import org.apache.ambari.server.scheduler.ExecutionScheduler; import org.apache.ambari.server.security.authorization.Users; import org.apache.ambari.server.stack.StackManagerFactory; @@ -52,19 +56,20 @@ import org.apache.ambari.server.state.Config; import org.apache.ambari.server.state.ConfigFactory; import org.apache.ambari.server.state.ConfigHelper; import org.apache.ambari.server.state.DesiredConfig; +import org.apache.ambari.server.state.RepositoryType; +import org.apache.ambari.server.state.Service; +import org.apache.ambari.server.state.ServiceComponent; import org.apache.ambari.server.state.ServiceComponentFactory; import org.apache.ambari.server.state.ServiceComponentHostFactory; import org.apache.ambari.server.state.ServiceFactory; -import org.apache.ambari.server.state.ServiceInfo; import org.apache.ambari.server.state.StackId; import org.apache.ambari.server.state.UpgradeContext; import org.apache.ambari.server.state.UpgradeContextFactory; +import org.apache.ambari.server.state.UpgradeHelper; import org.apache.ambari.server.state.configgroup.ConfigGroupFactory; import org.apache.ambari.server.state.scheduler.RequestExecutionFactory; import org.apache.ambari.server.state.stack.OsFamily; -import org.apache.ambari.server.state.stack.UpgradePack; import org.apache.ambari.server.state.stack.upgrade.Direction; -import org.apache.ambari.server.state.stack.upgrade.Grouping; import org.apache.ambari.server.state.stack.upgrade.UpgradeType; import org.easymock.Capture; import org.easymock.EasyMock; @@ -75,34 +80,28 @@ import org.junit.Before; import org.junit.Test; import org.springframework.security.crypto.password.PasswordEncoder; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import com.google.inject.Binder; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Module; import com.google.inject.assistedinject.FactoryModuleBuilder; -import junit.framework.Assert; - /** * Tests that - * {@link UpgradeResourceProvider#applyStackAndProcessConfigurations(UpgradeContext)} + * {@link UpgradeHelper#updateDesiredRepositoriesAndConfigs} * works correctly. */ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport { - private static final StackId s_currentStackId = new StackId("HDP-2.4"); - private static final StackId s_targetStackId = new StackId("HDP-2.5"); - private Injector m_injector; - private AmbariMetaInfo m_ambariMetaInfoMock; /** * @throws Exception */ @Before public void before() throws Exception { - m_ambariMetaInfoMock = createNiceMock(AmbariMetaInfo.class); - MockModule mockModule = new MockModule(); // create an injector which will inject the mocks @@ -122,14 +121,14 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport { * accidentally. * <p/> * - * HDP 2.4 defaults + * HDP 2.1 defaults * <ul> * <li>foo-site/foo-property-1</li> * <li>foo-site/foo-property-2</li> * <li>bar-site/bar-property-1</li> * </ul> * - * HDP 2.5 defaults + * HDP 2.2 defaults * <ul> * <li>foo-site/foo-property-1</li> * <li>foo-site/foo-property-2</li> @@ -137,7 +136,7 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport { * <li>bar-site/bar-property-2</li> * </ul> * - * CURRENT 2.4 configs + * CURRENT 2.1 configs * <ul> * <li>foo-site/foo-property-1</li> * <li>foo-site/foo-property-99</li> @@ -148,136 +147,144 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport { * * The final merged configurations should detect that {{foo-property-2}} * exists in both stacks but is not in the current configs and was therefore - * purposefully removed. It shoudl also detect that {{bar-property-20}} was + * purposefully removed. It shoudl also detect that {{bar-property-2}} was * added in the new stack and should be added in. * * @throws Exception */ @Test public void testMergedConfigurationsDoNotAddExplicitelyRemovedProperties() throws Exception { + RepositoryVersionEntity repoVersion211 = createNiceMock(RepositoryVersionEntity.class); + RepositoryVersionEntity repoVersion220 = createNiceMock(RepositoryVersionEntity.class); + + StackId stack211 = new StackId("HDP-2.1.1"); + StackId stack220 = new StackId("HDP-2.2.0"); + + String version211 = "2.1.1.0-1234"; + String version220 = "2.2.0.0-1234"; + + expect(repoVersion211.getStackId()).andReturn(stack211).atLeastOnce(); + expect(repoVersion211.getVersion()).andReturn(version211).atLeastOnce(); + + expect(repoVersion220.getStackId()).andReturn(stack220).atLeastOnce(); + expect(repoVersion220.getVersion()).andReturn(version220).atLeastOnce(); + + Map<String, Map<String, String>> stack211Configs = new HashMap<>(); + Map<String, String> stack211FooType = new HashMap<>(); + Map<String, String> stack211BarType = new HashMap<>(); + stack211Configs.put("foo-site", stack211FooType); + stack211Configs.put("bar-site", stack211BarType); + stack211FooType.put("foo-property-1", "stack-211-original"); + stack211FooType.put("foo-property-2", "stack-211-original"); + stack211BarType.put("bar-property-1", "stack-211-original"); + + Map<String, Map<String, String>> stack220Configs = new HashMap<>(); + Map<String, String> stack220FooType = new HashMap<>(); + Map<String, String> stack220BarType = new HashMap<>(); + stack220Configs.put("foo-site", stack220FooType); + stack220Configs.put("bar-site", stack220BarType); + stack220FooType.put("foo-property-1", "stack-220-original"); + stack220FooType.put("foo-property-2", "stack-220-original"); + stack220BarType.put("bar-property-1", "stack-220-original"); + stack220BarType.put("bar-property-2", "stack-220-original"); + + Map<String, String> existingFooType = new HashMap<>(); + Map<String, String> existingBarType = new HashMap<>(); + + ClusterConfigEntity fooConfigEntity = createNiceMock(ClusterConfigEntity.class); + ClusterConfigEntity barConfigEntity = createNiceMock(ClusterConfigEntity.class); + + expect(fooConfigEntity.getType()).andReturn("foo-site"); + expect(barConfigEntity.getType()).andReturn("bar-site"); + + Config fooConfig = createNiceMock(Config.class); + Config barConfig = createNiceMock(Config.class); + + existingFooType.put("foo-property-1", "my-foo-property-1"); + existingBarType.put("bar-property-1", "stack-211-original"); + + expect(fooConfig.getType()).andReturn("foo-site").atLeastOnce(); + expect(barConfig.getType()).andReturn("bar-site").atLeastOnce(); + expect(fooConfig.getProperties()).andReturn(existingFooType); + expect(barConfig.getProperties()).andReturn(existingBarType); + + Map<String, DesiredConfig> desiredConfigurations = new HashMap<>(); + desiredConfigurations.put("foo-site", null); + desiredConfigurations.put("bar-site", null); + + Service zookeeper = createNiceMock(Service.class); + expect(zookeeper.getName()).andReturn("ZOOKEEPER").atLeastOnce(); + expect(zookeeper.getServiceComponents()).andReturn( + new HashMap<String, ServiceComponent>()).once(); + zookeeper.setDesiredRepositoryVersion(repoVersion220); + expectLastCall().once(); + Cluster cluster = createNiceMock(Cluster.class); - RepositoryVersionEntity repositoryVersionEntity240 = createNiceMock(RepositoryVersionEntity.class); - RepositoryVersionEntity repositoryVersionEntity250 = createNiceMock( - RepositoryVersionEntity.class); - UpgradePack upgradePack = createNiceMock(UpgradePack.class); - StackEntity sourceStack = createNiceMock(StackEntity.class); - StackEntity targetStack = createNiceMock(StackEntity.class); - - // mocks which were bound previously - AmbariManagementController amc = m_injector.getInstance(AmbariManagementController.class); - AmbariMetaInfo ambariMetaInfo = m_injector.getInstance(AmbariMetaInfo.class); + expect(cluster.getCurrentStackVersion()).andReturn(stack211).atLeastOnce(); + expect(cluster.getDesiredStackVersion()).andReturn(stack220); + expect(cluster.getDesiredConfigs()).andReturn(desiredConfigurations); + expect(cluster.getDesiredConfigByType("foo-site")).andReturn(fooConfig); + expect(cluster.getDesiredConfigByType("bar-site")).andReturn(barConfig); + expect(cluster.getService("ZOOKEEPER")).andReturn(zookeeper); + expect(cluster.getDesiredConfigByType("foo-type")).andReturn(fooConfig); + expect(cluster.getDesiredConfigByType("bar-type")).andReturn(barConfig); + ConfigHelper configHelper = m_injector.getInstance(ConfigHelper.class); - RepositoryVersionDAO repositoryVersionDAO = m_injector.getInstance(RepositoryVersionDAO.class); - - EasyMock.expect(amc.getConfigHelper()).andReturn(configHelper); - - EasyMock.expect(cluster.getCurrentStackVersion()).andReturn(s_currentStackId); - EasyMock.expect(cluster.getDesiredStackVersion()).andReturn(s_targetStackId); - - EasyMock.expect(sourceStack.getStackName()).andReturn("HDP").anyTimes(); - EasyMock.expect(sourceStack.getStackVersion()).andReturn("2.4").anyTimes(); - - EasyMock.expect(targetStack.getStackName()).andReturn("HDP").anyTimes(); - EasyMock.expect(targetStack.getStackVersion()).andReturn("2.5").anyTimes(); - - EasyMock.expect(repositoryVersionEntity240.getStack()).andReturn(sourceStack); - EasyMock.expect(repositoryVersionEntity250.getStack()).andReturn(targetStack); - EasyMock.expect(repositoryVersionDAO.findByStackNameAndVersion("HDP", "2.4.0.0-1234")).andReturn(repositoryVersionEntity240); - EasyMock.expect(repositoryVersionDAO.findByStackNameAndVersion("HDP", "2.5.0.0-1234")).andReturn(repositoryVersionEntity250); - - EasyMock.expect(upgradePack.getGroups(Direction.UPGRADE)).andReturn(new ArrayList<Grouping>()); - - EasyMock.expect(ambariMetaInfo.getServices("HDP", "2.5")).andReturn( - new HashMap<String, ServiceInfo>()); - - // config helper mocks (the heart of this test) - Map<String, Map<String, String>> oldStackDefaultConfigurationsByType = new HashMap<>(); - oldStackDefaultConfigurationsByType.put("foo-type", new HashMap<String, String>()); - oldStackDefaultConfigurationsByType.get("foo-type").put("foo-property-1", "foo-value-1"); - oldStackDefaultConfigurationsByType.get("foo-type").put("foo-property-2", "foo-value-2"); - oldStackDefaultConfigurationsByType.put("bar-type", new HashMap<String, String>()); - oldStackDefaultConfigurationsByType.get("bar-type").put("bar-property-1", "bar-value-1"); - - Map<String, Map<String, String>> newConfigurationsByType = new HashMap<>(); - newConfigurationsByType.put("foo-type", new HashMap<String, String>()); - newConfigurationsByType.get("foo-type").put("foo-property-1", "foo-value-1"); - newConfigurationsByType.get("foo-type").put("foo-property-2", "foo-value-2"); - newConfigurationsByType.put("bar-type", new HashMap<String, String>()); - newConfigurationsByType.get("bar-type").put("bar-property-1", "bar-value-1"); - newConfigurationsByType.get("bar-type").put("bar-property-20", "bar-value-20"); - - // HDP 2.4 configs - EasyMock.expect(configHelper.getDefaultProperties(EasyMock.eq(s_currentStackId), - EasyMock.anyObject(Cluster.class))).andReturn(oldStackDefaultConfigurationsByType); - - // HDP 2.5 configs - EasyMock.expect(configHelper.getDefaultProperties(EasyMock.eq(s_targetStackId), - EasyMock.anyObject(Cluster.class))).andReturn(newConfigurationsByType); - - // CURRENT HDP 2.4 configs - Config currentClusterConfigFoo = createNiceMock(Config.class); - Config currentClusterConfigBar = createNiceMock(Config.class); - - Map<String, String> existingPropertiesFoo = new HashMap<>(); - existingPropertiesFoo.put("foo-property-1", "foo-value-1"); - existingPropertiesFoo.put("foo-property-99", "foo-value-99"); - EasyMock.expect(currentClusterConfigFoo.getProperties()).andReturn(existingPropertiesFoo); - - Map<String, String> existingPropertiesBar = new HashMap<>(); - existingPropertiesBar.put("bar-property-1", "bar-value-1"); - existingPropertiesBar.put("bar-property-99", "bar-value-99"); - EasyMock.expect(currentClusterConfigBar.getProperties()).andReturn(existingPropertiesBar); - - EasyMock.expect(cluster.getDesiredConfigByType("foo-type")).andReturn(currentClusterConfigFoo); - EasyMock.expect(cluster.getDesiredConfigByType("bar-type")).andReturn(currentClusterConfigBar); - - // desired configs - Map<String, DesiredConfig> existingDesiredConfigurationsByType = new HashMap<>(); - existingDesiredConfigurationsByType.put("foo-type", null); - existingDesiredConfigurationsByType.put("bar-type", null); - EasyMock.expect(cluster.getDesiredConfigs()).andReturn(existingDesiredConfigurationsByType); - - // we need to know what configs are being created, so capture them - Capture<Map<String, Map<String, String>>> capturedArgument = EasyMock.newCapture(); + + expect(configHelper.getDefaultProperties(stack211, "ZOOKEEPER")).andReturn( + stack211Configs).anyTimes(); + + expect(configHelper.getDefaultProperties(stack220, "ZOOKEEPER")).andReturn( + stack220Configs).anyTimes(); + + Capture<Map<String, Map<String, String>>> expectedConfigurationsCapture = EasyMock.newCapture(); + configHelper.createConfigTypes(EasyMock.anyObject(Cluster.class), - EasyMock.anyObject(AmbariManagementController.class), - EasyMock.capture(capturedArgument), - EasyMock.anyString(), EasyMock.anyString()); + EasyMock.anyObject(StackId.class), EasyMock.anyObject(AmbariManagementController.class), + EasyMock.capture(expectedConfigurationsCapture), EasyMock.anyObject(String.class), + EasyMock.anyObject(String.class)); - EasyMock.expectLastCall(); + expectLastCall().once(); + + // mock the service config DAO and replay it + ServiceConfigEntity zookeeperServiceConfig = createNiceMock(ServiceConfigEntity.class); + expect(zookeeperServiceConfig.getClusterConfigEntities()).andReturn( + Lists.newArrayList(fooConfigEntity, barConfigEntity)); + + ServiceConfigDAO serviceConfigDAOMock = m_injector.getInstance(ServiceConfigDAO.class); + List<ServiceConfigEntity> latestServiceConfigs = Lists.newArrayList(zookeeperServiceConfig); + expect(serviceConfigDAOMock.getLastServiceConfigsForService(EasyMock.anyLong(), + eq("ZOOKEEPER"))).andReturn(latestServiceConfigs).once(); UpgradeContext context = createNiceMock(UpgradeContext.class); expect(context.getCluster()).andReturn(cluster).atLeastOnce(); expect(context.getType()).andReturn(UpgradeType.ROLLING).atLeastOnce(); expect(context.getDirection()).andReturn(Direction.UPGRADE).atLeastOnce(); - expect(context.getSourceRepositoryVersion()).andReturn(repositoryVersionEntity240).atLeastOnce(); - expect(context.getTargetRepositoryVersion()).andReturn(repositoryVersionEntity250).atLeastOnce(); - expect(context.getUpgradePack()).andReturn(upgradePack).atLeastOnce(); + expect(context.getRepositoryVersion()).andReturn(repoVersion220).anyTimes(); + expect(context.getSupportedServices()).andReturn(Sets.newHashSet("ZOOKEEPER")).atLeastOnce(); + expect(context.getSourceRepositoryVersion(EasyMock.anyString())).andReturn(repoVersion211).atLeastOnce(); + expect(context.getTargetRepositoryVersion(EasyMock.anyString())).andReturn(repoVersion220).atLeastOnce(); + expect(context.getOrchestrationType()).andReturn(RepositoryType.STANDARD).anyTimes(); expect(context.getHostRoleCommandFactory()).andStubReturn(m_injector.getInstance(HostRoleCommandFactory.class)); expect(context.getRoleGraphFactory()).andStubReturn(m_injector.getInstance(RoleGraphFactory.class)); replayAll(); - UpgradeResourceProvider upgradeResourceProvider = new UpgradeResourceProvider(amc); - m_injector.injectMembers(upgradeResourceProvider); - - upgradeResourceProvider.applyStackAndProcessConfigurations(context); + UpgradeHelper upgradeHelper = m_injector.getInstance(UpgradeHelper.class); + upgradeHelper.updateDesiredRepositoriesAndConfigs(context); - // assertion time! - Map<String, Map<String, String>> mergedConfigurations = capturedArgument.getValue(); - Map<String, String> mergedFooSite = mergedConfigurations.get("foo-type"); - Map<String, String> mergedBarSite = mergedConfigurations.get("bar-type"); + Map<String, Map<String, String>> expectedConfigurations = expectedConfigurationsCapture.getValue(); + Map<String, String> expectedFooType = expectedConfigurations.get("foo-site"); + Map<String, String> expectedBarType = expectedConfigurations.get("bar-site"); - // foo-site validation - Assert.assertEquals("foo-value-1", mergedFooSite.get("foo-property-1")); - Assert.assertEquals("foo-value-99", mergedFooSite.get("foo-property-99")); - Assert.assertFalse(mergedFooSite.containsKey("foo-property-2")); + // As the upgrade pack did not have any Flume updates, its configs should + // not be updated. + assertEquals(2, expectedConfigurations.size()); - // bar-site validation - Assert.assertEquals("bar-value-1", mergedBarSite.get("bar-property-1")); - Assert.assertEquals("bar-value-20", mergedBarSite.get("bar-property-20")); - Assert.assertEquals("bar-value-99", mergedBarSite.get("bar-property-99")); - Assert.assertEquals(3, mergedBarSite.size()); + assertEquals("my-foo-property-1", expectedFooType.get("foo-property-1")); + assertEquals(null, expectedFooType.get("foo-property-2")); + assertEquals("stack-220-original", expectedBarType.get("bar-property-1")); + assertEquals("stack-220-original", expectedBarType.get("bar-property-2")); } @@ -288,7 +295,6 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport { */ @Override public void configure(Binder binder) { - binder.bind(AmbariMetaInfo.class).toInstance(m_ambariMetaInfoMock); binder.bind(Clusters.class).toInstance(createNiceMock(Clusters.class)); binder.bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class)); binder.bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class)); @@ -317,10 +323,11 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport { binder.bind(RepositoryVersionDAO.class).toInstance(createNiceMock(RepositoryVersionDAO.class)); binder.bind(HookContextFactory.class).toInstance(createMock(HookContextFactory.class)); binder.bind(HookService.class).toInstance(createMock(HookService.class)); + binder.bind(ServiceConfigDAO.class).toInstance(createNiceMock(ServiceConfigDAO.class)); binder.install(new FactoryModuleBuilder().build(UpgradeContextFactory.class)); binder.bind(HostRoleCommandFactory.class).to(HostRoleCommandFactoryImpl.class); binder.requestStaticInjection(UpgradeResourceProvider.class); } } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java deleted file mode 100644 index 221cc20..0000000 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java +++ /dev/null @@ -1,324 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.ambari.server.controller.internal; - -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.replay; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.lang.reflect.Field; -import java.sql.SQLException; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.ambari.server.AmbariException; -import org.apache.ambari.server.H2DatabaseCleaner; -import org.apache.ambari.server.actionmanager.ActionManager; -import org.apache.ambari.server.actionmanager.ExecutionCommandWrapper; -import org.apache.ambari.server.actionmanager.ExecutionCommandWrapperFactory; -import org.apache.ambari.server.agent.ExecutionCommand; -import org.apache.ambari.server.agent.ExecutionCommand.KeyNames; -import org.apache.ambari.server.configuration.Configuration; -import org.apache.ambari.server.controller.AmbariManagementController; -import org.apache.ambari.server.controller.AmbariServer; -import org.apache.ambari.server.controller.spi.Request; -import org.apache.ambari.server.controller.spi.ResourceProvider; -import org.apache.ambari.server.controller.utilities.PropertyHelper; -import org.apache.ambari.server.events.publishers.AmbariEventPublisher; -import org.apache.ambari.server.orm.GuiceJpaInitializer; -import org.apache.ambari.server.orm.InMemoryDefaultTestModule; -import org.apache.ambari.server.orm.OrmTestHelper; -import org.apache.ambari.server.orm.dao.ExecutionCommandDAO; -import org.apache.ambari.server.orm.dao.RepositoryVersionDAO; -import org.apache.ambari.server.orm.dao.StackDAO; -import org.apache.ambari.server.orm.dao.UpgradeDAO; -import org.apache.ambari.server.orm.entities.ExecutionCommandEntity; -import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; -import org.apache.ambari.server.orm.entities.StackEntity; -import org.apache.ambari.server.orm.entities.UpgradeEntity; -import org.apache.ambari.server.orm.entities.UpgradeGroupEntity; -import org.apache.ambari.server.orm.entities.UpgradeItemEntity; -import org.apache.ambari.server.security.TestAuthenticationFactory; -import org.apache.ambari.server.state.Cluster; -import org.apache.ambari.server.state.Clusters; -import org.apache.ambari.server.state.Config; -import org.apache.ambari.server.state.ConfigFactory; -import org.apache.ambari.server.state.Host; -import org.apache.ambari.server.state.HostState; -import org.apache.ambari.server.state.RepositoryVersionState; -import org.apache.ambari.server.state.Service; -import org.apache.ambari.server.state.ServiceComponent; -import org.apache.ambari.server.state.ServiceComponentHost; -import org.apache.ambari.server.state.StackId; -import org.apache.ambari.server.state.stack.upgrade.Direction; -import org.apache.ambari.server.topology.TopologyManager; -import org.apache.ambari.server.utils.StageUtils; -import org.apache.ambari.server.view.ViewRegistry; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.springframework.security.core.context.SecurityContextHolder; - -import com.google.common.collect.ImmutableMap; -import com.google.gson.Gson; -import com.google.inject.Guice; -import com.google.inject.Injector; - -/** - * UpgradeResourceDefinition tests. - */ -public class UpgradeResourceProviderHDP22Test { - - private UpgradeDAO upgradeDao = null; - private RepositoryVersionDAO repoVersionDao = null; - private Injector injector; - private Clusters clusters; - private OrmTestHelper helper; - private AmbariManagementController amc; - private StackDAO stackDAO; - private TopologyManager topologyManager; - private ConfigFactory configFactory; - - private static final String configTagVersion1 = "version1"; - private static final String configTagVersion2 = "version2"; - - private static final Map<String, String> configTagVersion1Properties = new ImmutableMap.Builder<String, String>().put( - "hive.server2.thrift.port", "10000").build(); - - private static final Map<String, String> configTagVersion2Properties = new ImmutableMap.Builder<String, String>().put( - "hive.server2.thrift.port", "10010").build(); - - @Before - public void before() throws Exception { - SecurityContextHolder.getContext().setAuthentication( - TestAuthenticationFactory.createAdministrator()); - - // create an injector which will inject the mocks - injector = Guice.createInjector(new InMemoryDefaultTestModule()); - - injector.getInstance(GuiceJpaInitializer.class); - - helper = injector.getInstance(OrmTestHelper.class); - - amc = injector.getInstance(AmbariManagementController.class); - - Field field = AmbariServer.class.getDeclaredField("clusterController"); - field.setAccessible(true); - field.set(null, amc); - - stackDAO = injector.getInstance(StackDAO.class); - upgradeDao = injector.getInstance(UpgradeDAO.class); - repoVersionDao = injector.getInstance(RepositoryVersionDAO.class); - configFactory = injector.getInstance(ConfigFactory.class); - - AmbariEventPublisher publisher = createNiceMock(AmbariEventPublisher.class); - replay(publisher); - ViewRegistry.initInstance(new ViewRegistry(publisher)); - - StackEntity stackEntity = stackDAO.find("HDP", "2.2.0"); - - clusters = injector.getInstance(Clusters.class); - StackId stackId = new StackId("HDP-2.2.0"); - clusters.addCluster("c1", stackId); - Cluster cluster = clusters.getCluster("c1"); - - RepositoryVersionEntity repoVersionEntity = new RepositoryVersionEntity(); - repoVersionEntity.setDisplayName("For Stack Version 2.2.0"); - repoVersionEntity.setOperatingSystems(""); - repoVersionEntity.setStack(stackEntity); - repoVersionEntity.setVersion("2.2.0.0"); - repoVersionDao.create(repoVersionEntity); - - repoVersionEntity = new RepositoryVersionEntity(); - repoVersionEntity.setDisplayName("For Stack Version 2.2.4.2"); - repoVersionEntity.setOperatingSystems(""); - repoVersionEntity.setStack(stackEntity); - repoVersionEntity.setVersion("2.2.4.2"); - repoVersionDao.create(repoVersionEntity); - - // create the cluster version for - cluster.createClusterVersion(repoVersionEntity.getStackId(), repoVersionEntity.getVersion(), - "admin", RepositoryVersionState.INSTALLED); - - helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion()); - cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin", RepositoryVersionState.INSTALLING); - cluster.transitionClusterVersion(stackId, stackId.getStackVersion(), RepositoryVersionState.CURRENT); - - clusters.addHost("h1"); - Host host = clusters.getHost("h1"); - Map<String, String> hostAttributes = new HashMap<>(); - hostAttributes.put("os_family", "redhat"); - hostAttributes.put("os_release_version", "6.3"); - host.setHostAttributes(hostAttributes); - host.setState(HostState.HEALTHY); - - clusters.mapHostToCluster("h1", "c1"); - - // add a single HIVE server - Service service = cluster.addService("HIVE"); - service.setDesiredStackVersion(cluster.getDesiredStackVersion()); - - ServiceComponent component = service.addServiceComponent("HIVE_SERVER"); - ServiceComponentHost sch = component.addServiceComponentHost("h1"); - sch.setVersion("2.2.0.0"); - - component = service.addServiceComponent("HIVE_CLIENT"); - sch = component.addServiceComponentHost("h1"); - sch.setVersion("2.2.0.0"); - topologyManager = injector.getInstance(TopologyManager.class); - StageUtils.setTopologyManager(topologyManager); - StageUtils.setConfiguration(injector.getInstance(Configuration.class)); - ActionManager.setTopologyManager(topologyManager); - } - - @After - public void after() throws AmbariException, SQLException { - H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector); - injector = null; - } - - /** - * Tests upgrades from HDP-2.2.x to HDP-2.2.y - * - * @throws Exception - */ - @SuppressWarnings("serial") - @Test - public void testCreateIntraStackUpgrade() throws Exception { - // We want to use the HDP-2.2 'upgrade_test' catalog - // Create HDP-2.2 stack - - Cluster cluster = clusters.getCluster("c1"); - StackId oldStack = cluster.getDesiredStackVersion(); - - for (Service s : cluster.getServices().values()) { - assertEquals(oldStack, s.getDesiredStackVersion()); - - for (ServiceComponent sc : s.getServiceComponents().values()) { - assertEquals(oldStack, sc.getDesiredStackVersion()); - - for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) { - assertEquals(oldStack, sch.getDesiredStackVersion()); - } - } - } - - Config config = configFactory.createNew(cluster, "hive-site", configTagVersion1, configTagVersion1Properties, null); - cluster.addDesiredConfig("admin", Collections.singleton(config)); - - Map<String, Object> requestProps = new HashMap<>(); - requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME, "c1"); - requestProps.put(UpgradeResourceProvider.UPGRADE_REPO_VERSION, "2.2.4.2"); - requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS, "true"); - requestProps.put(UpgradeResourceProvider.UPGRADE_DIRECTION, Direction.UPGRADE.name()); - - ResourceProvider upgradeResourceProvider = createProvider(amc); - - Request request = PropertyHelper.getCreateRequest(Collections.singleton(requestProps), null); - upgradeResourceProvider.createResources(request); - - List<UpgradeEntity> upgrades = upgradeDao.findUpgrades(cluster.getClusterId()); - assertEquals(1, upgrades.size()); - - UpgradeEntity upgrade = upgrades.get(0); - assertEquals("upgrade_test", upgrade.getUpgradePackage()); - assertEquals(3, upgrade.getUpgradeGroups().size()); - - UpgradeGroupEntity group = upgrade.getUpgradeGroups().get(2); - assertEquals(3, group.getItems().size()); - - group = upgrade.getUpgradeGroups().get(0); - assertEquals(2, group.getItems().size()); - UpgradeItemEntity item = group.getItems().get(1); - assertEquals("Value is set for the source stack upgrade pack", "[{\"message\":\"Goo\"}]", item.getText()); - - assertTrue(cluster.getDesiredConfigs().containsKey("hive-site")); - - StackId newStack = cluster.getDesiredStackVersion(); - - assertTrue(oldStack.equals(newStack)); - - for (Service s : cluster.getServices().values()) { - assertEquals(newStack, s.getDesiredStackVersion()); - - for (ServiceComponent sc : s.getServiceComponents().values()) { - assertEquals(newStack, sc.getDesiredStackVersion()); - - for (ServiceComponentHost sch : sc.getServiceComponentHosts().values()) { - assertEquals(newStack, sch.getDesiredStackVersion()); - } - } - } - - // Hive service checks have generated the ExecutionCommands by now. - // Change the new desired config tag and verify execution command picks up new tag - assertEquals(configTagVersion1, cluster.getDesiredConfigByType("hive-site").getTag()); - final Config newConfig = configFactory.createNew(cluster, "hive-site", configTagVersion2, configTagVersion2Properties, null); - Set<Config> desiredConfigs = new HashSet<Config>() { - { - add(newConfig); - } - }; - - cluster.addConfig(newConfig); - cluster.addDesiredConfig("admin", desiredConfigs); - assertEquals(configTagVersion2, cluster.getDesiredConfigByType("hive-site").getTag()); - Gson gson = new Gson(); - - List<ExecutionCommandEntity> currentExecutionCommands = injector.getInstance(ExecutionCommandDAO.class).findAll(); - for (ExecutionCommandEntity ece : currentExecutionCommands) { - String executionCommandJson = new String(ece.getCommand()); - Map<String, Object> commandMap = gson.<Map<String, Object>> fromJson(executionCommandJson, Map.class); - - // ensure that the latest tag is being used - this is absolutely required - // for upgrades - Set<String> roleCommandsThatMustHaveRefresh = new HashSet<>(); - roleCommandsThatMustHaveRefresh.add("SERVICE_CHECK"); - roleCommandsThatMustHaveRefresh.add("RESTART"); - roleCommandsThatMustHaveRefresh.add("ACTIONEXECUTE"); - - String roleCommand = (String) commandMap.get("roleCommand"); - if (roleCommandsThatMustHaveRefresh.contains(roleCommand)) { - assertTrue(commandMap.containsKey(KeyNames.REFRESH_CONFIG_TAGS_BEFORE_EXECUTION)); - Object object = commandMap.get(KeyNames.REFRESH_CONFIG_TAGS_BEFORE_EXECUTION); - assertTrue(Boolean.valueOf(object.toString())); - - ExecutionCommandWrapperFactory ecwFactory = injector.getInstance(ExecutionCommandWrapperFactory.class); - ExecutionCommandWrapper executionCommandWrapper = ecwFactory.createFromJson(executionCommandJson); - ExecutionCommand executionCommand = executionCommandWrapper.getExecutionCommand(); - Map<String, Map<String, String>> configurationTags = executionCommand.getConfigurationTags(); - assertEquals(configTagVersion2, configurationTags.get("hive-site").get("tag")); - Map<String, Map<String, String>> configurations = executionCommand.getConfigurations(); - assertEquals("10010", configurations.get("hive-site").get("hive.server2.thrift.port")); - } - } - } - - /** - * @param amc - * @return the provider - */ - private UpgradeResourceProvider createProvider(AmbariManagementController amc) { - return new UpgradeResourceProvider(amc); - } -} http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/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 8c209ae..c5fc039 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 @@ -106,7 +106,7 @@ import org.apache.ambari.server.utils.StageUtils; import org.apache.ambari.server.view.ViewRegistry; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang.StringUtils; import org.easymock.EasyMock; import org.easymock.EasyMockSupport; import org.junit.After; http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java index 2c6f61f..4f57c6a 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeSummaryResourceProviderTest.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -38,7 +38,6 @@ import org.apache.ambari.server.H2DatabaseCleaner; import org.apache.ambari.server.Role; import org.apache.ambari.server.RoleCommand; import org.apache.ambari.server.actionmanager.HostRoleStatus; -import org.apache.ambari.server.actionmanager.ServiceComponentHostEventWrapper; import org.apache.ambari.server.controller.AmbariManagementController; import org.apache.ambari.server.controller.AmbariServer; import org.apache.ambari.server.controller.predicate.AndPredicate; @@ -69,16 +68,13 @@ import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Host; import org.apache.ambari.server.state.HostState; -import org.apache.ambari.server.state.RepositoryVersionState; import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.ServiceComponent; import org.apache.ambari.server.state.ServiceComponentHost; -import org.apache.ambari.server.state.ServiceComponentHostEvent; import org.apache.ambari.server.state.StackId; import org.apache.ambari.server.state.UpgradeHelper; import org.apache.ambari.server.state.stack.upgrade.Direction; import org.apache.ambari.server.state.stack.upgrade.UpgradeType; -import org.apache.ambari.server.state.svccomphost.ServiceComponentHostOpInProgressEvent; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -155,7 +151,7 @@ public class UpgradeSummaryResourceProviderTest { repoVersionEntity.setDisplayName("For Stack Version 2.2.0"); repoVersionEntity.setOperatingSystems(""); repoVersionEntity.setStack(stackEntity); - repoVersionEntity.setVersion("2.2.0.0-1234"); + repoVersionEntity.setVersion("2.2.0.0"); repoVersionDAO.create(repoVersionEntity); clusters = injector.getInstance(Clusters.class); @@ -165,7 +161,6 @@ public class UpgradeSummaryResourceProviderTest { Cluster cluster = clusters.getCluster("c1"); helper.getOrCreateRepositoryVersion(stackId, "2.2.0.1-1234"); - cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin", RepositoryVersionState.INSTALLING); clusters.addHost("h1"); Host host = clusters.getHost("h1"); @@ -178,16 +173,15 @@ public class UpgradeSummaryResourceProviderTest { clusters.mapHostToCluster("h1", "c1"); // add a single ZOOKEEPER server - Service service = cluster.addService("ZOOKEEPER"); - service.setDesiredStackVersion(cluster.getDesiredStackVersion()); + Service service = cluster.addService("ZOOKEEPER", repoVersionEntity); ServiceComponent component = service.addServiceComponent("ZOOKEEPER_SERVER"); ServiceComponentHost sch = component.addServiceComponentHost("h1"); - sch.setVersion("2.2.0.0-1234"); + sch.setVersion("2.2.0.0"); component = service.addServiceComponent("ZOOKEEPER_CLIENT"); sch = component.addServiceComponentHost("h1"); - sch.setVersion("2.2.0.0-1234"); + sch.setVersion("2.2.0.0"); } /** @@ -197,10 +191,8 @@ public class UpgradeSummaryResourceProviderTest { * @param stageId */ @Transactional - private void createCommands(Cluster cluster, Long upgradeRequestId, Long stageId) { + void createCommands(Cluster cluster, Long upgradeRequestId, Long stageId) { HostEntity h1 = hostDAO.findByName("h1"); - ServiceComponentHostEvent event = new ServiceComponentHostOpInProgressEvent("ZOOKEEPER_SERVER", "h1", 1L); - ServiceComponentHostEventWrapper eventWrapper = new ServiceComponentHostEventWrapper(event); RequestEntity requestEntity = requestDAO.findByPK(upgradeRequestId); @@ -281,15 +273,10 @@ public class UpgradeSummaryResourceProviderTest { upgrade.setUpgradeType(UpgradeType.ROLLING); upgrade.setDirection(Direction.UPGRADE); - RepositoryVersionEntity repositoryVersion2200 = injector.getInstance( - RepositoryVersionDAO.class).findByStackNameAndVersion("HDP", "2.2.0.0-1234"); - RepositoryVersionEntity repositoryVersion2201 = injector.getInstance( RepositoryVersionDAO.class).findByStackNameAndVersion("HDP", "2.2.0.1-1234"); - upgrade.setFromRepositoryVersion(repositoryVersion2200); - upgrade.setToRepositoryVersion(repositoryVersion2201); - + upgrade.setRepositoryVersion(repositoryVersion2201); upgradeDAO.create(upgrade); // Resource used to make assertions. @@ -370,4 +357,4 @@ public class UpgradeSummaryResourceProviderTest { binder.bind(UpgradeHelper.class).toInstance(m_upgradeHelper); } } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/state/GeneralServiceCalculatedStateTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/state/GeneralServiceCalculatedStateTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/state/GeneralServiceCalculatedStateTest.java index 09d5569..86e73d6 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/state/GeneralServiceCalculatedStateTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/utilities/state/GeneralServiceCalculatedStateTest.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -26,6 +26,8 @@ import org.apache.ambari.server.H2DatabaseCleaner; import org.apache.ambari.server.actionmanager.ActionManager; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; +import org.apache.ambari.server.orm.OrmTestHelper; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Service; @@ -59,10 +61,13 @@ public abstract class GeneralServiceCalculatedStateTest { @Inject protected Clusters clusters; + @Inject + private OrmTestHelper ormTestHelper; @Before public void setup() throws Exception { final StackId stack211 = new StackId("HDP-2.1.1"); + final String version = "2.1.1-1234"; injector = Guice.createInjector(Modules.override( new InMemoryDefaultTestModule()).with(new Module() { @@ -75,11 +80,13 @@ public abstract class GeneralServiceCalculatedStateTest { injector.getInstance(GuiceJpaInitializer.class); injector.injectMembers(this); + RepositoryVersionEntity repositoryVersion = ormTestHelper.getOrCreateRepositoryVersion(stack211, + version); + clusters.addCluster(clusterName, stack211); cluster = clusters.getCluster(clusterName); - service = cluster.addService(getServiceName()); - service.setDesiredStackVersion(cluster.getDesiredStackVersion()); + service = cluster.addService(getServiceName(), repositoryVersion); createComponentsAndHosts(); @@ -144,4 +151,4 @@ public abstract class GeneralServiceCalculatedStateTest { @Test public abstract void testServiceState_STOPPED() throws Exception; -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java index 90ac29f..5834bd8 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/events/EventsTest.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -33,12 +33,12 @@ import org.apache.ambari.server.orm.dao.AlertDefinitionDAO; import org.apache.ambari.server.orm.dao.AlertDispatchDAO; import org.apache.ambari.server.orm.entities.AlertDefinitionEntity; import org.apache.ambari.server.orm.entities.AlertGroupEntity; +import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.state.Cluster; import org.apache.ambari.server.state.Clusters; import org.apache.ambari.server.state.Host; import org.apache.ambari.server.state.HostState; import org.apache.ambari.server.state.MaintenanceState; -import org.apache.ambari.server.state.RepositoryVersionState; import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.ServiceComponent; import org.apache.ambari.server.state.ServiceComponentFactory; @@ -78,6 +78,10 @@ public class EventsTest { private AlertDefinitionDAO m_definitionDao; private AlertDispatchDAO m_alertDispatchDao; + private final String STACK_VERSION = "2.0.6"; + private final String REPO_VERSION = "2.0.6-1234"; + private RepositoryVersionEntity m_repositoryVersion; + /** * */ @@ -101,13 +105,14 @@ public class EventsTest { m_alertDispatchDao = m_injector.getInstance(AlertDispatchDAO.class); m_clusterName = "foo"; - StackId stackId = new StackId("HDP", "2.0.6"); + StackId stackId = new StackId("HDP", STACK_VERSION); + m_helper.createStack(stackId); m_clusters.addCluster(m_clusterName, stackId); m_clusters.addHost(HOSTNAME); Host host = m_clusters.getHost(HOSTNAME); - Map<String, String> hostAttributes = new HashMap<String, String>(); + Map<String, String> hostAttributes = new HashMap<>(); hostAttributes.put("os_family", "redhat"); hostAttributes.put("os_release_version", "6.4"); host.setHostAttributes(hostAttributes); @@ -117,9 +122,7 @@ public class EventsTest { Assert.assertNotNull(m_cluster); m_cluster.setDesiredStackVersion(stackId); - m_helper.getOrCreateRepositoryVersion(stackId, stackId.getStackVersion()); - m_cluster.createClusterVersion(stackId, stackId.getStackVersion(), "admin", - RepositoryVersionState.INSTALLING); + m_repositoryVersion = m_helper.getOrCreateRepositoryVersion(stackId, REPO_VERSION); m_clusters.mapHostToCluster(HOSTNAME, m_clusterName); } @@ -282,8 +285,6 @@ public class EventsTest { // make sure there are at least 1 Assert.assertTrue(hdfsDefinitions.size() > 0); - AlertDefinitionEntity definition = hdfsDefinitions.get(0); - // delete the default alert group m_alertDispatchDao.remove(group); @@ -376,13 +377,9 @@ public class EventsTest { Assert.assertEquals(AmbariEventType.CLUSTER_RENAME, ambariEvents.get(0).getType()); } - /** - * Calls {@link Service#persist()} to mock a service install along with - * creating a single {@link Host} and {@link ServiceComponentHost}. - */ private void installHdfsService() throws Exception { String serviceName = "HDFS"; - Service service = m_serviceFactory.createNew(m_cluster, serviceName); + Service service = m_serviceFactory.createNew(m_cluster, serviceName, m_repositoryVersion); service = m_cluster.getService(serviceName); Assert.assertNotNull(service); @@ -395,7 +392,5 @@ public class EventsTest { component.addServiceComponentHost(sch); sch.setDesiredState(State.INSTALLED); sch.setState(State.INSTALLED); - sch.setDesiredStackVersion(new StackId("HDP-2.0.6")); - sch.setStackVersion(new StackId("HDP-2.0.6")); } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/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 527f031..ad95803 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 @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -92,6 +92,7 @@ import org.apache.ambari.server.state.State; import org.apache.ambari.server.state.alert.Scope; import org.apache.ambari.server.state.alert.SourceType; import org.apache.ambari.server.state.cluster.ClustersImpl; +import org.junit.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.crypto.password.PasswordEncoder; @@ -102,12 +103,10 @@ import com.google.inject.Provider; import com.google.inject.Singleton; import com.google.inject.persist.Transactional; -import junit.framework.Assert; - @Singleton public class OrmTestHelper { - private static Logger LOG = LoggerFactory.getLogger(OrmTestHelper.class); + private static final Logger LOG = LoggerFactory.getLogger(OrmTestHelper.class); private AtomicInteger uniqueCounter = new AtomicInteger(); @@ -178,7 +177,7 @@ public class OrmTestHelper { host2.setIpv4("192.168.0.2"); host3.setIpv4("192.168.0.3"); - List<HostEntity> hostEntities = new ArrayList<HostEntity>(); + List<HostEntity> hostEntities = new ArrayList<>(); hostEntities.add(host1); hostEntities.add(host2); @@ -200,7 +199,7 @@ public class OrmTestHelper { ClusterServiceEntity clusterServiceEntity = new ClusterServiceEntity(); clusterServiceEntity.setServiceName("HDFS"); clusterServiceEntity.setClusterEntity(clusterEntity); - List<ClusterServiceEntity> clusterServiceEntities = new ArrayList<ClusterServiceEntity>(); + List<ClusterServiceEntity> clusterServiceEntities = new ArrayList<>(); clusterServiceEntities.add(clusterServiceEntity); clusterEntity.setClusterServiceEntities(clusterServiceEntities); @@ -232,7 +231,7 @@ public class OrmTestHelper { admin.setUserPassword(encoder.encode("admin")); admin.setPrincipal(principalEntity); - Set<UserEntity> users = new HashSet<UserEntity>(); + Set<UserEntity> users = new HashSet<>(); users.add(admin); @@ -314,6 +313,20 @@ public class OrmTestHelper { hostDAO.merge(host2); } + @Transactional + public StackEntity createStack(StackId stackId) throws AmbariException { + StackEntity stackEntity = stackDAO.find(stackId.getStackName(), stackId.getStackVersion()); + + if (null == stackEntity) { + stackEntity = new StackEntity(); + stackEntity.setStackName(stackId.getStackName()); + stackEntity.setStackVersion(stackId.getStackVersion()); + stackDAO.create(stackEntity); + } + + return stackEntity; + } + /** * Creates an empty cluster with an ID. * @@ -387,6 +400,8 @@ public class OrmTestHelper { String clusterName = "cluster-" + System.currentTimeMillis(); StackId stackId = new StackId("HDP", "2.0.6"); + createStack(stackId); + clusters.addCluster(clusterName, stackId); Cluster cluster = clusters.getCluster(clusterName); cluster = initializeClusterWithStack(cluster); @@ -403,8 +418,6 @@ public class OrmTestHelper { StackId stackId = new StackId("HDP", "2.0.6"); cluster.setDesiredStackVersion(stackId); getOrCreateRepositoryVersion(stackId, stackId.getStackVersion()); - cluster.createClusterVersion(stackId, - stackId.getStackVersion(), "admin", RepositoryVersionState.INSTALLING); return cluster; } @@ -416,7 +429,7 @@ public class OrmTestHelper { clusters.addHost(hostName); Host host = clusters.getHost(hostName); - Map<String, String> hostAttributes = new HashMap<String, String>(); + Map<String, String> hostAttributes = new HashMap<>(); hostAttributes.put("os_family", "redhat"); hostAttributes.put("os_release_version", "6.4"); host.setHostAttributes(hostAttributes); @@ -432,15 +445,15 @@ public class OrmTestHelper { serviceComponentHost.setDesiredState(State.INSTALLED); } - /** - * Calls {@link Service#persist()} to mock a service install along with - * creating a single {@link Host} and {@link ServiceComponentHost}. - */ public void installHdfsService(Cluster cluster, ServiceFactory serviceFactory, ServiceComponentFactory componentFactory, ServiceComponentHostFactory schFactory, String hostName) throws Exception { + + RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByStackAndVersion( + cluster.getDesiredStackVersion(), cluster.getDesiredStackVersion().getStackVersion()); + String serviceName = "HDFS"; - Service service = serviceFactory.createNew(cluster, serviceName); + Service service = serviceFactory.createNew(cluster, serviceName, repositoryVersion); service = cluster.getService(serviceName); assertNotNull(service); @@ -454,8 +467,6 @@ public class OrmTestHelper { datanode.addServiceComponentHost(sch); sch.setDesiredState(State.INSTALLED); sch.setState(State.INSTALLED); - sch.setDesiredStackVersion(new StackId("HDP-2.0.6")); - sch.setStackVersion(new StackId("HDP-2.0.6")); ServiceComponent namenode = componentFactory.createNew(service, "NAMENODE"); @@ -466,19 +477,17 @@ public class OrmTestHelper { namenode.addServiceComponentHost(sch); sch.setDesiredState(State.INSTALLED); sch.setState(State.INSTALLED); - sch.setDesiredStackVersion(new StackId("HDP-2.0.6")); - sch.setStackVersion(new StackId("HDP-2.0.6")); } - /** - * Calls {@link Service#persist()} to mock a service install along with - * creating a single {@link Host} and {@link ServiceComponentHost}. - */ public void installYarnService(Cluster cluster, ServiceFactory serviceFactory, ServiceComponentFactory componentFactory, ServiceComponentHostFactory schFactory, String hostName) throws Exception { + + RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByStackAndVersion( + cluster.getDesiredStackVersion(), cluster.getDesiredStackVersion().getStackVersion()); + String serviceName = "YARN"; - Service service = serviceFactory.createNew(cluster, serviceName); + Service service = serviceFactory.createNew(cluster, serviceName, repositoryVersion); service = cluster.getService(serviceName); assertNotNull(service); @@ -493,8 +502,6 @@ public class OrmTestHelper { resourceManager.addServiceComponentHost(sch); sch.setDesiredState(State.INSTALLED); sch.setState(State.INSTALLED); - sch.setDesiredStackVersion(new StackId("HDP-2.0.6")); - sch.setStackVersion(new StackId("HDP-2.0.6")); } /** @@ -608,6 +615,39 @@ public class OrmTestHelper { } /** + * Convenient method to create or to get repository version for given cluster. The repository + * version string is based on the cluster's stack version. + * + * @return repository version + */ + public RepositoryVersionEntity getOrCreateRepositoryVersion(Cluster cluster) { + StackId stackId = cluster.getCurrentStackVersion(); + String version = stackId.getStackVersion() + ".1"; + + StackDAO stackDAO = injector.getInstance(StackDAO.class); + StackEntity stackEntity = stackDAO.find(stackId.getStackName(), + stackId.getStackVersion()); + + assertNotNull(stackEntity); + + RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByStackAndVersion( + stackId, version); + + if (repositoryVersion == null) { + try { + repositoryVersion = repositoryVersionDAO.create(stackEntity, version, + String.valueOf(System.currentTimeMillis()) + uniqueCounter.incrementAndGet(), ""); + } catch (Exception ex) { + LOG.error("Caught exception", ex); + ex.printStackTrace(); + Assert.fail(MessageFormat.format("Unable to create Repo Version for Stack {0} and version {1}", + stackEntity.getStackName() + "-" + stackEntity.getStackVersion(), version)); + } + } + return repositoryVersion; + } + + /** * Convenient method to create or to get repository version for given stack. * * @param stackId stack object @@ -616,9 +656,12 @@ public class OrmTestHelper { */ public RepositoryVersionEntity getOrCreateRepositoryVersion(StackId stackId, String version) { - StackDAO stackDAO = injector.getInstance(StackDAO.class); - StackEntity stackEntity = stackDAO.find(stackId.getStackName(), - stackId.getStackVersion()); + StackEntity stackEntity = null; + try { + stackEntity = createStack(stackId); + } catch (Exception e) { + LOG.error("Expected successful repository", e); + } assertNotNull(stackEntity); @@ -631,6 +674,7 @@ public class OrmTestHelper { String.valueOf(System.currentTimeMillis()) + uniqueCounter.incrementAndGet(), ""); } catch (Exception ex) { LOG.error("Caught exception", ex); + ex.printStackTrace(); Assert.fail(MessageFormat.format("Unable to create Repo Version for Stack {0} and version {1}", stackEntity.getStackName() + "-" + stackEntity.getStackVersion(), version)); } @@ -653,4 +697,4 @@ public class OrmTestHelper { return hostVersionEntity; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java index c7414bc..d41b0ba 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/RepositoryVersionDAOTest.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -26,12 +26,8 @@ import org.apache.ambari.server.H2DatabaseCleaner; import org.apache.ambari.server.api.services.AmbariMetaInfo; import org.apache.ambari.server.orm.GuiceJpaInitializer; import org.apache.ambari.server.orm.InMemoryDefaultTestModule; -import org.apache.ambari.server.orm.OrmTestHelper; -import org.apache.ambari.server.orm.entities.ClusterEntity; -import org.apache.ambari.server.orm.entities.ClusterVersionEntity; import org.apache.ambari.server.orm.entities.RepositoryVersionEntity; import org.apache.ambari.server.orm.entities.StackEntity; -import org.apache.ambari.server.state.RepositoryVersionState; import org.apache.ambari.server.state.StackId; import org.junit.After; import org.junit.Assert; @@ -53,20 +49,14 @@ public class RepositoryVersionDAOTest { private static final StackId BAD_STACK = new StackId("BADSTACK", "1.0"); private RepositoryVersionDAO repositoryVersionDAO; - private ClusterVersionDAO clusterVersionDAO; - private ClusterDAO clusterDAO; private StackDAO stackDAO; - private OrmTestHelper helper; @Before public void before() { injector = Guice.createInjector(new InMemoryDefaultTestModule()); repositoryVersionDAO = injector.getInstance(RepositoryVersionDAO.class); - clusterVersionDAO = injector.getInstance(ClusterVersionDAO.class); - clusterDAO = injector.getInstance(ClusterDAO.class); stackDAO = injector.getInstance(StackDAO.class); - helper = injector.getInstance(OrmTestHelper.class); injector.getInstance(GuiceJpaInitializer.class); // required to populate stacks into the database @@ -101,7 +91,7 @@ public class RepositoryVersionDAOTest { // Assert the version must be unique RepositoryVersionEntity dupVersion = new RepositoryVersionEntity(); - dupVersion.setDisplayName("display name " + uuid.toString()); + dupVersion.setDisplayName("display name " + uuid); dupVersion.setOperatingSystems("repositories"); dupVersion.setStack(stackEntity); dupVersion.setVersion(first.getVersion()); @@ -176,31 +166,6 @@ public class RepositoryVersionDAOTest { } @Test - public void testDeleteCascade() throws Exception { - long clusterId = helper.createCluster(); - ClusterEntity cluster = clusterDAO.findById(clusterId); - createSingleRecord(); - final RepositoryVersionEntity entity = repositoryVersionDAO.findByStackAndVersion( - HDP_206, "version"); - - ClusterVersionEntity cvA = new ClusterVersionEntity(cluster, entity, RepositoryVersionState.INSTALLED, System.currentTimeMillis(), System.currentTimeMillis(), "admin"); - clusterVersionDAO.create(cvA); - long cvAId = cvA.getId(); - cvA = clusterVersionDAO.findByPK(cvAId); - Assert.assertNotNull(cvA.getRepositoryVersion()); - final RepositoryVersionEntity newEntity = repositoryVersionDAO.findByStackAndVersion( - HDP_206, "version"); - try { - repositoryVersionDAO.remove(newEntity); - } catch (Exception e) { - //Cascade deletion will fail because absent integrity in in-memory DB - Assert.assertNotNull(clusterVersionDAO.findByPK(cvAId)); - } - // - - } - - @Test public void testRemovePrefixFromVersion() { StackEntity hdp206StackEntity = stackDAO.find(HDP_206.getStackName(), @@ -239,4 +204,4 @@ public class RepositoryVersionDAOTest { H2DatabaseCleaner.clearDatabaseAndStopPersistenceService(injector); injector = null; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/56362fd6/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java index d712b03..a626e07 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/UpgradeDAOTest.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -93,12 +93,12 @@ public class UpgradeDAOTest { repositoryVersion2500 = helper.getOrCreateRepositoryVersion(new StackId("HDP", "2.5.0"), "2.5.0.0-4567"); repositoryVersion2511 = helper.getOrCreateRepositoryVersion(new StackId("HDP", "2.5.0"), "2.5.1.1-4567"); + // create upgrade entities UpgradeEntity entity = new UpgradeEntity(); entity.setClusterId(clusterId.longValue()); entity.setRequestEntity(requestEntity); - entity.setToRepositoryVersion(repositoryVersion2200); - entity.setFromRepositoryVersion(repositoryVersion2500); + entity.setRepositoryVersion(repositoryVersion2200); entity.setUpgradeType(UpgradeType.ROLLING); entity.setUpgradePackage("test-upgrade"); entity.setDowngradeAllowed(true); @@ -175,8 +175,7 @@ public class UpgradeDAOTest { entity1.setClusterId(clusterId.longValue()); entity1.setDirection(Direction.UPGRADE); entity1.setRequestEntity(requestEntity); - entity1.setToRepositoryVersion(repositoryVersion2200); - entity1.setFromRepositoryVersion(repositoryVersion2500); + entity1.setRepositoryVersion(repositoryVersion2500); entity1.setUpgradeType(UpgradeType.ROLLING); entity1.setUpgradePackage("test-upgrade"); entity1.setDowngradeAllowed(true); @@ -186,8 +185,7 @@ public class UpgradeDAOTest { entity2.setClusterId(clusterId.longValue()); entity2.setDirection(Direction.DOWNGRADE); entity2.setRequestEntity(requestEntity); - entity2.setToRepositoryVersion(repositoryVersion2500); - entity2.setFromRepositoryVersion(repositoryVersion2200); + entity2.setRepositoryVersion(repositoryVersion2200); entity2.setUpgradeType(UpgradeType.ROLLING); entity2.setUpgradePackage("test-upgrade"); entity2.setDowngradeAllowed(true); @@ -197,8 +195,7 @@ public class UpgradeDAOTest { entity3.setClusterId(clusterId.longValue()); entity3.setDirection(Direction.UPGRADE); entity3.setRequestEntity(requestEntity); - entity3.setToRepositoryVersion(repositoryVersion2200); - entity3.setFromRepositoryVersion(repositoryVersion2500); + entity3.setRepositoryVersion(repositoryVersion2511); entity3.setUpgradeType(UpgradeType.ROLLING); entity3.setUpgradePackage("test-upgrade"); entity3.setDowngradeAllowed(true); @@ -227,8 +224,7 @@ public class UpgradeDAOTest { upgradeEntity.setClusterId(clusterId.longValue()); upgradeEntity.setDirection(Direction.UPGRADE); upgradeEntity.setRequestEntity(requestEntity); - upgradeEntity.setToRepositoryVersion(repositoryVersion2200); - upgradeEntity.setFromRepositoryVersion(repositoryVersion2500); + upgradeEntity.setRepositoryVersion(repositoryVersion2500); upgradeEntity.setUpgradeType(UpgradeType.ROLLING); upgradeEntity.setUpgradePackage("test-upgrade"); dao.create(upgradeEntity); @@ -245,4 +241,4 @@ public class UpgradeDAOTest { Assert.assertTrue(lastUpgradeForCluster.isComponentFailureAutoSkipped()); Assert.assertTrue(lastUpgradeForCluster.isServiceCheckFailureAutoSkipped()); } -} +} \ No newline at end of file
