Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master 8ad732c84 -> 3559b5d6d


Adds test to ensure catalog is not re-populated with defaults on rebind


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/10a10e56
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/10a10e56
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/10a10e56

Branch: refs/heads/master
Commit: 10a10e566e2683ee6321b2b2c52f2a097c91a3b3
Parents: 8df4cdf
Author: Martin Harris <[email protected]>
Authored: Wed Jun 24 14:58:38 2015 +0100
Committer: Martin Harris <[email protected]>
Committed: Fri Jun 26 11:17:19 2015 +0100

----------------------------------------------------------------------
 .../BrooklynLauncherRebindCatalogTest.java      | 102 +++++++++++++++++++
 .../resources/rebind-test-catalog-additions.bom |  32 ++++++
 .../src/test/resources/rebind-test-catalog.bom  |  32 ++++++
 3 files changed, 166 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/10a10e56/usage/launcher/src/test/java/brooklyn/launcher/BrooklynLauncherRebindCatalogTest.java
----------------------------------------------------------------------
diff --git 
a/usage/launcher/src/test/java/brooklyn/launcher/BrooklynLauncherRebindCatalogTest.java
 
b/usage/launcher/src/test/java/brooklyn/launcher/BrooklynLauncherRebindCatalogTest.java
new file mode 100644
index 0000000..8cf5354
--- /dev/null
+++ 
b/usage/launcher/src/test/java/brooklyn/launcher/BrooklynLauncherRebindCatalogTest.java
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package brooklyn.launcher;
+
+import java.io.File;
+import java.util.Collection;
+
+import javax.annotation.Nullable;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import brooklyn.catalog.BrooklynCatalog;
+import brooklyn.catalog.CatalogItem;
+import brooklyn.catalog.internal.CatalogInitialization;
+import brooklyn.entity.rebind.persister.PersistMode;
+import brooklyn.test.entity.LocalManagementContextForTests;
+import brooklyn.util.ResourceUtils;
+import brooklyn.util.os.Os;
+
+import com.google.common.base.Function;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+import com.google.common.io.Files;
+
+public class BrooklynLauncherRebindCatalogTest {
+
+    private static final String TEST_VERSION = "test-version";
+    private static final String CATALOG_INITIAL = 
"classpath://rebind-test-catalog.bom";
+    private static final String CATALOG_ADDITIONS = 
"rebind-test-catalog-additions.bom";
+    private static final Iterable<String> EXPECTED_DEFAULT_IDS = 
ImmutableSet.of("one:" + TEST_VERSION, "two:" + TEST_VERSION);
+    private static final Iterable<String> EXPECTED_ADDED_IDS = 
ImmutableSet.of("three:" + TEST_VERSION, "four:" + TEST_VERSION);
+
+    private BrooklynLauncher newLauncherForTests(String persistenceDir) {
+        CatalogInitialization catalogInitialization = new 
CatalogInitialization(CATALOG_INITIAL, false, null, false);
+        BrooklynLauncher launcher = BrooklynLauncher.newInstance()
+                
.brooklynProperties(LocalManagementContextForTests.builder(true).buildProperties())
+                .catalogInitialization(catalogInitialization)
+                .persistMode(PersistMode.AUTO)
+                .persistenceDir(persistenceDir);
+        return launcher;
+    }
+
+    @Test
+    public void testRebindDoesNotEffectCatalog() {
+        String persistenceDir = newTempPersistenceContainerName();
+
+        BrooklynLauncher launcher = newLauncherForTests(persistenceDir);
+        launcher.start();
+        BrooklynCatalog catalog = 
launcher.getServerDetails().getManagementContext().getCatalog();
+
+        assertCatalogConsistsOfIds(catalog.getCatalogItems(), 
EXPECTED_DEFAULT_IDS);
+
+        catalog.deleteCatalogItem("one", TEST_VERSION);
+        catalog.deleteCatalogItem("two", TEST_VERSION);
+
+        Assert.assertEquals(((Collection) catalog.getCatalogItems()).size(), 
0);
+
+        catalog.addItems(new 
ResourceUtils(this).getResourceAsString(CATALOG_ADDITIONS));
+
+        assertCatalogConsistsOfIds(catalog.getCatalogItems(), 
EXPECTED_ADDED_IDS);
+
+        launcher.terminate();
+
+        BrooklynLauncher newLauncher = newLauncherForTests(persistenceDir);
+        newLauncher.start();
+        
assertCatalogConsistsOfIds(newLauncher.getServerDetails().getManagementContext().getCatalog().getCatalogItems(),
 EXPECTED_ADDED_IDS);
+    }
+
+    private void assertCatalogConsistsOfIds(Iterable<CatalogItem<Object, 
Object>> catalogItems, Iterable<String> ids) {
+        Iterable<String> idsFromItems = Iterables.transform(catalogItems, new 
Function<CatalogItem<?,?>, String>() {
+            @Nullable
+            @Override
+            public String apply(CatalogItem<?, ?> catalogItem) {
+                return catalogItem.getCatalogItemId();
+            }
+        });
+        Assert.assertTrue(Iterables.elementsEqual(ids, idsFromItems), 
String.format("Expected %s, found %s", ids, idsFromItems));
+    }
+
+    protected String newTempPersistenceContainerName() {
+        File persistenceDirF = Files.createTempDir();
+        Os.deleteOnExitRecursively(persistenceDirF);
+        return persistenceDirF.getAbsolutePath();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/10a10e56/usage/launcher/src/test/resources/rebind-test-catalog-additions.bom
----------------------------------------------------------------------
diff --git 
a/usage/launcher/src/test/resources/rebind-test-catalog-additions.bom 
b/usage/launcher/src/test/resources/rebind-test-catalog-additions.bom
new file mode 100644
index 0000000..8c460c8
--- /dev/null
+++ b/usage/launcher/src/test/resources/rebind-test-catalog-additions.bom
@@ -0,0 +1,32 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#  http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+brooklyn.catalog:
+  version: test-version
+  items:
+
+  # Do not scan classpath with for classes with a @Catalog annotation
+  - scanJavaAnnotations: false
+
+  - id: three
+    item:
+      type: brooklyn.entity.basic.EmptySoftwareProcess
+
+  - id: four
+    item:
+      type: brooklyn.entity.basic.VanillaSoftwareProcess
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/10a10e56/usage/launcher/src/test/resources/rebind-test-catalog.bom
----------------------------------------------------------------------
diff --git a/usage/launcher/src/test/resources/rebind-test-catalog.bom 
b/usage/launcher/src/test/resources/rebind-test-catalog.bom
new file mode 100644
index 0000000..cb3b4dc
--- /dev/null
+++ b/usage/launcher/src/test/resources/rebind-test-catalog.bom
@@ -0,0 +1,32 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#  http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+brooklyn.catalog:
+  version: test-version
+  items:
+
+  # Do not scan classpath with for classes with a @Catalog annotation
+  - scanJavaAnnotations: false
+
+  - id: one
+    item:
+      type: brooklyn.entity.basic.EmptySoftwareProcess
+
+  - id: two
+    item:
+      type: brooklyn.entity.basic.VanillaSoftwareProcess
\ No newline at end of file

Reply via email to