ChefActivator JUnits 53/30453/5
authorMichal Kabaj <michal.kabaj@nokia.com>
Tue, 6 Feb 2018 12:54:02 +0000 (13:54 +0100)
committerPatrick Brady <pb071s@att.com>
Wed, 7 Feb 2018 17:17:20 +0000 (17:17 +0000)
Add new JUnits for ChefActivator class, minor refactor + cleanup.
- Remove redundant getAdapterName() method from ChefAdapter to unify
adapter name constant definition

Change-Id: I483d34aaa0f4e76a4360b179f1a60cc1263ec9b7
Issue-ID: APPC-437
Signed-off-by: Michal Kabaj <michal.kabaj@nokia.com>
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/pom.xml
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefActivator.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/ChefAdapter.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/main/java/org/onap/appc/adapter/chef/impl/ChefAdapterImpl.java
appc-adapters/appc-chef-adapter/appc-chef-adapter-bundle/src/test/java/org/onap/appc/adapter/chef/ChefActivatorTest.java [new file with mode: 0644]

index 09c2019..b180738 100644 (file)
             <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>
index 963b78a..a2eadfa 100644 (file)
@@ -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
@@ -68,15 +69,10 @@ 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);
+    }
 }
index f113557..ea60ba8 100644 (file)
@@ -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;
index dfc762f..f1f9f25 100644 (file)
@@ -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 (file)
index 0000000..b261a77
--- /dev/null
@@ -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