Fix integration tests - brooklyn-software-base
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/9ad0d8c8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/9ad0d8c8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/9ad0d8c8 Branch: refs/heads/master Commit: 9ad0d8c8e7dfba53acdd3a3895d0ba8fd5661d7d Parents: fae666c Author: Svetoslav Neykov <[email protected]> Authored: Fri Jun 19 13:07:26 2015 +0300 Committer: Svetoslav Neykov <[email protected]> Committed: Fri Jun 19 18:32:06 2015 +0300 ---------------------------------------------------------------------- .../main/java/brooklyn/entity/group/DynamicClusterImpl.java | 7 ++++++- .../entity/basic/lifecycle/StartStopSshDriverTest.java | 9 ++++++--- .../entity/brooklynnode/BrooklynNodeIntegrationTest.java | 7 +++++++ .../src/main/java/brooklyn/launcher/BrooklynLauncher.java | 1 + 4 files changed, 20 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9ad0d8c8/core/src/main/java/brooklyn/entity/group/DynamicClusterImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/brooklyn/entity/group/DynamicClusterImpl.java b/core/src/main/java/brooklyn/entity/group/DynamicClusterImpl.java index e269880..447a4bb 100644 --- a/core/src/main/java/brooklyn/entity/group/DynamicClusterImpl.java +++ b/core/src/main/java/brooklyn/entity/group/DynamicClusterImpl.java @@ -860,7 +860,12 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus protected void discardNode(Entity entity) { removeMember(entity); - Entities.unmanage(entity); + try { + Entities.unmanage(entity); + } catch (IllegalStateException e) { + //probably already unmanaged + LOG.debug("Exception during removing member of cluster " + this + ", unmanaging node " + entity + ". The node is probably already unmanaged.", e); + } } protected void stopAndRemoveNode(Entity member) { http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9ad0d8c8/software/base/src/test/java/brooklyn/entity/basic/lifecycle/StartStopSshDriverTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/brooklyn/entity/basic/lifecycle/StartStopSshDriverTest.java b/software/base/src/test/java/brooklyn/entity/basic/lifecycle/StartStopSshDriverTest.java index 2c64d38..3a9f4da 100644 --- a/software/base/src/test/java/brooklyn/entity/basic/lifecycle/StartStopSshDriverTest.java +++ b/software/base/src/test/java/brooklyn/entity/basic/lifecycle/StartStopSshDriverTest.java @@ -26,6 +26,7 @@ import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -43,6 +44,7 @@ import brooklyn.test.entity.TestApplicationImpl; import brooklyn.test.entity.TestEntity; import brooklyn.test.entity.TestEntityImpl; import brooklyn.util.collections.MutableList; +import brooklyn.util.collections.MutableSet; import brooklyn.util.internal.ssh.SshTool; import brooklyn.util.internal.ssh.cli.SshCliTool; import brooklyn.util.internal.ssh.sshj.SshjTool; @@ -52,8 +54,9 @@ import com.google.common.base.Function; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; -class StartStopSshDriverTest { +public class StartStopSshDriverTest { public class BasicStartStopSshDriver extends AbstractSoftwareProcessSshDriver { public BasicStartStopSshDriver(EntityLocal entity, SshMachineLocation machine) { @@ -113,10 +116,10 @@ class StartStopSshDriverTest { @Override public void run() { List<ThreadInfo> currentThreads = getThreadsCalling(StreamGobbler.class); - List<Long> currentThreadIds = getThreadId(currentThreads); + Collection<Long> currentThreadIds = MutableSet.copyOf(getThreadId(currentThreads)); currentThreadIds.removeAll(existingThreadIds); - assertEquals(currentThreadIds, ImmutableList.<Long>of()); + assertEquals(currentThreadIds, ImmutableSet.<Long>of()); } }); } http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9ad0d8c8/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java b/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java index 944f286..00586fd 100644 --- a/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java +++ b/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java @@ -47,6 +47,7 @@ import brooklyn.entity.Entity; import brooklyn.entity.basic.BasicApplication; import brooklyn.entity.basic.BasicApplicationImpl; import brooklyn.entity.basic.Entities; +import brooklyn.entity.basic.EntityLocal; import brooklyn.entity.basic.SoftwareProcess.StopSoftwareParameters.StopMode; import brooklyn.entity.brooklynnode.BrooklynNode.DeployBlueprintEffector; import brooklyn.entity.brooklynnode.BrooklynNode.ExistingFileBehaviour; @@ -507,10 +508,16 @@ services: assertTrue(Entities.isManaged(brooklynNode)); assertFalse(isPidRunning(pidFile), "pid in "+pidFile+" still running"); + // Clear the startup app so it's not started second time, in addition to the rebind state + // TODO remove this once the startup app is created only if no previous persistence state + brooklynNode.config().set(BrooklynNode.APP, (String)null); + ((EntityLocal)brooklynNode).setAttribute(BrooklynNode.APP, null); + // Restart the process; expect persisted state to have been restored, so apps still known about brooklynNode.invoke(BrooklynNode.RESTART, ImmutableMap.<String, Object>of( BrooklynNode.RestartSoftwareParameters.RESTART_MACHINE.getName(), "false")).getUnchecked(); + waitForApps(webConsoleUri.toString()); String apps = HttpTestUtils.getContent(webConsoleUri.toString()+"/v1/applications"); List<String> appType = parseJsonList(apps, ImmutableList.of("spec", "type"), String.class); assertEquals(appType, ImmutableList.of(BasicApplication.class.getName())); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9ad0d8c8/usage/launcher/src/main/java/brooklyn/launcher/BrooklynLauncher.java ---------------------------------------------------------------------- diff --git a/usage/launcher/src/main/java/brooklyn/launcher/BrooklynLauncher.java b/usage/launcher/src/main/java/brooklyn/launcher/BrooklynLauncher.java index 56337b7..7b1d437 100644 --- a/usage/launcher/src/main/java/brooklyn/launcher/BrooklynLauncher.java +++ b/usage/launcher/src/main/java/brooklyn/launcher/BrooklynLauncher.java @@ -623,6 +623,7 @@ public class BrooklynLauncher { // Allow the startup to be visible in console for newly created apps. ((LocalManagementContext)managementContext).noteStartupComplete(); + // TODO create apps only after becoming master, analogously to catalog initialization try { createApps(); startApps();
