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
