summaryrefslogtreecommitdiffstats
path: root/appc-adapters/appc-chef-adapter
diff options
context:
space:
mode:
Diffstat (limited to 'appc-adapters/appc-chef-adapter')
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml4
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefActivator.java46
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefAdapter.java7
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/impl/ChefAdapterImpl.java11
-rw-r--r--appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/ChefActivatorTest.java111
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