diff options
Diffstat (limited to 'appc-adapters/appc-chef-adapter')
5 files changed, 137 insertions, 42 deletions
diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml index 09c2019d3..b18073810 100644 --- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml +++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml @@ -152,6 +152,10 @@ <artifactId>junit</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + </dependency> <dependency> <groupId>org.onap.ccsdk.sli.core</groupId> diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefActivator.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefActivator.java index 963b78aae..a2eadfa63 100644 --- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefActivator.java +++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefActivator.java @@ -9,28 +9,28 @@ * Licensed 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. - * + * * ECOMP is a trademark and service mark of AT&T Intellectual Property. * ============LICENSE_END========================================================= */ package org.onap.appc.adapter.chef; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; import org.onap.appc.Constants; import org.onap.appc.adapter.chef.impl.ChefAdapterImpl; import org.onap.appc.configuration.Configuration; import org.onap.appc.configuration.ConfigurationFactory; import org.onap.appc.i18n.Msg; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; @@ -55,8 +55,9 @@ import org.osgi.framework.ServiceRegistration; */ public class ChefActivator implements BundleActivator { + private static final EELFLogger logger = EELFManager.getInstance().getLogger(ChefActivator.class); private static final String NAME = "APPC Chef Adapter"; - private static final String CHEF_ADAPTER_STR = "CHEF adapter"; + private static final String ADAPTER_NAME = "CHEF adapter"; /** * The bundle registration @@ -69,14 +70,9 @@ public class ChefActivator implements BundleActivator { private ChefAdapter adapter; /** - * The logger to be used - */ - private final EELFLogger logger = EELFManager.getInstance().getLogger(ChefActivator.class); - - /** * The configuration object used to configure this bundle */ - private Configuration configuration; + private Configuration configuration = ConfigurationFactory.getConfiguration(); /** * Called when this bundle is started so the Framework can perform the bundle-specific activities necessary to start @@ -84,7 +80,7 @@ public class ChefActivator implements BundleActivator { * <p> * This method must complete and return to its caller in a timely manner. * </p> - * + * * @param context * The execution context of the bundle being started. * @throws java.lang.Exception @@ -97,17 +93,16 @@ public class ChefActivator implements BundleActivator { public void start(BundleContext context) throws Exception { logger.info("Starting bundle " + NAME); - configuration = ConfigurationFactory.getConfiguration(); - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - logger.info(Msg.COMPONENT_INITIALIZING, appName, "chef adapter"); - adapter = new ChefAdapterImpl(configuration.getProperties()); + String appName = readApplicationNameFromProperties(); + logger.info(Msg.COMPONENT_INITIALIZING, appName, ADAPTER_NAME); + adapter = new ChefAdapterImpl(); if (registration == null) { - logger.info(Msg.REGISTERING_SERVICE, appName, adapter.getAdapterName(), + logger.info(Msg.REGISTERING_SERVICE, appName, ADAPTER_NAME, ChefAdapter.class.getSimpleName()); registration = context.registerService(ChefAdapter.class, adapter, null); } - logger.info(Msg.COMPONENT_INITIALIZED, appName, CHEF_ADAPTER_STR); + logger.info(Msg.COMPONENT_INITIALIZED, appName, ADAPTER_NAME); } /** @@ -118,7 +113,7 @@ public class ChefActivator implements BundleActivator { * <p> * This method must complete and return to its caller in a timely manner. * </p> - * + * * @param context * The execution context of the bundle being stopped. * @throws java.lang.Exception @@ -132,13 +127,16 @@ public class ChefActivator implements BundleActivator { logger.info("Stopping bundle " + NAME); if (registration != null) { - String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); - logger.info(Msg.COMPONENT_TERMINATING, appName, CHEF_ADAPTER_STR); - logger.info(Msg.UNREGISTERING_SERVICE, appName, adapter.getAdapterName()); + String appName = readApplicationNameFromProperties(); + logger.info(Msg.COMPONENT_TERMINATING, appName, ADAPTER_NAME); + logger.info(Msg.UNREGISTERING_SERVICE, appName, ADAPTER_NAME); registration.unregister(); registration = null; - logger.info(Msg.COMPONENT_TERMINATED, appName, CHEF_ADAPTER_STR); + logger.info(Msg.COMPONENT_TERMINATED, appName, ADAPTER_NAME); } } + private String readApplicationNameFromProperties() { + return configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); + } } diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefAdapter.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefAdapter.java index f113557ec..ea60ba81a 100644 --- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefAdapter.java +++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefAdapter.java @@ -186,13 +186,6 @@ public interface ChefAdapter extends SvcLogicJavaPlugin { */ // Server rebuildServer(Map<String, String> properties, SvcLogicContext context) throws APPCException; - /** - * Returns the symbolic name of the adapter - * - * @return The adapter name - */ - String getAdapterName(); - // Server evacuateServer(Map<String, String> params, SvcLogicContext ctx) throws APPCException; //Server migrateServer(Map<String, String> params, SvcLogicContext ctx) throws APPCException; diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/impl/ChefAdapterImpl.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/impl/ChefAdapterImpl.java index dfc762f40..f1f9f258a 100644 --- a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/impl/ChefAdapterImpl.java +++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/impl/ChefAdapterImpl.java @@ -139,17 +139,6 @@ public class ChefAdapterImpl implements ChefAdapter { initialize(); } - /** - * Returns the symbolic name of the adapter - * - * @return The adapter name - * @see org.onap.appc.adapter.chef.ChefAdapter#getAdapterName() - */ - @Override - public String getAdapterName() { - return "chef adapter"; - } - @SuppressWarnings("nls") @Override public void vnfcEnvironment(Map<String, String> params, SvcLogicContext ctx) throws SvcLogicException { diff --git a/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/ChefActivatorTest.java b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/ChefActivatorTest.java new file mode 100644 index 000000000..b261a77e9 --- /dev/null +++ b/appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/ChefActivatorTest.java @@ -0,0 +1,111 @@ +/* + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2018 Nokia. All rights reserved. + * ============================================================================= + * Licensed 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.adapter.chef; + +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.Matchers.eq; +import static org.mockito.Matchers.isA; +import static org.mockito.Matchers.isNull; +import static org.mockito.Mockito.only; + +import java.util.Dictionary; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.onap.appc.adapter.chef.impl.ChefAdapterImpl; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; + +@RunWith(MockitoJUnitRunner.class) +public class ChefActivatorTest { + + @Mock + private ServiceRegistration<ChefAdapter> serviceRegistration; + @Mock + private BundleContext bundleContext; + + private ChefActivator chefActivator = new ChefActivator(); + + @Before + public void setUp() { + given(bundleContext.registerService(eq(ChefAdapter.class), isA(ChefAdapterImpl.class), isNull( + Dictionary.class))).willReturn(serviceRegistration); + } + + @Test + public void start_shouldRegisterService_whenRegistrationOccursForTheFirstTime() throws Exception { + registerService(); + + then(bundleContext).should(only()) + .registerService(eq(ChefAdapter.class), isA(ChefAdapterImpl.class), isNull( + Dictionary.class)); + } + + @Test + public void start_shouldRegisterServiceOnlyOnce_whenServiceRegistrationIsNotNull() throws Exception { + // GIVEN + registerService(); + + // WHEN + registerService(); + + // THEN + then(bundleContext).should(only()).registerService(eq(ChefAdapter.class), isA(ChefAdapterImpl.class), isNull( + Dictionary.class)); + } + + @Test + public void stop_shouldUnregisterService_whenServiceRegistrationObjectIsNotNull() throws Exception { + // GIVEN + registerService(); + + // WHEN + unregisterService(); + + // THEN + then(serviceRegistration).should().unregister(); + } + + @Test + public void stop_shouldNotAttemptToUnregisterService_whenServiceHasAlreadyBeenUnregistered() + throws Exception { + // GIVEN + registerService(); + unregisterService(); + + // WHEN + unregisterService(); + + // THEN + then(serviceRegistration).should(only()).unregister(); + } + + private void registerService() throws Exception { + chefActivator.start(bundleContext); + } + + private void unregisterService() throws Exception { + chefActivator.stop(bundleContext); + } +}
\ No newline at end of file |