You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2019/01/16 16:40:24 UTC
[brooklyn-server] 12/31: Coverage tests for existing
CatalogUpgrades.getBundleUpgradedIfNecessary()
This is an automated email from the ASF dual-hosted git repository.
aledsage pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
commit 8e91fbee540b1fec025606bacc4540ae8c2ea180
Author: Paul Campbell <pc...@kemitix.net>
AuthorDate: Thu Oct 18 11:16:58 2018 +0100
Coverage tests for existing CatalogUpgrades.getBundleUpgradedIfNecessary()
---
...ogUpgradesGetBundleUpgradedIfNecessaryTest.java | 219 +++++++++++++++++++++
1 file changed, 219 insertions(+)
diff --git a/core/src/test/java/org/apache/brooklyn/core/typereg/CatalogUpgradesGetBundleUpgradedIfNecessaryTest.java b/core/src/test/java/org/apache/brooklyn/core/typereg/CatalogUpgradesGetBundleUpgradedIfNecessaryTest.java
new file mode 100644
index 0000000..70cd926
--- /dev/null
+++ b/core/src/test/java/org/apache/brooklyn/core/typereg/CatalogUpgradesGetBundleUpgradedIfNecessaryTest.java
@@ -0,0 +1,219 @@
+/*
+ * 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 org.apache.brooklyn.core.typereg;
+
+import com.google.common.collect.ImmutableListMultimap;
+import org.apache.brooklyn.api.mgmt.ManagementContext;
+import org.apache.brooklyn.api.typereg.BrooklynTypeRegistry;
+import org.apache.brooklyn.api.typereg.ManagedBundle;
+import org.apache.brooklyn.core.mgmt.ha.OsgiManager;
+import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
+import org.apache.brooklyn.util.guava.Maybe;
+import org.apache.brooklyn.util.osgi.VersionedName;
+import org.assertj.core.api.WithAssertions;
+import org.mockito.Mockito;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import java.util.UUID;
+
+import static org.apache.brooklyn.core.typereg.BundleUpgradeParser.*;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.mock;
+
+public class CatalogUpgradesGetBundleUpgradedIfNecessaryTest implements WithAssertions {
+
+ private final ManagementContextInternal managementContext = mock(ManagementContextInternal.class);
+ private final OsgiManager osgiManager = mock(OsgiManager.class);
+ private final ManagedBundle managedBundle = mock(ManagedBundle.class);
+ private final BasicBrooklynTypeRegistry typeRegistry = mock(BasicBrooklynTypeRegistry.class);
+
+ private final String originalName = createAName("original", "1.0.0");
+ private final String updatedName = createAName("updated", "2.0.0");
+ private final VersionedName originalVersionedName = VersionedName.fromString(originalName);
+ private final VersionedName updatedVersionedName = VersionedName.fromString(updatedName);
+ private final VersionRangedName originalVersionRangedName =
+ VersionRangedName.fromString(originalName, true);
+
+ private CatalogUpgrades.Builder catalogUpgradesBuilder;
+
+ @BeforeMethod
+ public void setUp() {
+ Mockito.reset(managementContext, osgiManager, managedBundle, typeRegistry);
+ catalogUpgradesBuilder = CatalogUpgrades.builder();
+ }
+
+ @Test
+ public void whenContextIsNullThenNull() {
+ //given
+ final ManagementContext managementContext = null;
+ //when
+ final String result = CatalogUpgrades.getBundleUpgradedIfNecessary(managementContext, originalName);
+ //then
+ assertThat(result).isNull();
+ }
+
+ @Test
+ public void whenNameIsNullThenNull() {
+ //given
+ final String originalName = null;
+ //when
+ final String result = CatalogUpgrades.getBundleUpgradedIfNecessary(managementContext, originalName);
+ //then
+ assertThat(result).isNull();
+ }
+
+ @Test
+ public void whenNonOSGIEnvironmentThenOriginalName() {
+ //given
+ givenANonOsgiEnvironment(managementContext);
+ //when
+ final String result = CatalogUpgrades.getBundleUpgradedIfNecessary(managementContext, originalName);
+ //then
+ assertThat(result).isEqualTo(originalName);
+ }
+
+ @Test
+ public void whenAlreadyInstalledThenOriginalName() {
+ //given
+ givenAnOsgiEnvironment(managementContext, osgiManager);
+ givenBundleIsAlreadyInstalled(osgiManager, originalVersionedName, managedBundle);
+ //when
+ final String result = CatalogUpgrades.getBundleUpgradedIfNecessary(managementContext, originalName);
+ //then
+ assertThat(result).isEqualTo(originalName);
+ }
+
+ @Test
+ public void whenNotInstalledAndNoRenameFoundThenOriginalName() {
+ //given
+ givenAnOsgiEnvironment(managementContext, osgiManager);
+ givenBundleIsNotAlreadyInstalled(osgiManager, originalVersionedName);
+ givenNoRenameFound(managementContext, typeRegistry, catalogUpgradesBuilder);
+ //when
+ final String result = CatalogUpgrades.getBundleUpgradedIfNecessary(managementContext, originalName);
+ //then
+ assertThat(result).isEqualTo(originalName);
+ }
+
+ @Test
+ public void whenNotInstalledAndNoCatalogUpgradesThenOriginalName() {
+ //given
+ givenAnOsgiEnvironment(managementContext, osgiManager);
+ givenBundleIsNotAlreadyInstalled(osgiManager, originalVersionedName);
+ givenNoCatalogUpgrades(managementContext, typeRegistry);
+ //when
+ final String result = CatalogUpgrades.getBundleUpgradedIfNecessary(managementContext, originalName);
+ //then
+ assertThat(result).isEqualTo(originalName);
+ }
+
+ @Test
+ public void whenNotAlreadyInstalledAndRenameIsFoundThenUpdatedName() {
+ //given
+ givenAnOsgiEnvironment(managementContext, osgiManager);
+ givenBundleIsNotAlreadyInstalled(osgiManager, originalVersionedName);
+ givenRenameIsFound(managementContext, typeRegistry, catalogUpgradesBuilder,
+ updatedVersionedName, originalVersionRangedName);
+ //when
+ final String result = CatalogUpgrades.getBundleUpgradedIfNecessary(managementContext, originalName);
+ //then
+ assertThat(result).isEqualTo(updatedName);
+ }
+
+ private static void givenANonOsgiEnvironment(
+ final ManagementContextInternal managementContext
+ ) {
+ given(managementContext.getOsgiManager()).willReturn(Maybe.absent());
+ }
+
+ private static void givenNoRenameFound(
+ final ManagementContextInternal managementContext,
+ final BasicBrooklynTypeRegistry typeRegistry,
+ final CatalogUpgrades.Builder catalogUpgradesBuilder
+ ) {
+ givenCatalogUpgrades(managementContext, typeRegistry, catalogUpgradesBuilder);
+ }
+
+ private static void givenRenameIsFound(
+ final ManagementContextInternal managementContext,
+ final BasicBrooklynTypeRegistry typeRegistry,
+ final CatalogUpgrades.Builder catalogUpgradesBuilder,
+ final VersionedName updatedVersionedName,
+ final VersionRangedName originalVersionRangedName
+ ) {
+ catalogUpgradesBuilder.upgradeBundles(
+ ImmutableListMultimap.of(updatedVersionedName, originalVersionRangedName));
+ givenCatalogUpgrades(managementContext, typeRegistry, catalogUpgradesBuilder);
+ }
+
+ private static void givenNoCatalogUpgrades(
+ final ManagementContextInternal managementContext,
+ final BasicBrooklynTypeRegistry typeRegistry
+ ) {
+ givenManagementContextHasTypeRegistry(managementContext, typeRegistry);
+ given(typeRegistry.getCatalogUpgradesInstructions()).willReturn(null);
+ }
+
+ private static void givenCatalogUpgrades(
+ final ManagementContextInternal managementContext,
+ final BasicBrooklynTypeRegistry typeRegistry,
+ final CatalogUpgrades.Builder catalogUpgradesBuilder
+ ) {
+ givenManagementContextHasTypeRegistry(managementContext, typeRegistry);
+ given(typeRegistry.getCatalogUpgradesInstructions()).willReturn(catalogUpgradesBuilder.build());
+ }
+
+ private static void givenManagementContextHasTypeRegistry(
+ final ManagementContextInternal managementContext,
+ final BrooklynTypeRegistry typeRegistry
+ ) {
+ given(managementContext.getTypeRegistry()).willReturn(typeRegistry);
+ }
+
+ private static void givenBundleIsAlreadyInstalled(
+ final OsgiManager osgiManager,
+ final VersionedName originalVersionedName,
+ final ManagedBundle managedBundle
+ ) {
+ given(osgiManager.getManagedBundle(originalVersionedName)).willReturn(managedBundle);
+ }
+
+ private static void givenBundleIsNotAlreadyInstalled(
+ final OsgiManager osgiManager,
+ final VersionedName originalVersionedName
+ ) {
+ given(osgiManager.getManagedBundle(originalVersionedName)).willReturn(null);
+ }
+
+ private static void givenAnOsgiEnvironment(
+ final ManagementContextInternal managementContext,
+ final OsgiManager osgiManager
+ ) {
+ given(managementContext.getOsgiManager()).willReturn(Maybe.of(osgiManager));
+ }
+
+ private static String createAName(
+ final String prefix,
+ final String version
+ ) {
+ return prefix + ":" + version;
+ }
+
+}
\ No newline at end of file