Added tests for changed SoftwareProcess config inheritance
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/6ff2aff5 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/6ff2aff5 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/6ff2aff5 Branch: refs/heads/master Commit: 6ff2aff5f59f69919ac746e5908f66089d1839d6 Parents: 4cc823c Author: Andrew Donald Kennedy <[email protected]> Authored: Sun Aug 28 22:37:58 2016 +0100 Committer: Andrew Donald Kennedy <[email protected]> Committed: Sun Aug 28 22:37:58 2016 +0100 ---------------------------------------------------------------------- .../brooklyn/ConfigInheritanceYamlTest.java | 14 +--- .../util/core/internal/ssh/ExecCmdAsserts.java | 27 +++++++- .../base/VanillaSoftwareProcessTest.java | 67 +++++++++++++++----- 3 files changed, 76 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6ff2aff5/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ConfigInheritanceYamlTest.java ---------------------------------------------------------------------- diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ConfigInheritanceYamlTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ConfigInheritanceYamlTest.java index b44bf70..fd4472c 100644 --- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ConfigInheritanceYamlTest.java +++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ConfigInheritanceYamlTest.java @@ -202,18 +202,6 @@ public class ConfigInheritanceYamlTest extends AbstractYamlTest { " brooklyn.config:", " shell.env:", " ENV1: myEnv1", - " templates.preinstall:", - " "+emptyFile.toUri()+": myfile", - " files.preinstall:", - " "+emptyFile.toUri()+": myfile", - " templates.install:", - " "+emptyFile.toUri()+": myfile", - " files.install:", - " "+emptyFile.toUri()+": myfile", - " templates.runtime:", - " "+emptyFile.toUri()+": myfile", - " files.runtime:", - " "+emptyFile.toUri()+": myfile", " provisioning.properties:", " mykey: myval", " templateOptions:", @@ -227,7 +215,7 @@ public class ConfigInheritanceYamlTest extends AbstractYamlTest { assertEmptySoftwareProcessConfig( entity, ImmutableMap.of("ENV1", "myEnv1"), - ImmutableMap.of(emptyFile.toUri().toString(), "myfile"), + null, ImmutableMap.of("mykey", "myval", "templateOptions", ImmutableMap.of("myOptionsKey", "myOptionsVal"))); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6ff2aff5/core/src/test/java/org/apache/brooklyn/util/core/internal/ssh/ExecCmdAsserts.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/util/core/internal/ssh/ExecCmdAsserts.java b/core/src/test/java/org/apache/brooklyn/util/core/internal/ssh/ExecCmdAsserts.java index f5fcab5..8aab3b0 100644 --- a/core/src/test/java/org/apache/brooklyn/util/core/internal/ssh/ExecCmdAsserts.java +++ b/core/src/test/java/org/apache/brooklyn/util/core/internal/ssh/ExecCmdAsserts.java @@ -15,16 +15,17 @@ */ package org.apache.brooklyn.util.core.internal.ssh; +import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; import java.util.List; -import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool.ExecCmd; - import com.google.common.annotations.Beta; import com.google.common.base.Predicate; +import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool.ExecCmd; + @Beta public class ExecCmdAsserts { @@ -83,6 +84,28 @@ public class ExecCmdAsserts { } } + public static void assertExecHasNever(List<ExecCmd> actuals, String expectedCmd) { + assertExecHasExactly(actuals, expectedCmd, 0); + } + + public static void assertExecHasOnlyOnce(List<ExecCmd> actuals, String expectedCmd) { + assertExecHasExactly(actuals, expectedCmd, 1); + } + + public static void assertExecHasExactly(List<ExecCmd> actuals, String expectedCmd, int expectedCount) { + String errMsg = "actuals="+actuals+"; expected="+expectedCmd; + int count = 0; + for (ExecCmd actual : actuals) { + for (String subActual : actual.commands) { + if (subActual.matches(expectedCmd)) { + count++; + break; + } + } + } + assertEquals(count, expectedCount, errMsg); + } + public static ExecCmd findExecContaining(List<ExecCmd> actuals, String cmdRegex) { for (ExecCmd actual : actuals) { for (String subActual : actual.commands) { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/6ff2aff5/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessTest.java index 45b7cc6..93934ed 100644 --- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessTest.java +++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessTest.java @@ -18,28 +18,37 @@ */ package org.apache.brooklyn.entity.software.base; +import static org.apache.brooklyn.util.core.internal.ssh.ExecCmdAsserts.assertExecContains; +import static org.apache.brooklyn.util.core.internal.ssh.ExecCmdAsserts.assertExecHasNever; +import static org.apache.brooklyn.util.core.internal.ssh.ExecCmdAsserts.assertExecHasOnlyOnce; +import static org.apache.brooklyn.util.core.internal.ssh.ExecCmdAsserts.assertExecSatisfies; +import static org.apache.brooklyn.util.core.internal.ssh.ExecCmdAsserts.assertExecsContain; +import static org.apache.brooklyn.util.core.internal.ssh.ExecCmdAsserts.assertExecsNotContains; +import static org.apache.brooklyn.util.core.internal.ssh.ExecCmdAsserts.assertExecsSatisfy; + import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import com.google.common.base.Predicates; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; + import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.location.Location; import org.apache.brooklyn.api.location.LocationSpec; import org.apache.brooklyn.api.location.MachineLocation; import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; +import org.apache.brooklyn.entity.software.base.SoftwareProcess.ChildStartableMode; import org.apache.brooklyn.location.byon.FixedListMachineProvisioningLocation; import org.apache.brooklyn.location.ssh.SshMachineLocation; -import org.apache.brooklyn.util.core.internal.ssh.ExecCmdAsserts; import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool; import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool.CustomResponse; import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool.ExecCmdPredicates; import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool.ExecParams; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import com.google.common.base.Predicates; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; public class VanillaSoftwareProcessTest extends BrooklynAppUnitTestSupport { @@ -80,7 +89,7 @@ public class VanillaSoftwareProcessTest extends BrooklynAppUnitTestSupport { .configure(VanillaSoftwareProcess.STOP_COMMAND, "stopCommand")); app.start(ImmutableList.of(loc)); - ExecCmdAsserts.assertExecsContain(RecordingSshTool.getExecCmds(), ImmutableList.of( + assertExecsContain(RecordingSshTool.getExecCmds(), ImmutableList.of( "preInstallCommand", "installCommand", "postInstallCommand", "preCustomizeCommand", "customizeCommand", "postCustomizeCommand", "preLaunchCommand", "launchCommand", "postLaunchCommand", @@ -88,7 +97,7 @@ public class VanillaSoftwareProcessTest extends BrooklynAppUnitTestSupport { app.stop(); - ExecCmdAsserts.assertExecContains(RecordingSshTool.getLastExecCmd(), "stopCommand"); + assertExecContains(RecordingSshTool.getLastExecCmd(), "stopCommand"); } // See https://issues.apache.org/jira/browse/BROOKLYN-273 @@ -122,7 +131,7 @@ public class VanillaSoftwareProcessTest extends BrooklynAppUnitTestSupport { VanillaSoftwareProcess.RestartSoftwareParameters.RESTART_MACHINE.getName(), VanillaSoftwareProcess.RestartSoftwareParameters.RestartMachineMode.FALSE)) .get(); - ExecCmdAsserts.assertExecsContain(RecordingSshTool.getExecCmds(), ImmutableList.of( + assertExecsContain(RecordingSshTool.getExecCmds(), ImmutableList.of( "checkRunningCommand", "stopCommand", "preLaunchCommand", "launchCommand", "postLaunchCommand", "checkRunningCommand")); @@ -146,12 +155,12 @@ public class VanillaSoftwareProcessTest extends BrooklynAppUnitTestSupport { .configure(VanillaSoftwareProcess.STOP_COMMAND, "stopCommand")); app.start(ImmutableList.of(loc)); - ExecCmdAsserts.assertExecsContain(RecordingSshTool.getExecCmds(), ImmutableList.of( + assertExecsContain(RecordingSshTool.getExecCmds(), ImmutableList.of( "preCustomizeCommand", "customizeCommand", "postCustomizeCommand", "preLaunchCommand", "launchCommand", "postLaunchCommand", "checkRunningCommand")); - ExecCmdAsserts.assertExecsNotContains(RecordingSshTool.getExecCmds(), ImmutableList.of( + assertExecsNotContains(RecordingSshTool.getExecCmds(), ImmutableList.of( "preInstallCommand", "installCommand", "postInstallCommand")); } @@ -172,10 +181,10 @@ public class VanillaSoftwareProcessTest extends BrooklynAppUnitTestSupport { .configure(VanillaSoftwareProcess.STOP_COMMAND, "stopCommand")); app.start(ImmutableList.of(loc)); - ExecCmdAsserts.assertExecsContain(RecordingSshTool.getExecCmds(), ImmutableList.of( + assertExecsContain(RecordingSshTool.getExecCmds(), ImmutableList.of( "checkRunningCommand")); - ExecCmdAsserts.assertExecsNotContains(RecordingSshTool.getExecCmds(), ImmutableList.of( + assertExecsNotContains(RecordingSshTool.getExecCmds(), ImmutableList.of( "launchCommand")); } @@ -214,7 +223,7 @@ public class VanillaSoftwareProcessTest extends BrooklynAppUnitTestSupport { .configure(VanillaSoftwareProcess.STOP_COMMAND, "stopCommand")); app.start(ImmutableList.of(loc)); - ExecCmdAsserts.assertExecsContain(RecordingSshTool.getExecCmds(), ImmutableList.of( + assertExecsContain(RecordingSshTool.getExecCmds(), ImmutableList.of( "checkRunningCommand", "preInstallCommand", "installCommand", "postInstallCommand", "preCustomizeCommand", "customizeCommand", "postCustomizeCommand", @@ -241,7 +250,7 @@ public class VanillaSoftwareProcessTest extends BrooklynAppUnitTestSupport { Map<String, String> expectedEnv = ImmutableMap.of("KEY1", "VAL1"); - ExecCmdAsserts.assertExecsSatisfy(RecordingSshTool.getExecCmds(), ImmutableList.of( + assertExecsSatisfy(RecordingSshTool.getExecCmds(), ImmutableList.of( Predicates.and(ExecCmdPredicates.containsCmd("preInstallCommand"), ExecCmdPredicates.containsEnv(expectedEnv)), Predicates.and(ExecCmdPredicates.containsCmd("installCommand"), ExecCmdPredicates.containsEnv(expectedEnv)), Predicates.and(ExecCmdPredicates.containsCmd("postInstallCommand"), ExecCmdPredicates.containsEnv(expectedEnv)), @@ -255,8 +264,32 @@ public class VanillaSoftwareProcessTest extends BrooklynAppUnitTestSupport { app.stop(); - ExecCmdAsserts.assertExecSatisfies( + assertExecSatisfies( RecordingSshTool.getLastExecCmd(), Predicates.and(ExecCmdPredicates.containsCmd("stopCommand"), ExecCmdPredicates.containsEnv(expectedEnv))); } + + @Test + public void testCmdNotInheritedByChildrenOfSoftwareProcess() throws Exception { + app.createAndManageChild(EntitySpec.create(VanillaSoftwareProcess.class) + .configure(VanillaSoftwareProcess.PRE_INSTALL_COMMAND, "preInstallCommand") + .configure(VanillaSoftwareProcess.LAUNCH_COMMAND, "parentLaunchCommand") + .configure(VanillaSoftwareProcess.CHILDREN_STARTABLE_MODE, ChildStartableMode.FOREGROUND) + .child(EntitySpec.create(VanillaSoftwareProcess.class) + .configure(VanillaSoftwareProcess.LAUNCH_COMMAND, "childLaunchCommand"))); + app.start(ImmutableList.of(loc)); + + assertExecHasOnlyOnce(RecordingSshTool.getExecCmds(), "childLaunchCommand"); + assertExecHasOnlyOnce(RecordingSshTool.getExecCmds(), "preInstallCommand"); + } + + @Test + public void testCmdNotInheritedFromParentOfSoftwareProcess() throws Exception { + app.config().set(VanillaSoftwareProcess.PRE_INSTALL_COMMAND, "preInstallCommand"); + app.createAndManageChild(EntitySpec.create(VanillaSoftwareProcess.class) + .configure(VanillaSoftwareProcess.LAUNCH_COMMAND, "launchCommand")); + app.start(ImmutableList.of(loc)); + + assertExecHasNever(RecordingSshTool.getExecCmds(), "preInstallCommand"); + } }
