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");
+    }
 }

Reply via email to