AMBARI-22253. Make ScaleClusterRequestTest, TopologyManagerTest work (adoroszlai)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d7610d11 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d7610d11 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d7610d11 Branch: refs/heads/branch-feature-AMBARI-14714-blueprintv2 Commit: d7610d11a277bb7435e2569e68d1eaf8e29dc21c Parents: c8f4645 Author: Doroszlai, Attila <adorosz...@hortonworks.com> Authored: Mon Dec 4 18:20:27 2017 +0100 Committer: Doroszlai, Attila <adorosz...@hortonworks.com> Committed: Fri Dec 8 20:24:25 2017 +0100 ---------------------------------------------------------------------- .../ambari/server/topology/AmbariContext.java | 6 +- .../ambari/server/topology/BlueprintV2Impl.java | 2 +- .../server/topology/ClusterTopologyImpl.java | 8 +- .../ambari/server/topology/HostGroupV2.java | 6 +- .../ambari/server/topology/HostGroupV2Impl.java | 15 ++- .../tasks/PersistHostResourcesTask.java | 12 +- .../internal/ScaleClusterRequestTest.java | 28 ++--- .../server/topology/TopologyManagerTest.java | 114 +++++++++++-------- 8 files changed, 105 insertions(+), 86 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/d7610d11/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java index a12f61b..f63c121 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java @@ -302,7 +302,7 @@ public class AmbariContext { } } - public void createAmbariHostResources(long clusterId, String hostName, Map<Service, Collection<ComponentV2>> components) { + public void createAmbariHostResources(long clusterId, String hostName, Map<Service, ? extends Iterable<ComponentV2>> components) { Host host; try { host = getController().getClusters().getHost(hostName); @@ -312,7 +312,7 @@ public class AmbariContext { "Unable to obtain host instance '%s' when persisting host resources", hostName)); } - Cluster cluster = null; + Cluster cluster; try { cluster = getController().getClusters().getClusterById(clusterId); } catch (AmbariException e) { @@ -336,7 +336,7 @@ public class AmbariContext { final Set<ServiceComponentHostRequest> requests = new HashSet<>(); - for (Map.Entry<Service, Collection<ComponentV2>> entry : components.entrySet()) { + for (Map.Entry<Service, ? extends Iterable<ComponentV2>> entry : components.entrySet()) { Service service = entry.getKey(); for (ComponentV2 component : entry.getValue()) { //todo: handle this in a generic manner. These checks are all over the code http://git-wip-us.apache.org/repos/asf/ambari/blob/d7610d11/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Impl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Impl.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Impl.java index 224e6b7..0fef526 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Impl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintV2Impl.java @@ -248,7 +248,7 @@ public class BlueprintV2Impl implements BlueprintV2 { @Override @JsonIgnore public Collection<HostGroupV2> getHostGroupsForService(ServiceId serviceId) { - return getHostGroups().values().stream().filter(hg -> !hg.getComponentsByServiceId(serviceId).isEmpty()).collect(toList()); + return getHostGroups().values().stream().filter(hg -> !hg.getComponentsForService(serviceId).isEmpty()).collect(toList()); } @Override http://git-wip-us.apache.org/repos/asf/ambari/blob/d7610d11/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java index 33673be..e32551a 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/ClusterTopologyImpl.java @@ -32,6 +32,7 @@ import java.util.Map; import java.util.Set; import org.apache.ambari.server.AmbariException; +import org.apache.ambari.server.controller.AmbariManagementController; import org.apache.ambari.server.controller.RequestStatusResponse; import org.apache.ambari.server.controller.internal.ConfigurationContext; import org.apache.ambari.server.controller.internal.ProvisionAction; @@ -408,8 +409,11 @@ public class ClusterTopologyImpl implements ClusterTopology { } private static Map<String, String> getDefaultClusterSettings() { // TODO temporary - return AmbariContext.getController().getAmbariMetaInfo().getClusterProperties().stream() - .collect(toMap(PropertyInfo::getName, PropertyInfo::getValue)); + AmbariManagementController controller = AmbariContext.getController(); + return controller != null + ? controller.getAmbariMetaInfo().getClusterProperties().stream() + .collect(toMap(PropertyInfo::getName, PropertyInfo::getValue)) + : Collections.emptyMap(); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/d7610d11/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2.java index f08085f..9ac7cb1 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2.java @@ -19,6 +19,7 @@ package org.apache.ambari.server.topology; import java.util.Collection; +import java.util.List; import java.util.Map; import java.util.regex.Pattern; @@ -61,6 +62,7 @@ public interface HostGroupV2 { * @return collection of component instances */ Collection<ComponentV2> getComponents(); + Map<Service, List<ComponentV2>> getComponentsByService(); /** * Get all of the host group component names @@ -88,9 +90,9 @@ public interface HostGroupV2 { * * @return collection of component names for the specified service; will not return null */ - Collection<ComponentV2> getComponentsByServiceId(ServiceId serviceId); + Collection<ComponentV2> getComponentsForService(ServiceId serviceId); - Collection<ComponentV2> getComponents(Service serviceId); + Collection<ComponentV2> getComponentsForService(Service service); /** * Determine if the host group contains a master component. http://git-wip-us.apache.org/repos/asf/ambari/blob/d7610d11/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2Impl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2Impl.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2Impl.java index 2d6abf7..918b3b8 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2Impl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2Impl.java @@ -17,9 +17,11 @@ */ package org.apache.ambari.server.topology; +import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.toList; import java.util.Collection; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -66,6 +68,13 @@ public class HostGroupV2Impl implements HostGroupV2, Configurable { @Override @JsonIgnore + public Map<Service, List<ComponentV2>> getComponentsByService() { + return components.stream() + .collect(groupingBy(ComponentV2::getService)); + } + + @Override + @JsonIgnore public Collection<String> getComponentNames() { return components.stream() .map(ComponentV2::getName) @@ -82,12 +91,12 @@ public class HostGroupV2Impl implements HostGroupV2, Configurable { } @Override - public Collection<ComponentV2> getComponents(Service service) { - return getComponentsByServiceId(service.getId()); + public Collection<ComponentV2> getComponentsForService(Service service) { + return getComponentsForService(service.getId()); } @Override - public Collection<ComponentV2> getComponentsByServiceId(ServiceId serviceId) { + public Collection<ComponentV2> getComponentsForService(ServiceId serviceId) { return components.stream().filter(c -> c.getServiceId().equals(serviceId)).collect(toList()); } http://git-wip-us.apache.org/repos/asf/ambari/blob/d7610d11/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/PersistHostResourcesTask.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/PersistHostResourcesTask.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/PersistHostResourcesTask.java index 00eb706..0a7d14c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/PersistHostResourcesTask.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/PersistHostResourcesTask.java @@ -17,9 +17,7 @@ */ package org.apache.ambari.server.topology.tasks; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; +import java.util.List; import java.util.Map; import org.apache.ambari.server.topology.ClusterTopology; @@ -52,12 +50,8 @@ public class PersistHostResourcesTask extends TopologyHostTask { LOG.info("HostRequest: Executing RESOURCE_CREATION task for host: {}", hostRequest.getHostName()); HostGroupV2 group = hostRequest.getHostGroup(); - Map<Service, Collection<ComponentV2>> serviceComponents = new HashMap<>(); - for (Service service : group.getServices()) { - serviceComponents.put(service, new HashSet(group.getComponents(service))); - } - clusterTopology.getAmbariContext().createAmbariHostResources(hostRequest.getClusterId(), - hostRequest.getHostName(), serviceComponents); + Map<Service, List<ComponentV2>> serviceComponents = group.getComponentsByService(); + clusterTopology.getAmbariContext().createAmbariHostResources(hostRequest.getClusterId(), hostRequest.getHostName(), serviceComponents); LOG.info("HostRequest: Exiting RESOURCE_CREATION task for host: {}", hostRequest.getHostName()); } http://git-wip-us.apache.org/repos/asf/ambari/blob/d7610d11/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 b1e52cc..17a3bbb 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 @@ -30,7 +30,6 @@ 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; @@ -39,11 +38,11 @@ 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.BlueprintV2; +import org.apache.ambari.server.topology.BlueprintV2Factory; 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.HostGroupV2; import org.apache.ambari.server.topology.InvalidTopologyTemplateException; import org.apache.ambari.server.topology.TopologyRequest; import org.junit.After; @@ -53,7 +52,6 @@ import org.junit.Test; /** * Unit tests for ScaleClusterRequest. */ -@SuppressWarnings("unchecked") public class ScaleClusterRequestTest { private static final String CLUSTER_NAME = "cluster_name"; @@ -65,22 +63,16 @@ public class ScaleClusterRequestTest { private static final String GROUP3_NAME = "group3"; private static final String PREDICATE = "test/prop=foo"; - private static final BlueprintFactory blueprintFactory = createStrictMock(BlueprintFactory.class); - private static final Blueprint blueprint = createNiceMock(Blueprint.class); + private static final BlueprintV2Factory blueprintFactory = createStrictMock(BlueprintV2Factory.class); + private static final BlueprintV2 blueprint = createNiceMock(BlueprintV2.class); private static final ResourceProvider hostResourceProvider = createMock(ResourceProvider.class); - private static final HostGroup hostGroup1 = createNiceMock(HostGroup.class); - private static final Configuration blueprintConfig = new Configuration( - Collections.emptyMap(), - Collections.emptyMap()); + private static final HostGroupV2 hostGroup1 = createNiceMock(HostGroupV2.class); + private static final Configuration blueprintConfig = Configuration.createEmpty(); @Before public void setUp() throws Exception { - ScaleClusterRequest.init(null); - // set host resource provider field - Class clazz = BaseClusterRequest.class; - Field f = clazz.getDeclaredField("hostResourceProvider"); - f.setAccessible(true); - f.set(null, hostResourceProvider); + BaseClusterRequest.setBlueprintFactory(blueprintFactory); + BaseClusterRequest.setHostResourceProvider(hostResourceProvider); expect(blueprintFactory.getBlueprint(BLUEPRINT_NAME)).andReturn(blueprint).anyTimes(); expect(blueprint.getConfiguration()).andReturn(blueprintConfig).anyTimes(); @@ -304,7 +296,7 @@ public class ScaleClusterRequestTest { } - @Test(expected = InvalidTopologyTemplateException.class) + @Test(expected = IllegalArgumentException.class) public void testInvalidPredicateProperty() throws Exception { reset(hostResourceProvider); // checkPropertyIds() returns invalid property names http://git-wip-us.apache.org/repos/asf/ambari/blob/d7610d11/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java index e370df6..152a257 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/TopologyManagerTest.java @@ -20,6 +20,7 @@ package org.apache.ambari.server.topology; import static org.easymock.EasyMock.anyObject; import static org.easymock.EasyMock.capture; +import static org.easymock.EasyMock.createNiceMock; import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.expectLastCall; @@ -49,11 +50,11 @@ import org.apache.ambari.server.controller.ClusterRequest; import org.apache.ambari.server.controller.ConfigurationRequest; import org.apache.ambari.server.controller.RequestStatusResponse; import org.apache.ambari.server.controller.ShortTaskStatus; +import org.apache.ambari.server.controller.StackV2; import org.apache.ambari.server.controller.internal.BaseClusterRequest; import org.apache.ambari.server.controller.internal.HostResourceProvider; import org.apache.ambari.server.controller.internal.ProvisionClusterRequest; import org.apache.ambari.server.controller.internal.ScaleClusterRequest; -import org.apache.ambari.server.controller.internal.Stack; import org.apache.ambari.server.controller.spi.ClusterController; import org.apache.ambari.server.controller.spi.Resource; import org.apache.ambari.server.controller.spi.ResourceProvider; @@ -116,7 +117,7 @@ public class TopologyManagerTest { private BlueprintV2 blueprint; @Mock(type = MockType.NICE) - private Stack stack; + private StackV2 stack; @Mock(type = MockType.NICE) private ProvisionClusterRequest request; @@ -167,21 +168,14 @@ public class TopologyManagerTest { @Mock private TopologyValidatorService topologyValidatorService; - private final Configuration stackConfig = new Configuration(new HashMap<>(), - new HashMap<>()); - private final Configuration bpConfiguration = new Configuration(new HashMap<>(), - new HashMap<>(), stackConfig); - private final Configuration topoConfiguration = new Configuration(new HashMap<>(), - new HashMap<>(), bpConfiguration); - private final Configuration bpGroup1Config = new Configuration(new HashMap<>(), - new HashMap<>(), bpConfiguration); - private final Configuration bpGroup2Config = new Configuration(new HashMap<>(), - new HashMap<>(), bpConfiguration); + private final Configuration stackConfig = Configuration.createEmpty(); + private final Configuration bpConfiguration = new Configuration(new HashMap<>(), new HashMap<>(), stackConfig); + private final Configuration topoConfiguration = new Configuration(new HashMap<>(), new HashMap<>(), bpConfiguration); + private final Configuration bpGroup1Config = new Configuration(new HashMap<>(), new HashMap<>(), bpConfiguration); + private final Configuration bpGroup2Config = new Configuration(new HashMap<>(), new HashMap<>(), bpConfiguration); //todo: topo config hierarchy is wrong: bpGroupConfigs should extend topo cluster config - private final Configuration topoGroup1Config = new Configuration(new HashMap<>(), - new HashMap<>(), bpGroup1Config); - private final Configuration topoGroup2Config = new Configuration(new HashMap<>(), - new HashMap<>(), bpGroup2Config); + private final Configuration topoGroup1Config = new Configuration(new HashMap<>(), new HashMap<>(), bpGroup1Config); + private final Configuration topoGroup2Config = new Configuration(new HashMap<>(), new HashMap<>(), bpGroup2Config); private HostGroupInfo group1Info = new HostGroupInfo("group1"); private HostGroupInfo group2Info = new HostGroupInfo("group2"); @@ -209,6 +203,10 @@ public class TopologyManagerTest { private Capture<Map<String, Object>> configRequestPropertiesCapture3; private Capture<ClusterRequest> updateClusterConfigRequestCapture; private Capture<Runnable> updateConfigTaskCapture; + private final ServiceId serviceId1 = ServiceId.of("service1", "CORE"); + private final ServiceId serviceId2 = ServiceId.of("service2", "CORE"); + private final Service service1 = createNiceMock(Service.class); + private final Service service2 = createNiceMock(Service.class); @Before public void setup() throws Exception { @@ -237,8 +235,6 @@ public class TopologyManagerTest { Map<String, HostGroupV2> groupMap = ImmutableMap.of("group1", group1, "group2", group2); - ServiceId serviceId1 = ServiceId.of("service1", "CORE"); - ServiceId serviceId2 = ServiceId.of("service2", "CORE"); component1.setType("component1"); component1.setServiceGroup(serviceId1.getServiceGroup()); component1.setServiceName(serviceId1.getName()); @@ -260,25 +256,10 @@ public class TopologyManagerTest { group2ServiceComponents.put("service1", Collections.singleton(component3)); group2ServiceComponents.put("service2", Collections.singleton(component4)); - expect(blueprint.getHostGroup("group1")).andReturn(group1).anyTimes(); - expect(blueprint.getHostGroup("group2")).andReturn(group2).anyTimes(); - expect(blueprint.getComponents(serviceId1)).andReturn(Arrays.asList(component1, component3)).anyTimes(); - expect(blueprint.getComponents(serviceId2)).andReturn(Arrays.asList(component2, component4)).anyTimes(); - expect(blueprint.getConfiguration()).andReturn(bpConfiguration).anyTimes(); - expect(blueprint.getHostGroups()).andReturn(groupMap).anyTimes(); - expect(blueprint.getHostGroupsForComponent(component1)).andReturn(Collections.singleton(group1)).anyTimes(); - expect(blueprint.getHostGroupsForComponent(component2)).andReturn(Collections.singleton(group1)).anyTimes(); - expect(blueprint.getHostGroupsForComponent(component3)).andReturn(Arrays.asList(group1, group2)).anyTimes(); - expect(blueprint.getHostGroupsForComponent(component4)).andReturn(Collections.singleton(group2)).anyTimes(); - expect(blueprint.getHostGroupsForService(serviceId1)).andReturn(Arrays.asList(group1, group2)).anyTimes(); - expect(blueprint.getHostGroupsForService(serviceId2)).andReturn(Arrays.asList(group1, group2)).anyTimes(); - expect(blueprint.getName()).andReturn(BLUEPRINT_NAME).anyTimes(); - expect(blueprint.getAllServiceNames()).andReturn(Arrays.asList("service1", "service2")).anyTimes(); - expect(blueprint.getRepositorySettings()).andReturn(new ArrayList<>()).anyTimes(); - // don't expect toEntity() - expect(stack.getAllConfigurationTypes("service1")).andReturn(Arrays.asList("service1-site", "service1-env")).anyTimes(); expect(stack.getAllConfigurationTypes("service2")).andReturn(Arrays.asList("service2-site", "service2-env")).anyTimes(); + expect(stack.getConfigurationTypes("service1")).andReturn(Arrays.asList("service1-site", "service1-env")).anyTimes(); + expect(stack.getConfigurationTypes("service2")).andReturn(Arrays.asList("service2-site", "service2-env")).anyTimes(); expect(stack.getAutoDeployInfo("component1")).andReturn(null).anyTimes(); expect(stack.getAutoDeployInfo("component2")).andReturn(null).anyTimes(); expect(stack.getAutoDeployInfo("component3")).andReturn(null).anyTimes(); @@ -295,10 +276,47 @@ public class TopologyManagerTest { expect(stack.getConfiguration()).andReturn(stackConfig).anyTimes(); expect(stack.getName()).andReturn(STACK_NAME).anyTimes(); expect(stack.getVersion()).andReturn(STACK_VERSION).anyTimes(); - expect(stack.getExcludedConfigurationTypes("service1")).andReturn(new HashSet<String>()).anyTimes(); - expect(stack.getExcludedConfigurationTypes("service2")).andReturn(new HashSet<String>()).anyTimes(); + expect(stack.getExcludedConfigurationTypes("service1")).andReturn(new HashSet<>()).anyTimes(); + expect(stack.getExcludedConfigurationTypes("service2")).andReturn(new HashSet<>()).anyTimes(); + + Configuration c1 = Configuration.createEmpty(); + expect(service1.getId()).andReturn(serviceId1).anyTimes(); + expect(service1.getName()).andReturn(serviceId1.getName()).anyTimes(); + expect(service1.getServiceGroupId()).andReturn(serviceId1.getServiceGroup()).anyTimes(); + expect(service1.getServiceGroupName()).andReturn(serviceId1.getServiceGroup()).anyTimes(); + expect(service1.getStack()).andReturn(stack).anyTimes(); + expect(service1.getType()).andReturn("service1").anyTimes(); + expect(service1.getConfiguration()).andReturn(c1).anyTimes(); + Configuration c2 = Configuration.createEmpty(); + expect(service2.getName()).andReturn(serviceId2.getName()).anyTimes(); + expect(service2.getServiceGroupId()).andReturn(serviceId2.getServiceGroup()).anyTimes(); + expect(service2.getServiceGroupName()).andReturn(serviceId2.getServiceGroup()).anyTimes(); + expect(service2.getStack()).andReturn(stack).anyTimes(); + expect(service2.getType()).andReturn("service2").anyTimes(); + expect(service2.getConfiguration()).andReturn(c2).anyTimes(); + + expect(blueprint.getHostGroup("group1")).andReturn(group1).anyTimes(); + expect(blueprint.getHostGroup("group2")).andReturn(group2).anyTimes(); + expect(blueprint.getComponents(serviceId1)).andReturn(Arrays.asList(component1, component3)).anyTimes(); + expect(blueprint.getComponents(serviceId2)).andReturn(Arrays.asList(component2, component4)).anyTimes(); + expect(blueprint.getConfiguration()).andReturn(bpConfiguration).anyTimes(); + expect(blueprint.getHostGroups()).andReturn(groupMap).anyTimes(); + expect(blueprint.getHostGroupsForComponent(component1)).andReturn(Collections.singleton(group1)).anyTimes(); + expect(blueprint.getHostGroupsForComponent(component2)).andReturn(Collections.singleton(group1)).anyTimes(); + expect(blueprint.getHostGroupsForComponent(component3)).andReturn(Arrays.asList(group1, group2)).anyTimes(); + expect(blueprint.getHostGroupsForComponent(component4)).andReturn(Collections.singleton(group2)).anyTimes(); + expect(blueprint.getHostGroupsForService(serviceId1)).andReturn(Arrays.asList(group1, group2)).anyTimes(); + expect(blueprint.getHostGroupsForService(serviceId2)).andReturn(Arrays.asList(group1, group2)).anyTimes(); + expect(blueprint.getName()).andReturn(BLUEPRINT_NAME).anyTimes(); + expect(blueprint.getAllServiceNames()).andReturn(Arrays.asList("service1", "service2")).anyTimes(); + expect(blueprint.getAllServices()).andReturn(Arrays.asList(service1, service2)).anyTimes(); + expect(blueprint.getRepositorySettings()).andReturn(new ArrayList<>()).anyTimes(); + expect(blueprint.getServicesByType("HDFS")).andReturn(Collections.emptyList()).anyTimes(); + expect(blueprint.isValidConfigType("cluster-env")).andReturn(true).anyTimes(); + expect(blueprint.getStacks()).andReturn(Collections.singleton(stack)).anyTimes(); + // don't expect toEntity() - expect(request.getBlueprint()).andReturn(null).anyTimes(); + expect(request.getBlueprint()).andReturn(blueprint).anyTimes(); expect(request.getClusterId()).andReturn(CLUSTER_ID).anyTimes(); expect(request.getClusterName()).andReturn(CLUSTER_NAME).anyTimes(); expect(request.getDescription()).andReturn("Provision Cluster Test").anyTimes(); @@ -311,8 +329,8 @@ public class TopologyManagerTest { expect(group1.getCardinality()).andReturn("test cardinality").anyTimes(); expect(group1.containsMasterComponent()).andReturn(true).anyTimes(); expect(group1.getComponents()).andReturn(group1Components).anyTimes(); - expect(group1.getComponentsByServiceId(serviceId1)).andReturn(group1ServiceComponents.get("service1")).anyTimes(); - expect(group1.getComponentsByServiceId(serviceId2)).andReturn(group1ServiceComponents.get("service1")).anyTimes(); + expect(group1.getComponentsForService(serviceId1)).andReturn(group1ServiceComponents.get("service1")).anyTimes(); + expect(group1.getComponentsForService(serviceId2)).andReturn(group1ServiceComponents.get("service1")).anyTimes(); expect(group1.getConfiguration()).andReturn(topoGroup1Config).anyTimes(); expect(group1.getName()).andReturn("group1").anyTimes(); expect(group1.getServiceNames()).andReturn(Arrays.asList("service1", "service2")).anyTimes(); @@ -321,8 +339,8 @@ public class TopologyManagerTest { expect(group2.getCardinality()).andReturn("test cardinality").anyTimes(); expect(group2.containsMasterComponent()).andReturn(false).anyTimes(); expect(group2.getComponents()).andReturn(group2Components).anyTimes(); - expect(group2.getComponentsByServiceId(serviceId1)).andReturn(group2ServiceComponents.get("service1")).anyTimes(); - expect(group2.getComponentsByServiceId(serviceId2)).andReturn(group2ServiceComponents.get("service2")).anyTimes(); + expect(group2.getComponentsForService(serviceId1)).andReturn(group2ServiceComponents.get("service1")).anyTimes(); + expect(group2.getComponentsForService(serviceId2)).andReturn(group2ServiceComponents.get("service2")).anyTimes(); expect(group2.getConfiguration()).andReturn(topoGroup2Config).anyTimes(); expect(group2.getName()).andReturn("group2").anyTimes(); expect(group2.getServiceNames()).andReturn(Arrays.asList("service1", "service2")).anyTimes(); @@ -388,12 +406,12 @@ public class TopologyManagerTest { @After public void tearDown() { PowerMock.verify(System.class); - verify(blueprint, stack, request, group1, group2, ambariContext, logicalRequestFactory, + verify(blueprint, stack, request, group1, group2, ambariContext, logicalRequestFactory, service1, service2, logicalRequest, configurationRequest, configurationRequest2, configurationRequest3, requestStatusResponse, executor, persistedState, clusterTopologyMock, mockFuture, settingDAO); PowerMock.reset(System.class); - reset(blueprint, stack, request, group1, group2, ambariContext, logicalRequestFactory, + reset(blueprint, stack, request, group1, group2, ambariContext, logicalRequestFactory, service1, service2, logicalRequest, configurationRequest, configurationRequest2, configurationRequest3, requestStatusResponse, executor, persistedState, clusterTopologyMock, mockFuture, settingDAO); } @@ -417,7 +435,7 @@ public class TopologyManagerTest { expect(requestStatusResponse.getTasks()).andReturn(new ArrayList<ShortTaskStatus>()).anyTimes(); expect(clusterTopologyMock.isClusterKerberosEnabled()).andReturn(true); expect(clusterTopologyMock.getClusterId()).andReturn(CLUSTER_ID).anyTimes(); - expect(clusterTopologyMock.getBlueprint()).andReturn(null).anyTimes(); + expect(clusterTopologyMock.getBlueprint()).andReturn(blueprint).anyTimes(); expect(persistedState.getAllRequests()).andReturn(allRequests).anyTimes(); expect(persistedState.getProvisionRequest(CLUSTER_ID)).andReturn(logicalRequest).anyTimes(); expect(ambariContext.isTopologyResolved(CLUSTER_ID)).andReturn(true).anyTimes(); @@ -520,7 +538,7 @@ public class TopologyManagerTest { Map<ClusterTopology,List<LogicalRequest>> allRequests = new HashMap<>(); List<LogicalRequest> logicalRequests = new ArrayList<>(); logicalRequests.add(logicalRequest); - ClusterTopology clusterTopologyMock = EasyMock.createNiceMock(ClusterTopology.class); + ClusterTopology clusterTopologyMock = createNiceMock(ClusterTopology.class); expect(clusterTopologyMock.getClusterId()).andReturn(CLUSTER_ID).anyTimes(); expect(ambariContext.isTopologyResolved(EasyMock.anyLong())).andReturn(true).anyTimes(); @@ -542,7 +560,7 @@ public class TopologyManagerTest { } private void replayAll() { - replay(blueprint, stack, request, group1, group2, ambariContext, logicalRequestFactory, + replay(blueprint, stack, request, group1, group2, ambariContext, logicalRequestFactory, service1, service2, configurationRequest, configurationRequest2, configurationRequest3, executor, persistedState, clusterTopologyMock, securityConfigurationFactory, credentialStoreService, clusterController, resourceProvider, mockFuture, requestStatusResponse, logicalRequest, settingDAO, @@ -558,7 +576,7 @@ public class TopologyManagerTest { properties.put(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID, CLUSTER_NAME); properties.put(HostResourceProvider.BLUEPRINT_PROPERTY_ID, BLUEPRINT_NAME); propertySet.add(properties); - BlueprintV2Factory bpfMock = EasyMock.createNiceMock(BlueprintV2Factory.class); + BlueprintV2Factory bpfMock = createNiceMock(BlueprintV2Factory.class); EasyMock.expect(bpfMock.getBlueprint(BLUEPRINT_NAME)).andReturn(blueprint).anyTimes(); BaseClusterRequest.setBlueprintFactory(bpfMock); replay(bpfMock);