Repository: ambari Updated Branches: refs/heads/trunk 9a3590054 -> 146b2d72f
AMBARI-18333. While checking for component dependency code looks for incorrect component name. (Amruta Borkar via rnettleton) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/146b2d72 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/146b2d72 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/146b2d72 Branch: refs/heads/trunk Commit: 146b2d72f28e1c9743bffba78e2b66ca4f08ccb5 Parents: 9a35900 Author: Bob Nettleton <rnettle...@hortonworks.com> Authored: Thu Sep 8 15:46:19 2016 -0400 Committer: Bob Nettleton <rnettle...@hortonworks.com> Committed: Thu Sep 8 15:46:46 2016 -0400 ---------------------------------------------------------------------- .../server/topology/BlueprintValidatorImpl.java | 2 +- .../topology/BlueprintValidatorImplTest.java | 53 ++++++++++++++++++-- 2 files changed, 49 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/146b2d72/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java index 398772e..a5f33ff 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/BlueprintValidatorImpl.java @@ -295,7 +295,7 @@ public class BlueprintValidatorImpl implements BlueprintValidator { resolved = missingDependencyInfo.isEmpty(); } else if (dependencyScope.equals("host")) { - if (group.getComponentNames().contains(component) || (autoDeployInfo != null && autoDeployInfo.isEnabled())) { + if (group.getComponentNames().contains(componentName) || (autoDeployInfo != null && autoDeployInfo.isEnabled())) { resolved = true; group.addComponent(componentName); } http://git-wip-us.apache.org/repos/asf/ambari/blob/146b2d72/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintValidatorImplTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintValidatorImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintValidatorImplTest.java index ea6bee3..b1de8ef 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintValidatorImplTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/BlueprintValidatorImplTest.java @@ -18,12 +18,17 @@ package org.apache.ambari.server.topology; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.replay; +import static org.easymock.EasyMock.reset; +import static org.easymock.EasyMock.verify; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import org.apache.ambari.server.controller.internal.Stack; @@ -38,11 +43,6 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.reset; -import static org.easymock.EasyMock.verify; - /** * BlueprintValidatorImpl unit tests. */ @@ -298,4 +298,47 @@ public class BlueprintValidatorImplTest { verify(group1); } + @Test(expected=InvalidTopologyException.class) + public void testShouldThrowErrorWhenDependentComponentIsNotInBlueprint() throws Exception { + // GIVEN + hostGroups.clear(); + hostGroups.put("group1", group1); + + group1Components.add("component-1"); + dependencies1.add(dependency1); + services.addAll(Collections.singleton("service-1")); + + + expect(blueprint.getHostGroupsForComponent("component-1")).andReturn(Arrays.asList(group1)).anyTimes(); + expect(blueprint.getName()).andReturn("blueprint-1").anyTimes(); + + Cardinality cardinality = new Cardinality("1"); + + expect(stack.getComponents("service-1")).andReturn(Arrays.asList("component-1")).anyTimes(); + expect(stack.getAutoDeployInfo("component-1")).andReturn(autoDeploy).anyTimes(); + expect(stack.getDependenciesForComponent("component-1")).andReturn(dependencies1).anyTimes(); + expect(stack.getCardinality("component-1")).andReturn(cardinality).anyTimes(); + + + AutoDeployInfo dependencyAutoDeploy = null; + + expect(dependency1.getScope()).andReturn("host").anyTimes(); + expect(dependency1.getAutoDeploy()).andReturn(dependencyAutoDeploy).anyTimes(); + expect(dependency1.getComponentName()).andReturn("component-d").anyTimes(); + expect(dependency1.getServiceName()).andReturn("service-d").anyTimes(); + expect(dependency1.getName()).andReturn("dependency-1").anyTimes(); + + + expect(stack.getComponentInfo("component-d")).andReturn(dependencyComponentInfo).anyTimes(); + + replay(blueprint, stack, group1, group2, dependency1, dependencyComponentInfo); + + // WHEN + BlueprintValidator validator = new BlueprintValidatorImpl(blueprint); + validator.validateTopology(); + + // THEN + verify(group1); + + } }