Make testPersistsSingleCopyOfInitialCatalogOnHotStandbyPromotion more robust


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/8a2d51ea
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/8a2d51ea
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/8a2d51ea

Branch: refs/heads/master
Commit: 8a2d51eadac445d24e4b3b05b55b6c0478d0a058
Parents: 03f254f
Author: Aled Sage <[email protected]>
Authored: Fri Oct 27 16:54:45 2017 +0100
Committer: Aled Sage <[email protected]>
Committed: Fri Oct 27 20:44:54 2017 +0100

----------------------------------------------------------------------
 .../BrooklynLauncherRebindCatalogOsgiTest.java  | 25 ++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/8a2d51ea/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherRebindCatalogOsgiTest.java
----------------------------------------------------------------------
diff --git 
a/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherRebindCatalogOsgiTest.java
 
b/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherRebindCatalogOsgiTest.java
index e953c8d..e9c7a07 100644
--- 
a/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherRebindCatalogOsgiTest.java
+++ 
b/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherRebindCatalogOsgiTest.java
@@ -26,6 +26,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -33,6 +34,7 @@ import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.api.mgmt.ha.HighAvailabilityMode;
 import org.apache.brooklyn.api.mgmt.ha.ManagementNodeState;
 import org.apache.brooklyn.api.objs.BrooklynObjectType;
+import org.apache.brooklyn.api.typereg.ManagedBundle;
 import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
 import org.apache.brooklyn.core.catalog.internal.CatalogInitialization;
 import org.apache.brooklyn.core.mgmt.ha.OsgiBundleInstallationResult;
@@ -42,6 +44,7 @@ import org.apache.brooklyn.core.mgmt.rebind.RebindTestUtils;
 import org.apache.brooklyn.test.Asserts;
 import org.apache.brooklyn.test.support.TestResourceUnavailableException;
 import org.apache.brooklyn.util.core.osgi.Osgis;
+import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.apache.brooklyn.util.exceptions.ReferenceWithError;
 import org.apache.brooklyn.util.os.Os;
 import org.apache.brooklyn.util.osgi.OsgiTestResources;
@@ -527,6 +530,8 @@ public class BrooklynLauncherRebindCatalogOsgiTest extends 
AbstractBrooklynLaunc
 
         // Second launcher goes into hot-standby, and will thus rebind 
periodically.
         // When we terminate the first launcher, it will be promoted to master 
automatically.
+        // However, we'll say state="master" before we've fully initialised, 
so need to use
+        // assert-eventually.
         BrooklynLauncher launcher2 = 
newLauncherForTests(initialBomFile.getAbsolutePath())
                 .highAvailabilityMode(HighAvailabilityMode.HOT_STANDBY);
         launcher2.start();
@@ -534,9 +539,25 @@ public class BrooklynLauncherRebindCatalogOsgiTest extends 
AbstractBrooklynLaunc
         
         launcher.terminate();
         assertMasterEventually(launcher2);
-        String bundlePersistenceId2 = findManagedBundle(launcher2, 
bundleName).getId();
+        assertPersistedBundleListingEqualsEventually(launcher2, 
ImmutableSet.of(bundleName));
         launcher2.terminate();
-        assertEquals(getPersistenceListing(BrooklynObjectType.MANAGED_BUNDLE), 
ImmutableSet.of(bundlePersistenceId2));
+    }
+    
+    private void assertPersistedBundleListingEqualsEventually(BrooklynLauncher 
launcher, Set<VersionedName> bundles) {
+        Asserts.succeedsEventually(new Runnable() {
+            @Override public void run() {
+                try {
+                    Set<String> expected = new LinkedHashSet<>();
+                    for (VersionedName bundle : bundles) {
+                        String bundleUid = findManagedBundle(launcher, 
bundle).getId();
+                        expected.add(bundleUid);
+                    }
+                    Set<String> persisted = 
getPersistenceListing(BrooklynObjectType.MANAGED_BUNDLE); 
+                    assertEquals(persisted, expected);
+                } catch (Exception e) {
+                    throw Exceptions.propagate(e);
+                }
+            }});
     }
 
     private void assertHotStandbyEventually(BrooklynLauncher launcher) {

Reply via email to