Sonar coverage - GenericResourceApi provider 35/18835/1
authorbeili.zhou <beili.zhou@amdocs.com>
Fri, 13 Oct 2017 21:25:05 +0000 (17:25 -0400)
committerbeili.zhou <beili.zhou@amdocs.com>
Fri, 13 Oct 2017 21:25:18 +0000 (17:25 -0400)
Add Junit test case for GenericResourceApiSvcLogicServiceClient
In GenericResourceApiSvcLogicServiceClient:
  - Fix sonarlint issues (remove un-used import and etc)
  - Changed tab to 4 spaces as per ONAP Java code style

Issue-Id: SDNC-101
Change-Id: I789d20a749f8daa4d6b626fedef6a9bb904bae2e
Signed-off-by: beili.zhou <beili.zhou@amdocs.com>
generic-resource-api/provider/src/main/java/org/onap/sdnc/northbound/GenericResourceApiSvcLogicServiceClient.java
generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/GenericResourceApiSvcLogicServiceClientTest.java [new file with mode: 0644]

index e5be5e3..8ba70de 100644 (file)
-package org.onap.sdnc.northbound;
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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=========================================================
+ */
 
-import java.util.Properties;
+package org.onap.sdnc.northbound;
 
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.onap.ccsdk.sli.core.sli.provider.SvcLogicService;
 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.preload.data.PreloadDataBuilder;
 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.data.ServiceDataBuilder;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class GenericResourceApiSvcLogicServiceClient {
-
-       private static final Logger LOG = LoggerFactory
-                       .getLogger(GenericResourceApiSvcLogicServiceClient.class);
-
-       private SvcLogicService svcLogic = null;
-
-       public GenericResourceApiSvcLogicServiceClient(SvcLogicService svcLogic)
-       {
-               this.svcLogic = svcLogic;
-       }
-
-       public boolean hasGraph(String module, String rpc, String version, String mode) throws SvcLogicException
-       {
-               return(svcLogic.hasGraph(module, rpc, version, mode));
-       }
-
-       public Properties execute(String module, String rpc, String version, String mode, ServiceDataBuilder serviceData)
-                       throws SvcLogicException {
-
-               Properties parms = new Properties();
-
-               return execute(module,rpc,version, mode,serviceData,parms);
-       }
-
-       public Properties execute(String module, String rpc, String version, String mode, PreloadDataBuilder serviceData)
-                       throws SvcLogicException {
-
-               Properties parms = new Properties();
-
-               return execute(module,rpc,version, mode,serviceData,parms);
-       }
-
-
-       public Properties execute(String module, String rpc, String version, String mode, ServiceDataBuilder serviceData, Properties parms)
-                               throws SvcLogicException {
-
-               parms = GenericResourceApiUtil.toProperties(parms, serviceData);
-
-               if (LOG.isDebugEnabled())
-               {
-                       LOG.debug("Parameters passed to SLI");
-
-                       for (Object key : parms.keySet()) {
-                               String parmName = (String) key;
-                               String parmValue = parms.getProperty(parmName);
-
-                               LOG.debug(parmName+" = "+parmValue);
-
-                       }
-               }
-
-
-               Properties respProps = svcLogic.execute(module, rpc, version, mode, parms);
-
-
-               if (LOG.isDebugEnabled())
-               {
-                       LOG.debug("Parameters returned by SLI");
-
-                       for (Object key : respProps.keySet()) {
-                               String parmName = (String) key;
-                               String parmValue = respProps.getProperty(parmName);
-
-                               LOG.debug(parmName+" = "+parmValue);
-
-                       }
-               }
-               if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) {
-                       return (respProps);
-               }
-
-               GenericResourceApiUtil.toBuilder(respProps, serviceData);
-
-               return (respProps);
-       }
-
-
-       public Properties execute(String module, String rpc, String version, String mode, PreloadDataBuilder serviceData, Properties parms)
-                               throws SvcLogicException {
-
-               parms = GenericResourceApiUtil.toProperties(parms, serviceData);
-
-               if (LOG.isDebugEnabled())
-               {
-                       LOG.debug("Parameters passed to SLI");
-
-                       for (Object key : parms.keySet()) {
-                               String parmName = (String) key;
-                               String parmValue = parms.getProperty(parmName);
-
-                               LOG.debug(parmName+" = "+parmValue);
-
-                       }
-               }
-
-               Properties respProps = svcLogic.execute(module, rpc, version, mode, parms);
-
-               if (LOG.isDebugEnabled())
-               {
-                       LOG.debug("Parameters returned by SLI");
-
-                       for (Object key : respProps.keySet()) {
-                               String parmName = (String) key;
-                               String parmValue = respProps.getProperty(parmName);
-
-                               LOG.debug(parmName+" = "+parmValue);
-
-                       }
-               }
-               if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) {
-                       return (respProps);
-               }
-
-               GenericResourceApiUtil.toBuilder(respProps, serviceData);
+import java.util.Properties;
 
-               return (respProps);
-       }
+public class GenericResourceApiSvcLogicServiceClient {
+    static final String FAILURE_RESULT = "failure";
+    static final String SVC_LOGIC_STATUS_KEY = "SvcLogic.status";
+
+    private final Logger LOG = LoggerFactory
+            .getLogger(GenericResourceApiSvcLogicServiceClient.class);
+
+    private SvcLogicService svcLogic = null;
+
+    public GenericResourceApiSvcLogicServiceClient(SvcLogicService svcLogic)
+    {
+        this.svcLogic = svcLogic;
+    }
+
+    public boolean hasGraph(String module, String rpc, String version, String mode) throws SvcLogicException
+    {
+        return svcLogic.hasGraph(module, rpc, version, mode);
+    }
+
+    public Properties execute(String module, String rpc, String version, String mode, ServiceDataBuilder serviceData)
+            throws SvcLogicException {
+        return execute(module, rpc, version, mode, serviceData, new Properties());
+    }
+
+    public Properties execute(String module, String rpc, String version, String mode, PreloadDataBuilder serviceData)
+            throws SvcLogicException {
+        return execute(module, rpc, version, mode, serviceData, new Properties());
+    }
+
+    public Properties execute(String module,
+                              String rpc,
+                              String version,
+                              String mode,
+                              ServiceDataBuilder serviceData,
+                              Properties properties)
+            throws SvcLogicException {
+
+        Properties props = GenericResourceApiUtil.toProperties(properties, serviceData);
+        printPropsDebugLogs(props, "Parameters passed to SLI");
+
+        Properties respProps = svcLogic.execute(module, rpc, version, mode, props);
+        printPropsDebugLogs(respProps, "Parameters returned by SLI");
+        if (respProps == null
+                || FAILURE_RESULT.equalsIgnoreCase(respProps.getProperty(SVC_LOGIC_STATUS_KEY))) {
+            return respProps;
+        }
+
+        GenericResourceApiUtil.toBuilder(respProps, serviceData);
+
+        return respProps;
+    }
+
+
+    public Properties execute(String module,
+                              String rpc,
+                              String version,
+                              String mode,
+                              PreloadDataBuilder serviceData,
+                              Properties properties)
+            throws SvcLogicException {
+
+        Properties props = GenericResourceApiUtil.toProperties(properties, serviceData);
+        printPropsDebugLogs(props, "Parameters passed to SLI");
+
+        Properties respProps = svcLogic.execute(module, rpc, version, mode, props);
+        printPropsDebugLogs(respProps, "Parameters returned by SLI");
+        if (respProps == null
+                || FAILURE_RESULT.equalsIgnoreCase(respProps.getProperty(SVC_LOGIC_STATUS_KEY))) {
+            return (respProps);
+        }
+
+        GenericResourceApiUtil.toBuilder(respProps, serviceData);
+
+        return respProps;
+    }
+
+    private void printPropsDebugLogs(Properties properties, String msg) {
+        if (!LOG.isDebugEnabled()) {
+            return;
+        }
+        if (properties == null) {
+            LOG.debug(msg, "properties is null");
+            return;
+        }
+
+        LOG.debug(msg);
+        for (Object key : properties.keySet()) {
+            String paramName = (String) key;
+            LOG.debug(paramName, " = ", properties.getProperty(paramName));
+        }
+    }
 }
diff --git a/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/GenericResourceApiSvcLogicServiceClientTest.java b/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/GenericResourceApiSvcLogicServiceClientTest.java
new file mode 100644 (file)
index 0000000..cb82709
--- /dev/null
@@ -0,0 +1,205 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.sdnc.northbound;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.mockito.internal.util.reflection.Whitebox;
+import org.onap.ccsdk.sli.core.sli.SvcLogicException;
+import org.onap.ccsdk.sli.core.sli.provider.SvcLogicService;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.preload.data.PreloadDataBuilder;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.data.ServiceDataBuilder;
+import org.slf4j.Logger;
+
+import java.util.Properties;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.*;
+
+public class GenericResourceApiSvcLogicServiceClientTest {
+    private static final String MODE = "mode";
+    private static final String MODULE = "module";
+    private static final String RPC = "rpc";
+    private static final String VERSION = "version";
+
+    private Logger mockLog = mock(Logger.class);
+    private SvcLogicService mockSvcLogic = mock(SvcLogicService.class);
+
+    private GenericResourceApiSvcLogicServiceClient svcClient;
+
+    @Before
+    public void setUp() throws Exception {
+        svcClient = spy(new GenericResourceApiSvcLogicServiceClient(mockSvcLogic));
+
+        Whitebox.setInternalState(svcClient, "LOG", mockLog);
+        Whitebox.setInternalState(svcClient, "svcLogic", mockSvcLogic);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+    }
+
+    @Test
+    public void testConstructorWithoutSvcLogicBundle() throws Exception {
+        GenericResourceApiSvcLogicServiceClient client = new GenericResourceApiSvcLogicServiceClient(mockSvcLogic);
+        Assert.assertEquals("Should have set mockSvcLogic",
+                mockSvcLogic, Whitebox.getInternalState(client, "svcLogic"));
+    }
+
+    @Test (expected = SvcLogicException.class)
+    public void testHasGraphWithException() throws Exception {
+        Mockito.doThrow(new SvcLogicException()).when(mockSvcLogic).hasGraph(MODULE, RPC, VERSION, MODE);
+        svcClient.hasGraph(MODULE, RPC, VERSION, MODE);
+    }
+
+    @Test
+    public void testHasGraph() throws Exception {
+        Mockito.doReturn(true).when(mockSvcLogic).hasGraph(MODULE, RPC, VERSION, MODE);
+        Assert.assertTrue("Should return true", svcClient.hasGraph(MODULE, RPC, VERSION, MODE));
+    }
+
+    @Test (expected = SvcLogicException.class)
+    public void testExecuteWithServiceDataBuilderWithException() throws Exception {
+        ServiceDataBuilder mockBuilder = mock(ServiceDataBuilder.class);
+        Mockito.doThrow(new SvcLogicException()).when(mockSvcLogic).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class), any(Properties.class));
+
+        svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder);
+    }
+
+
+    @Test
+    public void testExecuteWithServiceDataBuilder() throws Exception {
+        ServiceDataBuilder mockBuilder = mock(ServiceDataBuilder.class);
+        svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder);
+        Mockito.verify(svcClient, times(1)).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class),
+                any(ServiceDataBuilder.class), any(Properties.class));
+    }
+
+    @Test (expected = SvcLogicException.class)
+    public void testExecuteWithPreloadDataBuilderWithException() throws Exception {
+        PreloadDataBuilder  mockBuilder = mock(PreloadDataBuilder.class);
+        Mockito.doThrow(new SvcLogicException()).when(mockSvcLogic).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class), any(Properties.class));
+
+        svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder);
+    }
+
+
+    @Test
+    public void testExecuteWithPreloadDataBuilder () throws Exception {
+        PreloadDataBuilder  mockBuilder = mock(PreloadDataBuilder.class);
+        svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder);
+        Mockito.verify(svcClient, times(1)).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class),
+                any(PreloadDataBuilder .class), any(Properties.class));
+    }
+
+    @Test (expected = SvcLogicException.class)
+    public void testParamExecuteWithServiceDataBuilderWithException() throws Exception {
+        ServiceDataBuilder mockBuilder = mock(ServiceDataBuilder.class);
+        Mockito.doThrow(new SvcLogicException()).when(mockSvcLogic).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class), any(Properties.class));
+
+        svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder, new Properties());
+    }
+
+    @Test
+    public void testParamExecuteWithServiceDataBuilderWithExecutorReturnNull() throws Exception {
+        ServiceDataBuilder mockBuilder = mock(ServiceDataBuilder.class);
+        Properties properties = svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder, new Properties());
+        Assert.assertTrue("Should return null", properties == null);
+        Mockito.verify(mockSvcLogic, times(1)).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class), any(Properties.class));
+    }
+
+    @Test
+    public void testParamExecuteWithServiceDataBuilderWithExecutorReturnFailure() throws Exception {
+        ServiceDataBuilder mockBuilder = mock(ServiceDataBuilder.class);
+        Properties resultProps = new Properties();
+        resultProps.setProperty(GenericResourceApiSvcLogicServiceClient.SVC_LOGIC_STATUS_KEY,
+                GenericResourceApiSvcLogicServiceClient.FAILURE_RESULT);
+        Mockito.doReturn(resultProps).when(mockSvcLogic).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class), any(Properties.class));
+        Properties properties = svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder, new Properties());
+        Assert.assertEquals("Should return resultProps", resultProps, properties);
+    }
+
+    @Test
+    public void testParamExecuteWithServiceDataBuilder() throws Exception {
+        Mockito.doReturn(true).when(mockLog).isDebugEnabled();
+        ServiceDataBuilder mockBuilder = mock(ServiceDataBuilder.class);
+        Properties resultProps = new Properties();
+        resultProps.setProperty("my", "testing");
+        Mockito.doReturn(resultProps).when(mockSvcLogic).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class), any(Properties.class));
+        Properties properties = svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder, new Properties());
+        Assert.assertEquals("Should still return resultProps", resultProps, properties);
+    }
+
+    @Test (expected = SvcLogicException.class)
+    public void testParamExecuteWithPreloadDataBuilderWithException() throws Exception {
+        PreloadDataBuilder mockBuilder = mock(PreloadDataBuilder.class);
+        Mockito.doThrow(new SvcLogicException()).when(mockSvcLogic).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class), any(Properties.class));
+
+        svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder, new Properties());
+    }
+
+    @Test
+    public void testParamExecuteWithPreloadDataBuilderWithExecutorReturnNull() throws Exception {
+        PreloadDataBuilder mockBuilder = mock(PreloadDataBuilder.class);
+        Properties properties = svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder, new Properties());
+        Assert.assertTrue("Should return null", properties == null);
+        Mockito.verify(mockSvcLogic, times(1)).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class), any(Properties.class));
+    }
+
+    @Test
+    public void testParamExecuteWithPreloadDataBuilderWithExecutorReturnFailure() throws Exception {
+        PreloadDataBuilder mockBuilder = mock(PreloadDataBuilder.class);
+        Properties resultProps = new Properties();
+        resultProps.setProperty(GenericResourceApiSvcLogicServiceClient.SVC_LOGIC_STATUS_KEY,
+                GenericResourceApiSvcLogicServiceClient.FAILURE_RESULT);
+        Mockito.doReturn(resultProps).when(mockSvcLogic).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class), any(Properties.class));
+        Properties properties = svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder, new Properties());
+        Assert.assertEquals("Should return resultProps", resultProps, properties);
+    }
+
+    @Test
+    public void testParamExecuteWithPreloadDataBuilder() throws Exception {
+        Mockito.doReturn(true).when(mockLog).isDebugEnabled();
+        PreloadDataBuilder mockBuilder = mock(PreloadDataBuilder.class);
+        Properties resultProps = new Properties();
+        resultProps.setProperty("my", "testing");
+        Mockito.doReturn(resultProps).when(mockSvcLogic).execute(
+                any(String.class), any(String.class), any(String.class), any(String.class), any(Properties.class));
+        Properties properties = svcClient.execute(MODULE, RPC, VERSION, MODE, mockBuilder, new Properties());
+        Assert.assertEquals("Should still return resultProps", resultProps, properties);
+    }
+
+}
\ No newline at end of file