aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic-resource-api/provider/src/main/java/org/onap/sdnc/northbound/GenericResourceApiSvcLogicServiceClient.java235
-rw-r--r--generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/GenericResourceApiSvcLogicServiceClientTest.java205
2 files changed, 318 insertions, 122 deletions
diff --git a/generic-resource-api/provider/src/main/java/org/onap/sdnc/northbound/GenericResourceApiSvcLogicServiceClient.java b/generic-resource-api/provider/src/main/java/org/onap/sdnc/northbound/GenericResourceApiSvcLogicServiceClient.java
index e5be5e3a..8ba70dee 100644
--- a/generic-resource-api/provider/src/main/java/org/onap/sdnc/northbound/GenericResourceApiSvcLogicServiceClient.java
+++ b/generic-resource-api/provider/src/main/java/org/onap/sdnc/northbound/GenericResourceApiSvcLogicServiceClient.java
@@ -1,133 +1,124 @@
-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
index 00000000..cb827094
--- /dev/null
+++ b/generic-resource-api/provider/src/test/java/org/onap/sdnc/northbound/GenericResourceApiSvcLogicServiceClientTest.java
@@ -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