diff options
Diffstat (limited to 'northbound/dataChange/provider/src')
5 files changed, 177 insertions, 121 deletions
diff --git a/northbound/dataChange/provider/src/main/java/org/onap/ccsdk/sli/northbound/DataChangeProvider.java b/northbound/dataChange/provider/src/main/java/org/onap/ccsdk/sli/northbound/DataChangeProvider.java index cf4b07a70..3301ca8e0 100644 --- a/northbound/dataChange/provider/src/main/java/org/onap/ccsdk/sli/northbound/DataChangeProvider.java +++ b/northbound/dataChange/provider/src/main/java/org/onap/ccsdk/sli/northbound/DataChangeProvider.java @@ -9,9 +9,9 @@ * 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. @@ -22,26 +22,28 @@ package org.onap.ccsdk.sli.northbound; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; import java.util.Properties; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; + import org.onap.ccsdk.sli.core.sli.provider.MdsalHelper; -import org.opendaylight.mdsal.binding.api.DataBroker; -import org.opendaylight.mdsal.binding.api.NotificationPublishService; -import org.opendaylight.mdsal.binding.api.RpcProviderService; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; +import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; +import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationInput; import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationInputBuilder; import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationOutput; import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationOutputBuilder; import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeService; -import org.opendaylight.yangtools.concepts.ObjectRegistration; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; + /** * Defines a base implementation for your provider. This class extends from a helper class * which provides storage for the most commonly used components of the MD-SAL. Additionally the @@ -58,14 +60,14 @@ public class DataChangeProvider implements AutoCloseable, DataChangeService { protected DataBroker dataBroker; protected NotificationPublishService notificationService; - protected RpcProviderService rpcRegistry; - protected ObjectRegistration<DataChangeService> rpcRegistration; + protected RpcProviderRegistry rpcRegistry; + protected BindingAwareBroker.RpcRegistration<DataChangeService> rpcRegistration; private final DataChangeClient dataChangeClient; public DataChangeProvider(final DataBroker dataBroker, final NotificationPublishService notificationPublishService, - final RpcProviderService rpcProviderRegistry, + final RpcProviderRegistry rpcProviderRegistry, final DataChangeClient dataChangeClient) { this.LOG.info( "Creating provider for {}", APPLICATION_NAME); @@ -79,7 +81,7 @@ public class DataChangeProvider implements AutoCloseable, DataChangeService { public void initialize(){ LOG.info( "Initializing provider for {}", APPLICATION_NAME); - rpcRegistration = rpcRegistry.registerRpcImplementation(DataChangeService.class, this); + rpcRegistration = rpcRegistry.addRpcImplementation(DataChangeService.class, this); LOG.info( "Initialization complete for {}", APPLICATION_NAME); } diff --git a/northbound/dataChange/provider/src/main/resources/OSGI-INF/blueprint/datachange-blueprint.xml b/northbound/dataChange/provider/src/main/resources/OSGI-INF/blueprint/datachange-blueprint.xml new file mode 100644 index 000000000..5a38c81f1 --- /dev/null +++ b/northbound/dataChange/provider/src/main/resources/OSGI-INF/blueprint/datachange-blueprint.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" + odl:use-default-for-reference-types="true"> + + <reference id="svcLogicService" + interface="org.onap.ccsdk.sli.core.sli.provider.SvcLogicService" /> + + <bean id="client" class="org.onap.ccsdk.sli.northbound.DataChangeClient"> + <argument ref="svcLogicService" /> + </bean> + + <reference id="dataBroker" + interface="org.opendaylight.controller.md.sal.binding.api.DataBroker" + odl:type="default" /> + + <reference id="notificationService" + interface="org.opendaylight.controller.md.sal.binding.api.NotificationPublishService" + odl:type="default" /> + + <reference id="rpcRegistry" + interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" + odl:type="default" /> + + <bean id="provider" class="org.onap.ccsdk.sli.northbound.DataChangeProvider"> + <argument ref="dataBroker" /> + <argument ref="notificationService" /> + <argument ref="rpcRegistry" /> + <argument ref="client" /> + </bean> + +</blueprint>
\ No newline at end of file diff --git a/northbound/dataChange/provider/src/main/resources/org/opendaylight/blueprint/datachange-blueprint.xml b/northbound/dataChange/provider/src/main/resources/org/opendaylight/blueprint/datachange-blueprint.xml index 7bc0076dd..5a38c81f1 100644 --- a/northbound/dataChange/provider/src/main/resources/org/opendaylight/blueprint/datachange-blueprint.xml +++ b/northbound/dataChange/provider/src/main/resources/org/opendaylight/blueprint/datachange-blueprint.xml @@ -11,13 +11,16 @@ </bean> <reference id="dataBroker" - interface="org.opendaylight.mdsal.binding.api.DataBroker" /> + interface="org.opendaylight.controller.md.sal.binding.api.DataBroker" + odl:type="default" /> <reference id="notificationService" - interface="org.opendaylight.mdsal.binding.api.NotificationPublishService" /> + interface="org.opendaylight.controller.md.sal.binding.api.NotificationPublishService" + odl:type="default" /> <reference id="rpcRegistry" - interface="org.opendaylight.mdsal.binding.api.RpcProviderService" /> + interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" + odl:type="default" /> <bean id="provider" class="org.onap.ccsdk.sli.northbound.DataChangeProvider"> <argument ref="dataBroker" /> diff --git a/northbound/dataChange/provider/src/test/java/org/onap/sdnc/northbound/dataChange/DataChangeClientTest.java b/northbound/dataChange/provider/src/test/java/org/onap/sdnc/northbound/dataChange/DataChangeClientTest.java index 88a7f5bf0..9ba6c8742 100644 --- a/northbound/dataChange/provider/src/test/java/org/onap/sdnc/northbound/dataChange/DataChangeClientTest.java +++ b/northbound/dataChange/provider/src/test/java/org/onap/sdnc/northbound/dataChange/DataChangeClientTest.java @@ -1,55 +1,56 @@ -package org.onap.sdnc.northbound.dataChange; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; -import java.util.Properties; -import org.junit.Before; -import org.junit.Test; -import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.onap.ccsdk.sli.core.sli.provider.SvcLogicService; -import org.onap.ccsdk.sli.northbound.DataChangeClient; -import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationOutputBuilder; - -public class DataChangeClientTest { - - SvcLogicService mockSvcLogicService; - String module = "test-module"; - String rpc = "test-rpc"; - String version = "test-version"; - String mode = "test-mode"; - Properties localProp = new Properties(); - - @Before - public void setUp() throws Exception { - mockSvcLogicService = mock(SvcLogicService.class); - when(mockSvcLogicService.hasGraph(module, rpc, version, mode)).thenReturn(true); - } - - @Test - public void testDataChangeClientConstructor() { - DataChangeClient dataChangeClient = new DataChangeClient(mockSvcLogicService); - assertNotNull(dataChangeClient); - } - - @Test - public void testHasGraph() throws SvcLogicException { - DataChangeClient dataChangeClient = new DataChangeClient(mockSvcLogicService); - boolean result = dataChangeClient.hasGraph(module, rpc, version, mode); - assertTrue(result); - } - - @Test - public void testExecuteSvcLogicStatusFailure() throws SvcLogicException { - DataChangeNotificationOutputBuilder serviceData = mock(DataChangeNotificationOutputBuilder.class); - Properties parms = mock(Properties.class); - SvcLogicService svcLogicService = mock(SvcLogicService.class); - Properties properties = new Properties(); - properties.setProperty("SvcLogic.status", "failure"); - when(svcLogicService.execute(module, rpc, version, mode, properties)).thenReturn(properties); - DataChangeClient sliClient = new DataChangeClient(svcLogicService); - Properties prop = sliClient.execute(module, rpc, version, mode, serviceData, properties); - assertTrue(prop != null); - } +package org.onap.sdnc.northbound.dataChange; + +import static org.junit.Assert.*; +import static org.mockito.Mockito.*; + +import java.util.Properties; + +import org.junit.Before; +import org.junit.Test; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.provider.MdsalHelper; +import org.onap.ccsdk.sli.core.sli.provider.SvcLogicService; +import org.onap.ccsdk.sli.northbound.DataChangeClient; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationOutputBuilder; + +public class DataChangeClientTest { + + SvcLogicService mockSvcLogicService; + String module = "test-module"; + String rpc = "test-rpc"; + String version = "test-version"; + String mode = "test-mode"; + Properties localProp = new Properties(); + + @Before + public void setUp() throws Exception { + mockSvcLogicService = mock(SvcLogicService.class); + when(mockSvcLogicService.hasGraph(module, rpc, version, mode)).thenReturn(true); + } + + @Test + public void testDataChangeClientConstructor() { + DataChangeClient dataChangeClient = new DataChangeClient(mockSvcLogicService); + assertNotNull(dataChangeClient); + } + + @Test + public void testHasGraph() throws SvcLogicException { + DataChangeClient dataChangeClient = new DataChangeClient(mockSvcLogicService); + boolean result = dataChangeClient.hasGraph(module, rpc, version, mode); + assertTrue(result); + } + + @Test + public void testExecuteSvcLogicStatusFailure() throws SvcLogicException { + DataChangeNotificationOutputBuilder serviceData = mock(DataChangeNotificationOutputBuilder.class); + Properties parms = mock(Properties.class); + SvcLogicService svcLogicService = mock(SvcLogicService.class); + Properties properties = new Properties(); + properties.setProperty("SvcLogic.status", "failure"); + when(svcLogicService.execute(module, rpc, version, mode, properties)).thenReturn(properties); + DataChangeClient sliClient = new DataChangeClient(svcLogicService); + Properties prop = sliClient.execute(module, rpc, version, mode, serviceData, properties); + assertTrue(prop != null); + } }
\ No newline at end of file diff --git a/northbound/dataChange/provider/src/test/java/org/onap/sdnc/northbound/dataChange/TestDataChange.java b/northbound/dataChange/provider/src/test/java/org/onap/sdnc/northbound/dataChange/TestDataChange.java index ad2e85498..f9c39b703 100644 --- a/northbound/dataChange/provider/src/test/java/org/onap/sdnc/northbound/dataChange/TestDataChange.java +++ b/northbound/dataChange/provider/src/test/java/org/onap/sdnc/northbound/dataChange/TestDataChange.java @@ -21,57 +21,75 @@ package org.onap.sdnc.northbound.dataChange; -public class TestDataChange {//extends AbstractConcurrentDataBrokerTest { +import org.junit.Before; +import org.junit.Test; +import org.onap.ccsdk.sli.northbound.DataChangeProvider; +import org.onap.ccsdk.sli.northbound.DataChangeClient; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; +import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest; +import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationInput; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationInputBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.sli.northbound.datachange.rev150519.DataChangeNotificationOutput; +import org.opendaylight.yangtools.yang.common.RpcResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -// private DataChangeProvider dataChangeProvider; -// private static final Logger LOG = LoggerFactory.getLogger(DataChangeProvider.class); -// -// @Before -// public void setUp() throws Exception { -// if (null == dataChangeProvider) { -// DataBroker dataBroker = getDataBroker(); -// NotificationPublishService mockNotification = mock(NotificationPublishService.class); -// RpcProviderService mockRpcRegistry = mock(RpcProviderService.class); -// DataChangeClient mockSliClient = mock(DataChangeClient.class); -// dataChangeProvider = new DataChangeProvider(dataBroker, mockNotification, mockRpcRegistry, mockSliClient); -// } -// } -// -// //Testcase should return error 503 when No service logic active for dataChange. -// @Test -// public void testDataChangeNotification() { -// -// DataChangeNotificationInputBuilder inputBuilder = new DataChangeNotificationInputBuilder(); -// -// inputBuilder.setAaiEventId("1"); -// -// -// // TODO: currently initialize SvcLogicServiceClient is failing, need to fix -// java.util.concurrent.Future<RpcResult<DataChangeNotificationOutput>> future = dataChangeProvider -// .dataChangeNotification(inputBuilder.build()); -// RpcResult<DataChangeNotificationOutput> rpcResult = null; -// try { -// rpcResult = future.get(); -// } catch (Exception e) { -// fail("Error : " + e); -// } -// LOG.info("result: {}", rpcResult); -// assertEquals("503", rpcResult.getResult().getDataChangeResponseCode()); -// } -// -// //Input parameter validation -// @Test -// public void testDataChangeNotificationInputValidation() { -// -// java.util.concurrent.Future<RpcResult<DataChangeNotificationOutput>> future = dataChangeProvider -// .dataChangeNotification(null); -// RpcResult<DataChangeNotificationOutput> rpcResult = null; -// try { -// rpcResult = future.get(); -// } catch (Exception e) { -// fail("Error : " + e); -// } -// LOG.info("result: {}", rpcResult); -// assertEquals("403", rpcResult.getResult().getDataChangeResponseCode()); -// } +import static org.junit.Assert.*; +import static org.mockito.Mockito.mock; + +public class TestDataChange extends AbstractConcurrentDataBrokerTest { + + private DataChangeProvider dataChangeProvider; + private static final Logger LOG = LoggerFactory.getLogger(DataChangeProvider.class); + + @Before + public void setUp() throws Exception { + if (null == dataChangeProvider) { + DataBroker dataBroker = getDataBroker(); + NotificationPublishService mockNotification = mock(NotificationPublishService.class); + RpcProviderRegistry mockRpcRegistry = mock(RpcProviderRegistry.class); + DataChangeClient mockSliClient = mock(DataChangeClient.class); + dataChangeProvider = new DataChangeProvider(dataBroker, mockNotification, mockRpcRegistry, mockSliClient); + } + } + + //Testcase should return error 503 when No service logic active for dataChange. + @Test + public void testDataChangeNotification() { + + DataChangeNotificationInputBuilder inputBuilder = new DataChangeNotificationInputBuilder(); + + inputBuilder.setAaiEventId("1"); + + + // TODO: currently initialize SvcLogicServiceClient is failing, need to fix + java.util.concurrent.Future<RpcResult<DataChangeNotificationOutput>> future = dataChangeProvider + .dataChangeNotification(inputBuilder.build()); + RpcResult<DataChangeNotificationOutput> rpcResult = null; + try { + rpcResult = future.get(); + } catch (Exception e) { + fail("Error : " + e); + } + LOG.info("result: {}", rpcResult); + assertEquals("503", rpcResult.getResult().getDataChangeResponseCode()); + } + + //Input parameter validation + @Test + public void testDataChangeNotificationInputValidation() { + + java.util.concurrent.Future<RpcResult<DataChangeNotificationOutput>> future = dataChangeProvider + .dataChangeNotification(null); + RpcResult<DataChangeNotificationOutput> rpcResult = null; + try { + rpcResult = future.get(); + } catch (Exception e) { + fail("Error : " + e); + } + LOG.info("result: {}", rpcResult); + assertEquals("403", rpcResult.getResult().getDataChangeResponseCode()); + } } |