OLM unit testing update 05/79405/2
authordoha.khaled <dkhaled.ext@orange.com>
Thu, 10 Jan 2019 09:32:01 +0000 (11:32 +0200)
committerguillaume.lambert <guillaume.lambert@orange.com>
Mon, 21 Jan 2019 15:27:56 +0000 (16:27 +0100)
Change-Id: I1ae94c6cd0daf6fed6dac0e1e7f74653bd218a5a

13 files changed:
olm/src/test/java/org/opendaylight/transportpce/olm/OlmPowerServiceRpcImplTest.java
olm/src/test/java/org/opendaylight/transportpce/olm/OlmProviderTest.java
olm/src/test/java/org/opendaylight/transportpce/olm/power/PowerMgmtTest.java
olm/src/test/java/org/opendaylight/transportpce/olm/service/OlmPowerServiceImplTest.java
olm/src/test/java/org/opendaylight/transportpce/olm/util/OtsPmHolderTest.java
olm/src/test/java/org/opendaylight/transportpce/olm/util/RoadmLinksTest.java
olm/src/test/java/org/opendaylight/transportpce/olm/util/TransactionUtils.java
pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/impl/PceProviderTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/impl/PceServiceRPCImplTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/service/PathComputationServiceImplTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/utils/DataStoreUtils.java
pce/src/test/java/org/opendaylight/transportpce/pce/utils/DataUtils.java

index 947d137c4ede8e77f953f7ded0d99e721af5c8d5..525e02eaacacbb1a164b6802c5147478b974cd92 100644 (file)
@@ -80,7 +80,9 @@ public class OlmPowerServiceRpcImplTest extends AbstractTest {
     private OlmPowerService olmPowerService;
     private OlmPowerServiceRpcImpl olmPowerServiceRpc;
 
-
+    /*
+     * initial setup before test cases
+     */
     @Before
     public void setUp() {
         this.mountPoint = new MountPointStub(this.getDataBroker());
@@ -97,6 +99,11 @@ public class OlmPowerServiceRpcImplTest extends AbstractTest {
         this.olmPowerServiceRpc = new OlmPowerServiceRpcImpl(this.olmPowerService);
     }
 
+    /*
+     * test getPm in the OlmPowerServiceRpcImpl if pm is not present
+     * @throws ExecutionException
+     * @throws InterruptedException
+     */
     @Test
     public void pmIsNotPresentTest() throws ExecutionException, InterruptedException {
         GetPmInput input = OlmPowerServiceRpcImplUtil.getGetPmInput();
@@ -110,6 +117,10 @@ public class OlmPowerServiceRpcImplTest extends AbstractTest {
         Assert.assertEquals(null, output.get().getResult().getResourceType());
     }
 
+    /*
+     * @throws ExecutionException
+     * @throws InterruptedException
+     */
     @Test
     public void testGetPm1() throws ExecutionException, InterruptedException {
         Measurements measurements = new MeasurementsBuilder().setMeasurement(
@@ -211,6 +222,11 @@ public class OlmPowerServiceRpcImplTest extends AbstractTest {
         Assert.assertEquals(null, output.get().getResult().getResourceType());
     }
 
+    /*
+     * test servicePowerSetup function in OlmPowerServiceRpcImpl in case of success
+     * @throws ExecutionException
+     * @throws InterruptedException
+     */
     @Test
     public void testServicePowerSetup1() throws ExecutionException, InterruptedException {
         ServicePowerSetupInput input = OlmPowerServiceRpcImplUtil.getServicePowerSetupInput();
@@ -221,7 +237,11 @@ public class OlmPowerServiceRpcImplTest extends AbstractTest {
         Assert.assertEquals(true, output.get().isSuccessful());
     }
 
-
+    /*
+     * test servicePowerTurndown function in OlmPowerServiceRpcImpl in case of success
+     * @throws ExecutionException
+     * @throws InterruptedException
+     */
     @Test
     public void testServicePowerTurndown1() throws ExecutionException, InterruptedException {
         ServicePowerTurndownInput input = OlmPowerServiceRpcImplUtil.getServicePowerTurndownInput();
@@ -233,6 +253,11 @@ public class OlmPowerServiceRpcImplTest extends AbstractTest {
         Assert.assertEquals(true, output.get().isSuccessful());
     }
 
+    /*
+     * test calculateSpanlossBase function in OlmPowerServiceRpcImpl in case of failure
+     * @throws ExecutionException
+     * @throws InterruptedException
+     */
     @Test
     public void testCalculateSpanlossBase1() throws ExecutionException, InterruptedException {
         CalculateSpanlossBaseInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossBaseInput();
@@ -244,6 +269,11 @@ public class OlmPowerServiceRpcImplTest extends AbstractTest {
         Assert.assertEquals(true, output.get().isSuccessful());
     }
 
+    /*
+     * test calculateSpanlossCurrent function in OlmPowerServiceRpcImpl in case of null output
+     * @throws ExecutionException
+     * @throws InterruptedException
+     */
     @Test
     public void testCalculateSpanlossCurrent1() throws ExecutionException, InterruptedException {
         CalculateSpanlossCurrentInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossCurrentInput();
@@ -253,6 +283,11 @@ public class OlmPowerServiceRpcImplTest extends AbstractTest {
         Assert.assertEquals(true, output.get().isSuccessful());
     }
 
+    /*
+     * test servicePowerReset function in OlmPowerServiceRpcImpl in case of null output
+     * @throws ExecutionException
+     * @throws InterruptedException
+     */
     @Test
     public void testServicePowerResetInput() throws ExecutionException, InterruptedException {
         ServicePowerResetInput input = OlmPowerServiceRpcImplUtil.getServicePowerResetInput();
index 2a8cec9bdb3d1fc9418b3ff272d53bb46b076935..7fc4e9093650c0a18454555b0a7cc251f20eadd0 100644 (file)
@@ -44,6 +44,9 @@ public class OlmProviderTest extends AbstractTest {
     private RpcProviderRegistry rpcProviderRegistry;
     private OlmProvider olmProvider;
 
+    /*
+     * initial setup before test cases
+     */
     @Before
     public void setUp() {
         this.mountPoint = new MountPointStub(this.getDataBroker());
@@ -62,14 +65,18 @@ public class OlmProviderTest extends AbstractTest {
 
     }
 
-
+    /*
+     * dummy test for init and close functions using RpcProviderRegistryStub
+     */
     @Test
     public void testInitAndClose() {
         this.olmProvider.init();
         this.olmProvider.close();
     }
 
-
+    /*
+     * dummy test for init and close functions using RpcProviderRegistryStub2
+     */
     @Test
     public void testClose2() {
         this.rpcProviderRegistry = new RpcProviderRegistryStub2();
index 46eb7c428f83f36f8e66d367d8c4c65f7cd2510c..aa660e282b97500907a2dcd670d07e80aa88deee 100644 (file)
@@ -9,11 +9,13 @@
 package org.opendaylight.transportpce.olm.power;
 
 import java.util.List;
+import java.util.concurrent.ExecutionException;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.controller.md.sal.binding.api.MountPoint;
 import org.opendaylight.controller.md.sal.binding.api.MountPointService;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl;
 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
@@ -27,8 +29,12 @@ import org.opendaylight.transportpce.olm.stub.MountPointStub;
 import org.opendaylight.transportpce.olm.util.OlmPowerServiceRpcImplUtil;
 import org.opendaylight.transportpce.olm.util.TransactionUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NodeId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.ServicePowerSetupInput;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 public class PowerMgmtTest extends AbstractTest {
 
@@ -40,6 +46,9 @@ public class PowerMgmtTest extends AbstractTest {
     private PortMapping portMapping;
     private PowerMgmt powerMgmt;
 
+    /*
+     * initial setup before test cases
+     */
     @Before
     public void setUp() {
         this.mountPoint = new MountPointStub(this.getDataBroker());
@@ -53,6 +62,9 @@ public class PowerMgmtTest extends AbstractTest {
             this.deviceTransactionManager);
     }
 
+    /*
+     * test setPower function in PowerMgmt
+     */
     @Test
     public void testSetPower() {
 
@@ -62,6 +74,9 @@ public class PowerMgmtTest extends AbstractTest {
 
     }
 
+    /*
+     * test setPower function in PowerMgmt with different input (DestTp("network"))
+     */
     @Test
     public void testSetPower2() {
 
@@ -71,6 +86,9 @@ public class PowerMgmtTest extends AbstractTest {
 
     }
 
+    /*
+     * test setPower function in PowerMgmt with different input (DestTp("deg"))
+     */
     @Test
     public void testSetPower3() {
 
@@ -80,6 +98,9 @@ public class PowerMgmtTest extends AbstractTest {
 
     }
 
+    /*
+     * test setPower function in PowerMgmt with different input (DestTp("srg"))
+     */
     @Test
     public void testSetPower4() {
 
@@ -89,8 +110,12 @@ public class PowerMgmtTest extends AbstractTest {
 
     }
 
+    /*
+     * test setPower function in PowerMgmt in case nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes() with null mapping key
+     */
     @Test
-    public void testSetPowerPresentNodes() throws InterruptedException {
+    public void testSetPowerPresentNodes() throws InterruptedException, ExecutionException {
         List<NodeId> nodes = TransactionUtils.getNodeIds();
         for (NodeId nodeId : nodes) {
             TransactionUtils.writeNodeTransaction(nodeId.getValue(), this.getDataBroker(), null);
@@ -101,8 +126,12 @@ public class PowerMgmtTest extends AbstractTest {
         Assert.assertEquals(true, output);
     }
 
+    /*
+     * test setPower function in PowerMgmt in case of different nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes2() with null mapping key
+     */
     @Test
-    public void testSetPowerPresentNodes2() throws InterruptedException {
+    public void testSetPowerPresentNodes2() throws InterruptedException, ExecutionException {
         List<NodeId> nodes = TransactionUtils.getNodeIds();
         for (NodeId nodeId : nodes) {
             TransactionUtils.writeNodeTransaction2(nodeId.getValue(), this.getDataBroker(), null);
@@ -113,8 +142,12 @@ public class PowerMgmtTest extends AbstractTest {
         Assert.assertEquals(true, output);
     }
 
+    /*
+     * test setPower function in PowerMgmt in case different nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes3() with null mapping key
+     */
     @Test
-    public void testSetPowerPresentNodes3() throws InterruptedException {
+    public void testSetPowerPresentNodes3() throws InterruptedException, ExecutionException {
         List<NodeId> nodes = TransactionUtils.getNodeIds();
         for (NodeId nodeId : nodes) {
             TransactionUtils.writeNodeTransaction3(nodeId.getValue(), this.getDataBroker(), null);
@@ -125,8 +158,13 @@ public class PowerMgmtTest extends AbstractTest {
         Assert.assertEquals(true, output);
     }
 
+    /*
+     * test setPower function in PowerMgmt in case different nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes3() with "deg" mapping key and input
+     * from OlmPowerServiceRpcImplUtil.getServicePowerSetupInput3()
+     */
     @Test
-    public void testSetPowerPresentNodes31() throws InterruptedException {
+    public void testSetPowerPresentNodes31() throws InterruptedException, ExecutionException {
         List<NodeId> nodes = TransactionUtils.getNodeIds();
         for (NodeId nodeId : nodes) {
             TransactionUtils.writeNodeTransaction3(nodeId.getValue(), this.getDataBroker(), "deg");
@@ -137,8 +175,13 @@ public class PowerMgmtTest extends AbstractTest {
         Assert.assertEquals(false, output);
     }
 
+    /*
+     * test setPower function in PowerMgmt in case different nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes3() with "deg" mapping key and input
+     * from OlmPowerServiceRpcImplUtil.getServicePowerSetupInput4()
+     */
     @Test
-    public void testSetPowerPresentNodes312() throws InterruptedException {
+    public void testSetPowerPresentNodes312() throws InterruptedException, ExecutionException {
         List<NodeId> nodes = TransactionUtils.getNodeIds();
         for (NodeId nodeId : nodes) {
             TransactionUtils.writeNodeTransaction3(nodeId.getValue(), this.getDataBroker(), "deg");
@@ -149,8 +192,42 @@ public class PowerMgmtTest extends AbstractTest {
         Assert.assertEquals(true, output);
     }
 
+    /*
+     * test setPower function in PowerMgmt in case different nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes3() with "deg" mapping key and input
+     * from OlmPowerServiceRpcImplUtil.getServicePowerSetupInput4()
+     */
     @Test
-    public void testSetPowerPresentNodes32() throws InterruptedException {
+    public void testSetPowerPresentNodes312_2() throws InterruptedException, ExecutionException {
+        List<NodeId> nodes = TransactionUtils.getNodeIds();
+        for (NodeId nodeId : nodes) {
+            TransactionUtils.writeNodeTransaction3(nodeId.getValue(), this.getDataBroker(), "deg");
+            Thread.sleep(500);
+        }
+
+        InstanceIdentifier<Interface> interfacesIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child(
+            Interface.class, new InterfaceKey("ots"));
+        Interface interface0 = new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp
+            .InterfaceBuilder()
+            .setName("ots")
+            .build();
+
+        TransactionUtils.putAndSubmit(new DeviceTransactionManagerImpl(mountPointService, 3000),
+            "node 1", LogicalDatastoreType.CONFIGURATION, interfacesIID, interface0);
+        Thread.sleep(5000);
+        ServicePowerSetupInput input = OlmPowerServiceRpcImplUtil.getServicePowerSetupInput3();
+        boolean output = this.powerMgmt.setPower(input);
+        Assert.assertEquals(false, output);
+    }
+
+
+    /*
+     * test setPower function in PowerMgmt in case different nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes3() with null mapping key and input
+     * from OlmPowerServiceRpcImplUtil.getServicePowerSetupInput3()
+     */
+    @Test
+    public void testSetPowerPresentNodes32() throws InterruptedException, ExecutionException {
         List<NodeId> nodes = TransactionUtils.getNodeIds();
         for (NodeId nodeId : nodes) {
             TransactionUtils.writeNodeTransaction3(nodeId.getValue(), this.getDataBroker(), null);
@@ -161,8 +238,13 @@ public class PowerMgmtTest extends AbstractTest {
         Assert.assertEquals(true, output);
     }
 
+    /*
+     * test setPower function in PowerMgmt in case different nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes() with "network" mapping key and input
+     * from OlmPowerServiceRpcImplUtil.getServicePowerSetupInput2()
+     */
     @Test
-    public void testSetPowerPresentNodes4() throws InterruptedException {
+    public void testSetPowerPresentNodes4() throws InterruptedException, ExecutionException {
         List<NodeId> nodes = TransactionUtils.getNodeIds();
         for (NodeId nodeId : nodes) {
             TransactionUtils.writeNodeTransaction(nodeId.getValue(), this.getDataBroker(), "network");
@@ -173,8 +255,35 @@ public class PowerMgmtTest extends AbstractTest {
         Assert.assertEquals(true, output);
     }
 
+//    @Test
+//    public void testSetPowerPresentNodes4_1() throws InterruptedException, ExecutionException {
+//        List<NodeId> nodes = TransactionUtils.getNodeIds();
+//        for (NodeId nodeId : nodes) {
+//            TransactionUtils.writeNodeTransaction(nodeId.getValue(), this.getDataBroker(), "network");
+//        }
+//
+//        InstanceIdentifier<Ports> portIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+//            .child(CircuitPacks.class, new CircuitPacksKey("circuit name"))
+//            .child(Ports.class, new PortsKey("port"));
+//        Ports ports = new PortsBuilder()
+//            .setPortName("port")
+//            .setCircuitId("circuit name")
+//            .build();
+//        TransactionUtils.putAndSubmit(new DeviceTransactionManagerImpl(this.mountPointService, 3000)
+//            ,"node 1", LogicalDatastoreType.OPERATIONAL, portIID, ports);
+//        Thread.sleep(1000);
+//        ServicePowerSetupInput input = OlmPowerServiceRpcImplUtil.getServicePowerSetupInput2();
+//        boolean output = this.powerMgmt.setPower(input);
+//        Assert.assertEquals(true, output);
+//    }
+
+    /*
+     * test setPower function in PowerMgmt in case different nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes() with null mapping key and input
+     * from OlmPowerServiceRpcImplUtil.getServicePowerSetupInput2()
+     */
     @Test
-    public void testSetPowerPresentNodes41() throws InterruptedException {
+    public void testSetPowerPresentNodes41() throws InterruptedException, ExecutionException {
         List<NodeId> nodes = TransactionUtils.getNodeIds();
         for (NodeId nodeId : nodes) {
             TransactionUtils.writeNodeTransaction(nodeId.getValue(), this.getDataBroker(), null);
@@ -185,8 +294,13 @@ public class PowerMgmtTest extends AbstractTest {
         Assert.assertEquals(false, output);
     }
 
+    /*
+     * test setPower function in PowerMgmt in case different nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes() with "deg" mapping key and input
+     * from OlmPowerServiceRpcImplUtil.getServicePowerSetupInput3()
+     */
     @Test
-    public void testSetPowerPresentNodes42() throws InterruptedException {
+    public void testSetPowerPresentNodes42() throws InterruptedException, ExecutionException {
         List<NodeId> nodes = TransactionUtils.getNodeIds();
         for (NodeId nodeId : nodes) {
             TransactionUtils.writeNodeTransaction(nodeId.getValue(), this.getDataBroker(), "deg");
@@ -197,8 +311,13 @@ public class PowerMgmtTest extends AbstractTest {
         Assert.assertEquals(true, output);
     }
 
+    /*
+     * test setPower function in PowerMgmt in case different nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes() with "deg" mapping key and input
+     * from OlmPowerServiceRpcImplUtil.getServicePowerSetupInput4()
+     */
     @Test
-    public void testSetPowerPresentNodes422() throws InterruptedException {
+    public void testSetPowerPresentNodes422() throws InterruptedException, ExecutionException {
         List<NodeId> nodes = TransactionUtils.getNodeIds();
         for (NodeId nodeId : nodes) {
             TransactionUtils.writeNodeTransaction(nodeId.getValue(), this.getDataBroker(), "deg");
@@ -209,8 +328,13 @@ public class PowerMgmtTest extends AbstractTest {
         Assert.assertEquals(true, output);
     }
 
+    /*
+     * test setPower function in PowerMgmt in case different nodes are present in Configuration Datastore
+     * from TransactionUtils.getNodes() with null mapping key and input
+     * from OlmPowerServiceRpcImplUtil.getServicePowerSetupInput3()
+     */
     @Test
-    public void testSetPowerPresentNodes43() throws InterruptedException {
+    public void testSetPowerPresentNodes43() throws InterruptedException, ExecutionException {
         List<NodeId> nodes = TransactionUtils.getNodeIds();
         for (NodeId nodeId : nodes) {
             TransactionUtils.writeNodeTransaction(nodeId.getValue(), this.getDataBroker(), null);
index 02738d69974c8c5496b4d8f1f4cd9e22f7c26116..342973c22dc5c9d3e723e1192f1f054cf5ac41f9 100644 (file)
@@ -8,6 +8,7 @@
 
 package org.opendaylight.transportpce.olm.service;
 
+import java.util.concurrent.ExecutionException;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -50,7 +51,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev1
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.ServicePowerTurndownInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.ServicePowerTurndownOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.ServicePowerTurndownOutputBuilder;
-//import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.olm.rev170418.*;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -70,8 +70,9 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
     @InjectMocks
     private OlmPowerService olmPowerServiceMock;
 
-
-
+    /*
+     * initial setup before test cases
+     */
     @Before
     public void setUp() {
         this.mountPoint = new MountPointStub(this.getDataBroker());
@@ -91,6 +92,9 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
         MockitoAnnotations.initMocks(this);
     }
 
+    /*
+     * dummy tests for init and close functions in OlmPowerServiceImpl class (not yet implemented)
+     */
     @Test
     public void dummyTest() {
         OlmPowerServiceImpl olmPowerServiceImpl = (OlmPowerServiceImpl) this.olmPowerService;
@@ -98,7 +102,9 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
         olmPowerServiceImpl.close();
     }
 
-
+    /*
+     * test getPm function in OlmPowerServiceImpl class
+     */
     @Test
     public void testGetPm() {
         GetPmInput input = OlmPowerServiceRpcImplUtil.getGetPmInput();
@@ -107,6 +113,10 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
         Assert.assertEquals(null, output.getResourceId());
     }
 
+    /*
+     * test servicePowerSetup function in OlmPowerServiceImpl class in case of mocking powerMgmtMock.setPower
+     * to return success
+     */
     @Test
     public void testServicePowerSetupSuccess() {
         ServicePowerSetupInput input = OlmPowerServiceRpcImplUtil.getServicePowerSetupInput();
@@ -116,6 +126,10 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
         Assert.assertEquals("Success", output.getResult());
     }
 
+    /*
+     * test servicePowerSetup function in OlmPowerServiceImpl class in case of mocking powerMgmtMock.setPower
+     * to return failure
+     */
     @Test
     public void testServicePowerSetupFailed() {
         ServicePowerSetupInput input = OlmPowerServiceRpcImplUtil.getServicePowerSetupInput();
@@ -124,6 +138,10 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
         Assert.assertEquals("Failed", output.getResult());
     }
 
+    /*
+     * test getServicePowerTurndownInput function in OlmPowerServiceImpl class in case of mocking powerMgmtMock.setPower
+     * to return success
+     */
     @Test
     public void testServicePowerTurnDownSuccess() {
         ServicePowerTurndownInput input = OlmPowerServiceRpcImplUtil.getServicePowerTurndownInput();
@@ -133,6 +151,10 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
         Assert.assertEquals("Success", output.getResult());
     }
 
+    /*
+     * test getServicePowerTurndownInput function in OlmPowerServiceImpl class in case of mocking powerMgmtMock.setPower
+     * to return failure
+     */
     @Test
     public void testServicePowerTurnDownFailed() {
         ServicePowerTurndownInput input = OlmPowerServiceRpcImplUtil.getServicePowerTurndownInput();
@@ -142,6 +164,10 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
         Assert.assertEquals("Failed", output.getResult());
     }
 
+    /*
+     * test calculateSpanlossBase function in OlmPowerServiceImpl class in case of failure and network object isn't
+     * stored in Configuration Datastore
+     */
     @Test
     public void testCalculateSpanlossBase() {
         CalculateSpanlossBaseInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossBaseInput();
@@ -150,6 +176,10 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
 
     }
 
+    /*
+     * test calculateSpanlossBase function in OlmPowerServiceImpl class in case of failure and network object is
+     * stored in Configuration Datastore
+     */
     @Test
     public void testCalculateSpanlossBase2() {
         NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
@@ -169,6 +199,10 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
 
     }
 
+    /*
+     * test calculateSpanlossBase function in OlmPowerServiceImpl class in case of failure and network object is
+     * stored in Configuration Datastore with different input
+     */
     @Test
     public void testCalculateSpanlossBase3() {
         NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
@@ -188,7 +222,10 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
 
     }
 
-
+    /*
+     * test calculateSpanlossBase function in OlmPowerServiceImpl class in case of failure and empty network
+     * object is stored in Configuration Datastore
+     */
     @Test
     public void testCalculateSpanlossBase4() {
         NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
@@ -208,6 +245,10 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
 
     }
 
+    /*
+     * test calculateSpanlossBase function in OlmPowerServiceImpl class in case of failure and empty network
+     * object is stored in Configuration Datastore with different input
+     */
     @Test
     public void testCalculateSpanlossBase5() {
         NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
@@ -227,60 +268,75 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
 
     }
 
-//    @Test
-//    public void testCalculateSpanlossBase4() throws InterruptedException {
-//        NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
-//        InstanceIdentifier<Network1> networkIID = InstanceIdentifier.builder(Network.class, overlayTopologyKey)
-//            .augmentation(Network1.class)
-//            .build();
-//        Network1 network = TransactionUtils.getNetwork2();
-//        TransactionUtils.writeTransaction(this.getDataBroker(), networkIID, network);
-//
-//        Thread.sleep(500);
-//
-//        List<NodeId> nodes = TransactionUtils.getNodes();
-//        Node n;
-//        SupportingNode sn;
-//
-//        List<SupportingNode> snl;
-//        NodeId n5 = new NodeId("node 5");
-//        KeyedInstanceIdentifier<Node, NodeKey> mappedNodeII2 =
-//            InstanceIdentifiers.UNDERLAY_NETWORK_II.child(Node.class, new NodeKey(n5));
-//
-//        sn = new SupportingNodeBuilder().setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
-//            .setNodeRef(n5).build();
-//        snl = new ArrayList<>();
-//        snl.add(sn);
-//        n = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608
-//            .network.NodeBuilder().setNodeId(n5).build();
-//        TransactionUtils.writeTransaction(this.getDataBroker(), mappedNodeII2, n);
-//        Thread.sleep(500);
-//
-//        for(int i=0; i < nodes.size(); i++) {
-//            KeyedInstanceIdentifier<Node, NodeKey> mappedNodeII =
-//                InstanceIdentifiers.OVERLAY_NETWORK_II.child(Node.class, new NodeKey(nodes.get(i)));
-//            if (i != 0){
-//                sn = new SupportingNodeBuilder().setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
-//                    .setNodeRef(nodes.get(i-1)).build();
-//            }else {
-//                sn = new SupportingNodeBuilder().setNodeRef(n5).build();
-//            }
-//            snl = new ArrayList<>();
-//            snl.add(sn);
-//            n = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608
-//                .network.NodeBuilder().setNodeId(nodes.get(i)).setSupportingNode(snl).build();
-//            TransactionUtils.writeTransaction(this.getDataBroker(), mappedNodeII, n);
-//            Thread.sleep(500);
-//        }
-//
-//        Thread.sleep(1000);
-//
-//        CalculateSpanlossBaseInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossBaseInput2();
-//        CalculateSpanlossBaseOutput output = this.olmPowerService.calculateSpanlossBase(input);
-//        Assert.assertEquals("Failed", output.getResult());
-//
-//    }
+    /*
+     * test calculateSpanlossBase function in OlmPowerServiceImpl class in case of failure and empty network
+     * object is stored in Configuration Datastore with different input
+     */
+    @Test
+    public void testCalculateSpanlossBase5_2() {
+        NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
+        InstanceIdentifier<Network1> networkIID = InstanceIdentifier.builder(Network.class, overlayTopologyKey)
+            .augmentation(Network1.class)
+            .build();
+        Network1 network = TransactionUtils.getNetwork3();
+        TransactionUtils.writeTransaction(this.getDataBroker(), networkIID, network);
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException e) {
+            LOG.error("Write transaction failed !",e);
+        }
+        CalculateSpanlossBaseInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossBaseInput2();
+        CalculateSpanlossBaseOutput output = this.olmPowerService.calculateSpanlossBase(input);
+        Assert.assertEquals("Failed", output.getResult());
+
+    }
+
+    /*
+     * test calculateSpanlossBase function in OlmPowerServiceImpl class in case of failure and network object of
+     * TransactionUtils.getNetwork2() object is stored in Opertional Datastore
+     */
+    @Test
+    public void testCalculateSpanlossBase4_2() throws InterruptedException, ExecutionException {
+
+        TransactionUtils.prepareTestDataInStore(this.getDataBroker(), this.mountPointService);
+        CalculateSpanlossBaseInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossBaseInput2();
+        CalculateSpanlossBaseOutput output = this.olmPowerService.calculateSpanlossBase(input);
+        Assert.assertEquals("Failed", output.getResult());
+
+    }
+
+    /*
+     * test calculateSpanlossBase function in OlmPowerServiceImpl class in case of failure and network object of
+     * TransactionUtils.getNetwork2() object is stored in Opertional Datastore
+     */
+    @Test
+    public void testCalculateSpanlossBase4_3() throws InterruptedException, ExecutionException {
+
+        TransactionUtils.prepareTestDataInStore2(this.getDataBroker(), this.mountPointService);
+        CalculateSpanlossBaseInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossBaseInput2();
+        CalculateSpanlossBaseOutput output = this.olmPowerService.calculateSpanlossBase(input);
+        Assert.assertEquals("Failed", output.getResult());
+
+    }
+
+
+    /*
+     * test calculateSpanlossBase function in OlmPowerServiceImpl class in case of failure and network object of
+     * TransactionUtils.getNetwork2() object is stored in Opertional Datastore
+     */
+    @Test
+    public void testCalculateSpanlossBase4_4() throws InterruptedException, ExecutionException {
+
+        TransactionUtils.prepareTestDataInStore3(this.getDataBroker(), this.mountPointService);
+        CalculateSpanlossBaseInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossBaseInput2();
+        CalculateSpanlossBaseOutput output = this.olmPowerService.calculateSpanlossBase(input);
+        Assert.assertEquals("Failed", output.getResult());
+
+    }
 
+    /*
+     * test calculateSpanlossCurrent function in OlmPowerServiceImpl class in case of null return
+     */
     @Test
     public void testCalculateSpanlossCurrent1() {
         CalculateSpanlossCurrentInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossCurrentInput();
@@ -288,6 +344,10 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
         Assert.assertEquals(null, output);
     }
 
+    /*
+     * test calculateSpanlossCurrent function in OlmPowerServiceImpl class in case of null return and the network
+     * object is stored in configuration datastore
+     */
     @Test
     public void testCalculateSpanlossCurrent2() {
         NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
@@ -306,10 +366,86 @@ public class OlmPowerServiceImplTest  extends AbstractTest {
         Assert.assertEquals(null, output);
     }
 
+    /*
+     * test calculateSpanlossCurrent function in OlmPowerServiceImpl class in case of null return and the network
+     * object is stored in configuration datastore with different network object stored
+     */
+    @Test
+    public void testCalculateSpanlossCurrent2_2() {
+        NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
+        InstanceIdentifier<Network1> networkIID = InstanceIdentifier.builder(Network.class, overlayTopologyKey)
+            .augmentation(Network1.class)
+            .build();
+        Network1 network = TransactionUtils.getNetwork3();
+        TransactionUtils.writeTransaction(this.getDataBroker(), networkIID, network);
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException e) {
+            LOG.error("Write transaction failed !",e);
+        }
+        CalculateSpanlossCurrentInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossCurrentInput();
+        CalculateSpanlossCurrentOutput output = this.olmPowerService.calculateSpanlossCurrent(input);
+        Assert.assertEquals(null, output);
+    }
+
+    /*
+     * test calculateSpanlossCurrent function in OlmPowerServiceImpl class in case of null return and the network
+     * object is stored in configuration datastore
+     */
+    @Test
+    public void testCalculateSpanlossCurrent3() throws InterruptedException, ExecutionException {
+        TransactionUtils.prepareTestDataInStore(this.getDataBroker(), this.mountPointService);
+        CalculateSpanlossCurrentInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossCurrentInput();
+        CalculateSpanlossCurrentOutput output = this.olmPowerService.calculateSpanlossCurrent(input);
+        Assert.assertEquals("Failed", output.getResult());
+    }
+
+    /*
+     * test calculateSpanlossCurrent function in OlmPowerServiceImpl class in case of null return and the network
+     * object is stored in configuration datastore
+     */
+    @Test
+    public void testCalculateSpanlossCurrent4() throws InterruptedException, ExecutionException {
+        TransactionUtils.prepareTestDataInStore2(this.getDataBroker(), this.mountPointService);
+        CalculateSpanlossCurrentInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossCurrentInput();
+        CalculateSpanlossCurrentOutput output = this.olmPowerService.calculateSpanlossCurrent(input);
+        Assert.assertEquals("Failed", output.getResult());
+    }
+
+    /*
+     * test calculateSpanlossCurrent function in OlmPowerServiceImpl class in case of null return and the network
+     * object is stored in configuration datastore
+     */
+    @Test
+    public void testCalculateSpanlossCurrent5() throws InterruptedException, ExecutionException {
+        TransactionUtils.prepareTestDataInStore3(this.getDataBroker(), this.mountPointService);
+        CalculateSpanlossCurrentInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossCurrentInput();
+        CalculateSpanlossCurrentOutput output = this.olmPowerService.calculateSpanlossCurrent(input);
+        Assert.assertEquals("Failed", output.getResult());
+    }
+
+    /*
+     * test calculateSpanlossCurrent function in OlmPowerServiceImpl class in case of null return and the network
+     * object is stored in configuration datastore
+     */
+    @Test
+    public void testCalculateSpanlossCurrent6() throws InterruptedException, ExecutionException {
+        TransactionUtils.prepareTestDataInStore4(this.getDataBroker(), this.mountPointService);
+        CalculateSpanlossCurrentInput input = OlmPowerServiceRpcImplUtil.getCalculateSpanlossCurrentInput();
+        CalculateSpanlossCurrentOutput output = this.olmPowerService.calculateSpanlossCurrent(input);
+        Assert.assertEquals("Failed", output.getResult());
+    }
+
+
+    /*
+     * test servicePowerReset function in OlmPowerServiceImpl class in case of null return
+     */
     @Test
     public void testServicePowerReset() {
         ServicePowerResetInput input = OlmPowerServiceRpcImplUtil.getServicePowerResetInput();
         ServicePowerResetOutput output = this.olmPowerService.servicePowerReset(input);
         Assert.assertEquals(null, output);
     }
+
+
 }
index b0873f9f5e88a3581b6a5331af068bb48ea73c2a..a95225ccf47d6df0614392a05dbfda584e0054db 100644 (file)
@@ -13,6 +13,9 @@ import org.junit.Test;
 
 public class OtsPmHolderTest {
 
+    /*
+     * test OtsPmHolder creation
+     */
     @Test
     public void test() {
         OtsPmHolder otspmholder0 = new OtsPmHolder("name", Double.valueOf(12), "interface");
index 811a01d1bc0cbf7b40aefccbd4fd141b0a5ba5d7..9304d08fab8ec2425ebc535eb137c9c56a4b2354 100644 (file)
@@ -13,6 +13,9 @@ import org.junit.Test;
 
 public class RoadmLinksTest {
 
+    /*
+     * test RoadmLinks initialization
+     */
     @Test
     public void test() {
         RoadmLinks roadmlinks0 = new RoadmLinks();
index bd7c060ba2bd2ba27e545a19829255d3588df26f..e7f25aa93045b8358a5931138cc829e14b9f7db7 100644 (file)
@@ -14,14 +14,26 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.MountPointService;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.transportpce.common.InstanceIdentifiers;
+import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.transportpce.common.device.DeviceTransaction;
+import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.NodeTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.PmDirection;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev170929.FiberPmd;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev170929.RatioDB;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev170929.State;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.layerrate.rev161014.LayerRateEnum;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link.attributes.amplified.link.SectionElementBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.span.attributes.LinkConcatenation;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.span.attributes.LinkConcatenationBuilder;
@@ -31,8 +43,31 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev17092
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.link.oms.attributes.AmplifiedLinkBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev170929.network.link.oms.attributes.SpanBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev170929.OpenroadmLinkType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.CurrentPmlist;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.CurrentPmlistBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.current.pm.LayerRateBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.current.pm.Measurements;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.current.pm.MeasurementsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.current.pm.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.current.pm.measurements.MeasurementBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.currentpmlist.CurrentPm;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev161014.currentpmlist.CurrentPmBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmDataType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmMeasurement;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmNamesEnum;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.pm.measurement.PmParameterNameBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.DeviceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.ResourceTypeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource.resource.resource.InterfaceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NetworkId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NetworkKey;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NodeId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.network.Node;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.network.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.network.node.SupportingNode;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.network.node.SupportingNodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.LinkId;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Network1;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Network1Builder;
@@ -42,6 +77,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.top
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.link.SourceBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.link.SupportingLink;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.link.SupportingLinkBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.Network;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.network.Nodes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.network.NodesBuilder;
@@ -54,6 +90,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapp
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 
 public final class TransactionUtils {
 
@@ -69,6 +106,50 @@ public final class TransactionUtils {
         return true;
     }
 
+    public static boolean readTransaction(DataBroker dataBroker,InstanceIdentifier instanceIdentifier)
+        throws ExecutionException, InterruptedException {
+        ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
+        Object object =  transaction.read(LogicalDatastoreType.CONFIGURATION, instanceIdentifier).get();
+        return true;
+    }
+
+    public static boolean writeTransaction2(DataBroker dataBroker, InstanceIdentifier instanceIdentifier,
+        DataObject object) {
+        ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
+        transaction.put(LogicalDatastoreType.OPERATIONAL, instanceIdentifier, object, true);
+        transaction.commit();// submit(Timeouts.DATASTORE_WRITE, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT).get();
+        return true;
+    }
+
+
+    public static boolean writeNodeTransaction222(DataBroker dataBroker,
+        KeyedInstanceIdentifier<Node, NodeKey> instanceIdentifier, Node object)
+        throws ExecutionException, InterruptedException {
+        ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
+        transaction.put(LogicalDatastoreType.CONFIGURATION, instanceIdentifier, object);
+        transaction.submit();
+        Thread.sleep(500);
+        transaction = dataBroker.newReadWriteTransaction();
+        Node node = transaction.read(LogicalDatastoreType.CONFIGURATION, instanceIdentifier).get().get();
+        //        com.google.common.base.Optional<Node> realNode = transaction.read(LogicalDatastoreType.CONFIGURATION,
+        ////            instanceIdentifier).get();
+        return true;
+    }
+
+    public static boolean writeNetworkTransaction(DataBroker dataBroker,
+        InstanceIdentifier<Network1> instanceIdentifier, Network1 object)
+        throws ExecutionException, InterruptedException {
+        ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
+        transaction.put(LogicalDatastoreType.CONFIGURATION, instanceIdentifier, object);
+        transaction.submit();
+        Thread.sleep(5000);
+        transaction = dataBroker.newReadWriteTransaction();
+        Network1 network1 = transaction.read(LogicalDatastoreType.CONFIGURATION, instanceIdentifier).get().get();
+        //        com.google.common.base.Optional<Node> realNode = transaction.read(LogicalDatastoreType.CONFIGURATION,
+        ////            instanceIdentifier).get();
+        return true;
+    }
+
 //
 //    public static boolean writeTransaction(DataBroker dataBroker, LogicalDatastoreType logicalDatastoreType,
 //        InstanceIdentifier instanceIdentifier,
@@ -218,26 +299,138 @@ public final class TransactionUtils {
 
         List<SupportingLink> supportingLinks = new ArrayList<>();
         SupportingLink supportingLink = new SupportingLinkBuilder().setLinkRef("ref1")
-            .setNetworkRef(new NetworkId("net1")).build();
+            .setNetworkRef(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)).build();
         SupportingLink supportingLink2 = new SupportingLinkBuilder().setLinkRef("ref2")
-            .setNetworkRef(new NetworkId("net1")).build();
+            .setNetworkRef(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)).build();
         supportingLinks.add(supportingLink);
         supportingLinks.add(supportingLink2);
         List<Link> links = new ArrayList<>();
         Link link1 = new LinkBuilder().setLinkId(new LinkId("link 1"))
             .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 1"))
-                .setDestTp("dest tp").build())
+                .setDestTp("dest").build())
             .setSource(new SourceBuilder().setSourceNode(new NodeId("node 2"))
-                .setSourceTp("src tp").build())
+                .setSourceTp("src").build())
             .setSupportingLink(supportingLinks)
             .addAugmentation(Link1.class, aug1)
             .addAugmentation(Link1.class, aug2).build();
 
         Link link2 = new LinkBuilder().setLinkId(new LinkId("link 2"))
             .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 3"))
-                .setDestTp("dest tp").build())
+                .setDestTp("dest").build())
             .setSource(new SourceBuilder().setSourceNode(new NodeId("node 4"))
-                .setSourceTp("src tp").build())
+                .setSourceTp("src").build())
+            .setSupportingLink(supportingLinks).build();
+        links.add(link1);
+        links.add(link2);
+        Network1 network = new Network1Builder().setLink(links).build();
+        Optional.of(network);
+        return network;
+    }
+
+    public static Network1 getNetwork3() {
+        List<LinkConcatenation> linkConcentationValues = new ArrayList<>();
+        LinkConcatenation linkConcatenation = new LinkConcatenationBuilder()
+            .setFiberType(LinkConcatenation.FiberType.Truewave)
+            .setPmd(new FiberPmd(BigDecimal.ONE))
+            .setSRLGId(Long.valueOf(1))
+            .setSRLGLength(Long.valueOf(1))
+            .build();
+        LinkConcatenation linkConcatenation2 = new LinkConcatenationBuilder()
+            .setFiberType(LinkConcatenation.FiberType.Truewave)
+            .setPmd(new FiberPmd(BigDecimal.ONE))
+            .setSRLGId(Long.valueOf(1))
+            .setSRLGLength(Long.valueOf(1))
+            .build();
+        linkConcentationValues.add(linkConcatenation);
+        linkConcentationValues.add(linkConcatenation2);
+        List<org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link.attributes.AmplifiedLink>
+            amplifiedLinkValues = new ArrayList<>();
+        org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link.attributes.AmplifiedLink al = new
+            org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link.attributes
+                .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
+            .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link
+                .attributes.amplified.link.section.element.section.element.SpanBuilder()
+                .setSpan(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link
+                    .attributes.amplified.link.section.element.section.element.span.SpanBuilder()
+                    .setAdministrativeState(State.InService)
+                    .setAutoSpanloss(true)
+                    .setClfi("clfi")
+                    .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
+                    .setLinkConcatenation(linkConcentationValues)
+                    .setSpanlossBase(new RatioDB(BigDecimal.ONE))
+                    .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
+                    .build())
+                .build())
+            .build())
+            .setSectionEltNumber(Integer.valueOf(1)).build();
+        org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link.attributes.AmplifiedLink al2 = new
+            org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link.attributes
+                .AmplifiedLinkBuilder().setSectionElement(new SectionElementBuilder()
+            .setSectionElement(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link
+                .attributes.amplified.link.section.element.section.element.SpanBuilder()
+                .setSpan(new org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev170929.amplified.link
+                    .attributes.amplified.link.section.element.section.element.span.SpanBuilder()
+                    .setAdministrativeState(State.InService)
+                    .setAutoSpanloss(true)
+                    .setClfi("clfi")
+                    .setEngineeredSpanloss(new RatioDB(BigDecimal.ONE))
+                    .setLinkConcatenation(linkConcentationValues)
+                    .setSpanlossBase(new RatioDB(BigDecimal.ONE))
+                    .setSpanlossCurrent(new RatioDB(BigDecimal.ONE))
+                    .build())
+                .build())
+            .build())
+            .setSectionEltNumber(Integer.valueOf(1)).build();
+        amplifiedLinkValues.add(al);
+        amplifiedLinkValues.add(al2);
+        Map<Class<? extends Augmentation<Link>>, Augmentation<Link>> map = Collections.emptyMap();
+        Augmentation<Link> aug1 = new Link1Builder().setAdministrativeGroup(Long.valueOf(123))
+            .setAdministrativeState(State.InService)
+            .setAmplified(true)
+            .setLinkLatency(Long.valueOf(123))
+            .setLinkLength(BigDecimal.valueOf(123))
+            .setLinkType(OpenroadmLinkType.ADDLINK)
+            .setOMSAttributes(new OMSAttributesBuilder()
+                .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
+                .setOppositeLink(new LinkId("link 1"))
+                .setSpan(new SpanBuilder().build())
+                .setTEMetric(Long.valueOf(123)).build())
+            .setOperationalState(State.InService).build();
+        Augmentation<Link> aug2 = new Link1Builder().setAdministrativeGroup(Long.valueOf(123))
+            .setAdministrativeState(State.InService)
+            .setAmplified(true)
+            .setLinkLatency(Long.valueOf(123))
+            .setLinkLength(BigDecimal.valueOf(123))
+            .setLinkType(OpenroadmLinkType.EXPRESSLINK)
+            .setOMSAttributes(new OMSAttributesBuilder()
+                .setAmplifiedLink(new AmplifiedLinkBuilder().setAmplifiedLink(amplifiedLinkValues).build())
+                .setOppositeLink(new LinkId("link 1"))
+                .setSpan(new SpanBuilder().build())
+                .setTEMetric(Long.valueOf(123)).build())
+            .setOperationalState(State.InService).build();
+
+        List<SupportingLink> supportingLinks = new ArrayList<>();
+        SupportingLink supportingLink = new SupportingLinkBuilder().setLinkRef("ref1")
+            .setNetworkRef(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)).build();
+        SupportingLink supportingLink2 = new SupportingLinkBuilder().setLinkRef("ref2")
+            .setNetworkRef(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID)).build();
+        supportingLinks.add(supportingLink);
+        supportingLinks.add(supportingLink2);
+        List<Link> links = new ArrayList<>();
+        Link link1 = new LinkBuilder().setLinkId(new LinkId("link 1"))
+            .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 1"))
+                .setDestTp("dest").build())
+            .setSource(new SourceBuilder().setSourceNode(new NodeId("node 2"))
+                .setSourceTp("src").build())
+            .setSupportingLink(supportingLinks)
+            .addAugmentation(Link1.class, aug1)
+            .addAugmentation(Link1.class, aug2).build();
+
+        Link link2 = new LinkBuilder().setLinkId(new LinkId("link 2"))
+            .setDestination(new DestinationBuilder().setDestNode(new NodeId("node 3"))
+                .setDestTp("dest").build())
+            .setSource(new SourceBuilder().setSourceNode(new NodeId("node 4"))
+                .setSourceTp("src").build())
             .setSupportingLink(supportingLinks).build();
         links.add(link1);
         links.add(link2);
@@ -246,12 +439,13 @@ public final class TransactionUtils {
         return network;
     }
 
+
     public static List<NodeId> getNodeIds() {
         List<NodeId> nodes = new ArrayList<>();
         NodeId node = new NodeId("node 1");
-        NodeId node2 = new NodeId("node 1");
-        NodeId node3 = new NodeId("node 1");
-        NodeId node4 = new NodeId("node 1");
+        NodeId node2 = new NodeId("node 2");
+        NodeId node3 = new NodeId("node 3");
+        NodeId node4 = new NodeId("node 4");
         nodes.add(node);
         nodes.add(node2);
         nodes.add(node3);
@@ -352,25 +546,570 @@ public final class TransactionUtils {
         return nodes;
     }
 
-    public static void writeNodeTransaction(String nodeId, DataBroker dataBroker, String mappingKey) {
+    public static void writeNodeTransaction(String nodeId, DataBroker dataBroker, String mappingKey)
+        throws ExecutionException, InterruptedException {
         InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.create(Network.class)
             .child(Nodes.class, new NodesKey(nodeId));
         Nodes nodes = getNodes(nodeId, mappingKey);
         writeTransaction(dataBroker, nodesIID, nodes);
     }
 
-    public static void writeNodeTransaction2(String nodeId, DataBroker dataBroker, String mappingKey) {
+    public static void writeNodeTransaction2(String nodeId, DataBroker dataBroker, String mappingKey)
+        throws ExecutionException, InterruptedException {
         InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.create(Network.class)
             .child(Nodes.class, new NodesKey(nodeId));
         Nodes nodes = getNodes2(nodeId, mappingKey);
         writeTransaction(dataBroker, nodesIID, nodes);
     }
 
-    public static void writeNodeTransaction3(String nodeId, DataBroker dataBroker, String mappingKey) {
+    public static void writeNodeTransaction3(String nodeId, DataBroker dataBroker, String mappingKey)
+        throws ExecutionException, InterruptedException {
         InstanceIdentifier<Nodes> nodesIID = InstanceIdentifier.create(Network.class)
             .child(Nodes.class, new NodesKey(nodeId));
         Nodes nodes = getNodes3(nodeId, mappingKey);
         writeTransaction(dataBroker, nodesIID, nodes);
     }
 
+
+    public static  <T extends DataObject> void putAndSubmit(DeviceTransactionManagerImpl deviceTxManager,
+        String deviceId, LogicalDatastoreType store, InstanceIdentifier<T> path, T data)
+        throws ExecutionException, InterruptedException {
+        Future<Optional<DeviceTransaction>> deviceTxFuture = deviceTxManager.getDeviceTransaction(deviceId);
+        DeviceTransaction deviceTx = deviceTxFuture.get().get();
+        deviceTx.put(store, path, data);
+        deviceTx.submit(1000, TimeUnit.MILLISECONDS);
+    }
+
+    public static void prepareTestDataInStore(DataBroker dataBroker, MountPointService mountPointService)
+        throws ExecutionException, InterruptedException {
+        NodeId n5 = new NodeId("node 5");
+        SupportingNode sn = new SupportingNodeBuilder().setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+            .setNodeRef(n5).build();
+        List<SupportingNode> snl = new ArrayList<>();
+        snl.add(sn);
+        Node node = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608
+            .network.NodeBuilder().setNodeId(n5).setSupportingNode(snl).build();
+        KeyedInstanceIdentifier<Node, NodeKey> mappedNodeII2 =
+            InstanceIdentifiers.OVERLAY_NETWORK_II.child(Node.class, new NodeKey(n5));
+        TransactionUtils.writeTransaction(dataBroker, mappedNodeII2, node);
+        Thread.sleep(500);
+        InstanceIdentifier<Mapping> portMappingIID2 = InstanceIdentifier.builder(
+            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.Network.class)
+            .child(Nodes.class, new NodesKey("node 5"))
+            .child(Mapping.class, new MappingKey("dest")).build();
+        Mapping map2 = new MappingBuilder().setLogicalConnectionPoint("point")
+            .setSupportingCircuitPackName("circuit name")
+            .setSupportingOms("oms")
+            .setSupportingOts("ots")
+            .setSupportingPort("port")
+            .withKey(new MappingKey("dest"))
+            .build();
+        TransactionUtils.writeTransaction(dataBroker, portMappingIID2, map2);
+        List<NodeId> nodes = TransactionUtils.getNodeIds();
+        for (int i = 0; i < nodes.size(); i++) {
+            if (i != 0) {
+                sn = new SupportingNodeBuilder().setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+                    .setNodeRef(nodes.get(i - 1)).build();
+            } else {
+                sn = new SupportingNodeBuilder().setNodeRef(n5).setNetworkRef(
+                    new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID)).build();
+            }
+            snl = new ArrayList<>();
+            snl.add(sn);
+            node = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608
+                .network.NodeBuilder().setNodeId(nodes.get(i)).setSupportingNode(snl).build();
+            KeyedInstanceIdentifier<Node, NodeKey> mappedNodeII =
+                InstanceIdentifiers.OVERLAY_NETWORK_II.child(Node.class, new NodeKey(nodes.get(i)));
+            TransactionUtils.writeTransaction(dataBroker, mappedNodeII, node);
+            InstanceIdentifier<Mapping> portMappingIID = InstanceIdentifier.builder(
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.Network.class)
+                .child(Nodes.class, new NodesKey(nodes.get(i).getValue()))
+                .child(Mapping.class, new MappingKey("src")).build();
+            Mapping map = new MappingBuilder().setLogicalConnectionPoint("point")
+                .setSupportingCircuitPackName("circuit name")
+                .setSupportingOms("oms")
+                .setSupportingOts("ots")
+                .setSupportingPort("port")
+                .withKey(new MappingKey("src"))
+                .build();
+            TransactionUtils.writeTransaction(dataBroker, portMappingIID, map);
+        }
+
+
+        NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
+        InstanceIdentifier<Network1> networkIID = InstanceIdentifier.builder(
+            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.Network.class,
+            overlayTopologyKey).augmentation(Network1.class).build();
+        Network1 network = TransactionUtils.getNetwork2();
+        TransactionUtils.writeTransaction(dataBroker, networkIID, network);
+
+        InstanceIdentifier<CurrentPmlist> currentPmsIID = InstanceIdentifier.create(CurrentPmlist.class);
+        Measurements m0 = new MeasurementsBuilder()
+            .setMeasurement(new MeasurementBuilder()
+                .setPmParameterName(new PmParameterNameBuilder().setExtension("OpticalPowerOutput")
+                    .setType(PmNamesEnum.OpticalPowerOutput).build())
+                .setPmParameterValue(new PmDataType(BigDecimal.ONE))
+                .setPmParameterUnit("unit")
+                .setValidity(PmMeasurement.Validity.Complete)
+                .setLocation(PmMeasurement.Location.NearEnd)
+                .setDirection(PmDirection.Bidirectional)
+                .build()).build();
+        List<Measurements> ll = new ArrayList<>();
+        ll.add(m0);
+        CurrentPm c0 = new CurrentPmBuilder()
+            .setLayerRate(new LayerRateBuilder().setExtension("ext").setType(LayerRateEnum.Layer2).build())
+            .setId("c")
+            .setGranularity(PmGranularity._15min)
+            .setResource(new ResourceBuilder()
+                .setResource(new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource
+                    .ResourceBuilder().setResource(new InterfaceBuilder().setInterfaceName("ots").build()).build())
+                .setResourceType(new ResourceTypeBuilder().setType(ResourceTypeEnum.Interface).setExtension("ext")
+                .build()).setDevice(new DeviceBuilder().setNodeId("node 1").build()).build())
+            .setRetrievalTime(new DateAndTime("2019-01-01T12:00:00.456449+06:00"))
+            .setMeasurements(ll)
+            .build();
+        List<CurrentPm> cl = new ArrayList<>();
+        cl.add(c0);
+        CurrentPmlist l0 = new CurrentPmlistBuilder().setCurrentPm(cl).build();
+        TransactionUtils.putAndSubmit(new DeviceTransactionManagerImpl(mountPointService, 3000),
+            "node 1", LogicalDatastoreType.OPERATIONAL, currentPmsIID, l0);
+        Measurements m2 = new MeasurementsBuilder()
+            .setMeasurement(new MeasurementBuilder()
+                .setPmParameterName(new PmParameterNameBuilder().setExtension("OpticalPowerInput")
+                    .setType(PmNamesEnum.OpticalPowerInput).build())
+                .setPmParameterValue(new PmDataType(BigDecimal.ONE))
+                .setPmParameterUnit("unit")
+                .setValidity(PmMeasurement.Validity.Complete)
+                .setLocation(PmMeasurement.Location.NearEnd)
+                .setDirection(PmDirection.Bidirectional)
+                .build()).build();
+        List<Measurements> ll2 = new ArrayList<>();
+        ll2.add(m0);
+        ll2.add(m2);
+        CurrentPm c2 = new CurrentPmBuilder()
+            .setLayerRate(new LayerRateBuilder().setExtension("ext").setType(LayerRateEnum.Layer2).build())
+            .setId("c2")
+            .setGranularity(PmGranularity._15min)
+            .setResource(new ResourceBuilder()
+                .setResource(new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource
+                    .ResourceBuilder().setResource(new InterfaceBuilder().setInterfaceName("ots").build()).build())
+                .setResourceType(new ResourceTypeBuilder().setType(ResourceTypeEnum.Interface).setExtension("ext")
+                .build()).setDevice(new DeviceBuilder().setNodeId("node 5").build()).build())
+            .setRetrievalTime(new DateAndTime("2019-01-01T12:00:00.456449+06:00"))
+            .setMeasurements(ll2)
+            .build();
+        List<CurrentPm> cl2 = new ArrayList<>();
+        cl2.add(c2);
+        CurrentPmlist l2 = new CurrentPmlistBuilder().setCurrentPm(cl2).build();
+        InstanceIdentifier<CurrentPmlist> currentPmsIID2 = InstanceIdentifier.create(CurrentPmlist.class);
+        TransactionUtils.putAndSubmit(new DeviceTransactionManagerImpl(mountPointService, 3000),
+            "node 5", LogicalDatastoreType.OPERATIONAL, currentPmsIID2, l2);
+        Thread.sleep(1000);
+    }
+
+
+    public static void prepareTestDataInStore2(DataBroker dataBroker, MountPointService mountPointService)
+        throws ExecutionException, InterruptedException {
+        List<SupportingNode> snl;
+        NodeId n5 = new NodeId("node 5");
+        SupportingNode sn = new SupportingNodeBuilder().setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+            .setNodeRef(n5).build();
+        snl = new ArrayList<>();
+        snl.add(sn);
+        Node n0 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608
+            .network.NodeBuilder().setNodeId(n5).setSupportingNode(snl).build();
+        KeyedInstanceIdentifier<Node, NodeKey> mappedNodeII2 =
+            InstanceIdentifiers.OVERLAY_NETWORK_II.child(Node.class, new NodeKey(n5));
+        TransactionUtils.writeTransaction(dataBroker, mappedNodeII2, n0);
+        Thread.sleep(500);
+        InstanceIdentifier<Mapping> portMappingIID2 = InstanceIdentifier.builder(
+            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.Network.class)
+            .child(Nodes.class, new NodesKey("node 5"))
+            .child(Mapping.class, new MappingKey("dest")).build();
+        Mapping map2 = new MappingBuilder().setLogicalConnectionPoint("point")
+            .setSupportingCircuitPackName("circuit name")
+            .setSupportingOms("oms")
+            .setSupportingOts("ots")
+            .setSupportingPort("port")
+            .withKey(new MappingKey("dest"))
+            .build();
+        TransactionUtils.writeTransaction(dataBroker, portMappingIID2, map2);
+        List<NodeId> nodes = TransactionUtils.getNodeIds();
+        for (int i = 0; i < nodes.size(); i++) {
+            if (i != 0) {
+                sn = new SupportingNodeBuilder().setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+                    .setNodeRef(nodes.get(i - 1)).build();
+            } else {
+                sn = new SupportingNodeBuilder().setNodeRef(n5).setNetworkRef(
+                    new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID)).build();
+            }
+            snl = new ArrayList<>();
+            snl.add(sn);
+            n0 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608
+                .network.NodeBuilder().setNodeId(nodes.get(i)).setSupportingNode(snl).build();
+            KeyedInstanceIdentifier<Node, NodeKey> mappedNodeII =
+                InstanceIdentifiers.OVERLAY_NETWORK_II.child(Node.class, new NodeKey(nodes.get(i)));
+            TransactionUtils.writeTransaction(dataBroker, mappedNodeII, n0);
+            InstanceIdentifier<Mapping> portMappingIID = InstanceIdentifier.builder(
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.Network.class)
+                .child(Nodes.class, new NodesKey(nodes.get(i).getValue()))
+                .child(Mapping.class, new MappingKey("src")).build();
+            Mapping map = new MappingBuilder().setLogicalConnectionPoint("point")
+                .setSupportingCircuitPackName("circuit name")
+                .setSupportingOms("oms")
+                .setSupportingOts("ots")
+                .setSupportingPort("port")
+                .withKey(new MappingKey("src"))
+                .build();
+            TransactionUtils.writeTransaction(dataBroker, portMappingIID, map);
+
+        }
+
+
+        NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
+        InstanceIdentifier<Network1> networkIID = InstanceIdentifier.builder(
+            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.Network.class,
+            overlayTopologyKey).augmentation(Network1.class).build();
+        Network1 network = TransactionUtils.getNetwork2();
+        TransactionUtils.writeTransaction(dataBroker, networkIID, network);
+
+        InstanceIdentifier<CurrentPmlist> currentPmsIID = InstanceIdentifier.create(CurrentPmlist.class);
+        Measurements m0 = new MeasurementsBuilder()
+            .setMeasurement(new MeasurementBuilder()
+                .setPmParameterName(new PmParameterNameBuilder().setExtension("OpticalPowerOutput")
+                    .setType(PmNamesEnum.OpticalPowerOutput).build())
+                .setPmParameterValue(new PmDataType(BigDecimal.TEN))
+                .setPmParameterUnit("unit")
+                .setValidity(PmMeasurement.Validity.Complete)
+                .setLocation(PmMeasurement.Location.NearEnd)
+                .setDirection(PmDirection.Bidirectional)
+                .build()).build();
+        List<Measurements> ll = new ArrayList<>();
+        ll.add(m0);
+        CurrentPm c0 = new CurrentPmBuilder()
+            .setLayerRate(new LayerRateBuilder().setExtension("ext").setType(LayerRateEnum.Layer2).build())
+            .setId("c")
+            .setGranularity(PmGranularity._15min)
+            .setResource(new ResourceBuilder()
+                .setResource(new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource
+                    .ResourceBuilder().setResource(new InterfaceBuilder().setInterfaceName("ots").build()).build())
+                .setResourceType(new ResourceTypeBuilder().setType(ResourceTypeEnum.Interface).setExtension("ext")
+                .build()).setDevice(new DeviceBuilder().setNodeId("node 1").build()).build())
+            .setRetrievalTime(new DateAndTime("2019-01-01T12:00:00.456449+06:00"))
+            .setMeasurements(ll)
+            .build();
+        List<CurrentPm> cl = new ArrayList<>();
+        cl.add(c0);
+        CurrentPmlist l0 = new CurrentPmlistBuilder().setCurrentPm(cl).build();
+        TransactionUtils.putAndSubmit(new DeviceTransactionManagerImpl(mountPointService, 3000),
+            "node 1", LogicalDatastoreType.OPERATIONAL, currentPmsIID, l0);
+
+        Measurements m2 = new MeasurementsBuilder()
+            .setMeasurement(new MeasurementBuilder()
+                .setPmParameterName(new PmParameterNameBuilder().setExtension("OpticalPowerInput")
+                    .setType(PmNamesEnum.OpticalPowerInput).build())
+                .setPmParameterValue(new PmDataType(BigDecimal.ONE))
+                .setPmParameterUnit("unit")
+                .setValidity(PmMeasurement.Validity.Complete)
+                .setLocation(PmMeasurement.Location.NearEnd)
+                .setDirection(PmDirection.Bidirectional)
+                .build()).build();
+        List<Measurements> ll2 = new ArrayList<>();
+        ll2.add(m0);
+        ll2.add(m2);
+        CurrentPm c2 = new CurrentPmBuilder()
+            .setLayerRate(new LayerRateBuilder().setExtension("ext").setType(LayerRateEnum.Layer2).build())
+            .setId("c2")
+            .setGranularity(PmGranularity._15min)
+            .setResource(new ResourceBuilder()
+                .setResource(new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource
+                    .ResourceBuilder().setResource(new InterfaceBuilder().setInterfaceName("ots").build()).build())
+                .setResourceType(new ResourceTypeBuilder().setType(ResourceTypeEnum.Interface).setExtension("ext")
+                    .build()).setDevice(new DeviceBuilder().setNodeId("node 5").build()).build())
+            .setRetrievalTime(new DateAndTime("2019-01-01T12:00:00.456449+06:00"))
+            .setMeasurements(ll2)
+            .build();
+        List<CurrentPm> cl2 = new ArrayList<>();
+        cl2.add(c2);
+        CurrentPmlist l2 = new CurrentPmlistBuilder().setCurrentPm(cl2).build();
+        InstanceIdentifier<CurrentPmlist> currentPmsIID2 = InstanceIdentifier.create(CurrentPmlist.class);
+        TransactionUtils.putAndSubmit(new DeviceTransactionManagerImpl(mountPointService, 3000),
+            "node 5", LogicalDatastoreType.OPERATIONAL, currentPmsIID2, l2);
+
+        Thread.sleep(1000);
+    }
+
+    public static void prepareTestDataInStore3(DataBroker dataBroker, MountPointService mountPointService)
+        throws ExecutionException, InterruptedException {
+        List<SupportingNode> snl;
+        NodeId n5 = new NodeId("node 5");
+        SupportingNode sn = new SupportingNodeBuilder().setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+            .setNodeRef(n5).build();
+        snl = new ArrayList<>();
+        snl.add(sn);
+        Node n0 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608
+            .network.NodeBuilder().setNodeId(n5).setSupportingNode(snl).build();
+        KeyedInstanceIdentifier<Node, NodeKey> mappedNodeII2 =
+            InstanceIdentifiers.OVERLAY_NETWORK_II.child(Node.class, new NodeKey(n5));
+        TransactionUtils.writeTransaction(dataBroker, mappedNodeII2, n0);
+        Thread.sleep(500);
+        InstanceIdentifier<Mapping> portMappingIID2 = InstanceIdentifier.builder(
+            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.Network.class)
+            .child(Nodes.class, new NodesKey("node 5"))
+            .child(Mapping.class, new MappingKey("dest")).build();
+        Mapping map2 = new MappingBuilder().setLogicalConnectionPoint("point")
+            .setSupportingCircuitPackName("circuit name")
+            .setSupportingOms("oms")
+            .setSupportingOts("ots")
+            .setSupportingPort("port")
+            .withKey(new MappingKey("dest"))
+            .build();
+        TransactionUtils.writeTransaction(dataBroker, portMappingIID2, map2);
+        List<NodeId> nodes = TransactionUtils.getNodeIds();
+        for (int i = 0; i < nodes.size(); i++) {
+            if (i != 0) {
+                sn = new SupportingNodeBuilder().setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+                    .setNodeRef(nodes.get(i - 1)).build();
+            } else {
+                sn = new SupportingNodeBuilder().setNodeRef(n5).setNetworkRef(
+                    new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID)).build();
+            }
+            snl = new ArrayList<>();
+            snl.add(sn);
+            n0 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608
+                .network.NodeBuilder().setNodeId(nodes.get(i)).setSupportingNode(snl).build();
+            KeyedInstanceIdentifier<Node, NodeKey> mappedNodeII =
+                InstanceIdentifiers.OVERLAY_NETWORK_II.child(Node.class, new NodeKey(nodes.get(i)));
+            TransactionUtils.writeTransaction(dataBroker, mappedNodeII, n0);
+
+            InstanceIdentifier<Mapping> portMappingIID = InstanceIdentifier.builder(
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.Network.class)
+                .child(Nodes.class, new NodesKey(nodes.get(i).getValue()))
+                .child(Mapping.class, new MappingKey("src")).build();
+            Mapping map = new MappingBuilder().setLogicalConnectionPoint("point")
+                .setSupportingCircuitPackName("circuit name")
+                .setSupportingOms("oms")
+                .setSupportingOts("ots")
+                .setSupportingPort("port")
+                .withKey(new MappingKey("src"))
+                .build();
+            TransactionUtils.writeTransaction(dataBroker, portMappingIID, map);
+
+        }
+
+        NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
+        InstanceIdentifier<Network1> networkIID = InstanceIdentifier.builder(
+            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.Network.class,
+            overlayTopologyKey)
+            .augmentation(Network1.class)
+            .build();
+        Network1 network = TransactionUtils.getNetwork2();
+        TransactionUtils.writeTransaction(dataBroker, networkIID, network);
+
+        InstanceIdentifier<CurrentPmlist> currentPmsIID = InstanceIdentifier.create(CurrentPmlist.class);
+        Measurements m0 = new MeasurementsBuilder()
+            .setMeasurement(new MeasurementBuilder()
+                .setPmParameterName(new PmParameterNameBuilder().setExtension("OpticalPowerOutput")
+                    .setType(PmNamesEnum.OpticalPowerOutput).build())
+                .setPmParameterValue(new PmDataType(new BigDecimal(30)))
+                .setPmParameterUnit("unit")
+                .setValidity(PmMeasurement.Validity.Complete)
+                .setLocation(PmMeasurement.Location.NearEnd)
+                .setDirection(PmDirection.Bidirectional)
+                .build()).build();
+        List<Measurements> ll = new ArrayList<>();
+        ll.add(m0);
+        CurrentPm c0 = new CurrentPmBuilder()
+            .setLayerRate(new LayerRateBuilder().setExtension("ext").setType(LayerRateEnum.Layer2).build())
+            .setId("c")
+            .setGranularity(PmGranularity._15min)
+            .setResource(new ResourceBuilder()
+                .setResource(new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource
+                    .ResourceBuilder().setResource(new InterfaceBuilder().setInterfaceName("ots").build()).build())
+                .setResourceType(new ResourceTypeBuilder().setType(ResourceTypeEnum.Interface).setExtension("ext")
+                .build()).setDevice(new DeviceBuilder().setNodeId("node 1").build()).build())
+            .setRetrievalTime(new DateAndTime("2019-01-01T12:00:00.456449+06:00"))
+            .setMeasurements(ll)
+            .build();
+        List<CurrentPm> cl = new ArrayList<>();
+        cl.add(c0);
+        CurrentPmlist l0 = new CurrentPmlistBuilder().setCurrentPm(cl).build();
+        TransactionUtils.putAndSubmit(new DeviceTransactionManagerImpl(mountPointService, 3000),
+            "node 1", LogicalDatastoreType.OPERATIONAL, currentPmsIID, l0);
+        Measurements m2 = new MeasurementsBuilder()
+            .setMeasurement(new MeasurementBuilder()
+                .setPmParameterName(new PmParameterNameBuilder().setExtension("OpticalPowerInput")
+                    .setType(PmNamesEnum.OpticalPowerInput).build())
+                .setPmParameterValue(new PmDataType(BigDecimal.ONE))
+                .setPmParameterUnit("unit")
+                .setValidity(PmMeasurement.Validity.Complete)
+                .setLocation(PmMeasurement.Location.NearEnd)
+                .setDirection(PmDirection.Bidirectional)
+                .build()).build();
+        List<Measurements> ll2 = new ArrayList<>();
+        ll2.add(m0);
+        ll2.add(m2);
+        CurrentPm c2 = new CurrentPmBuilder()
+            .setLayerRate(new LayerRateBuilder().setExtension("ext").setType(LayerRateEnum.Layer2).build())
+            .setId("c2")
+            .setGranularity(PmGranularity._15min)
+            .setResource(new ResourceBuilder()
+                .setResource(new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource
+                    .ResourceBuilder().setResource(new InterfaceBuilder().setInterfaceName("ots").build()).build())
+                .setResourceType(new ResourceTypeBuilder().setType(ResourceTypeEnum.Interface).setExtension("ext")
+                    .build())
+                .setDevice(new DeviceBuilder().setNodeId("node 5").build()).build())
+            .setRetrievalTime(new DateAndTime("2019-01-01T12:00:00.456449+06:00"))
+            .setMeasurements(ll2)
+            .build();
+        List<CurrentPm> cl2 = new ArrayList<>();
+        cl2.add(c2);
+        CurrentPmlist l2 = new CurrentPmlistBuilder().setCurrentPm(cl2).build();
+        InstanceIdentifier<CurrentPmlist> currentPmsIID2 = InstanceIdentifier.create(CurrentPmlist.class);
+        TransactionUtils.putAndSubmit(new DeviceTransactionManagerImpl(mountPointService, 3000),
+            "node 5", LogicalDatastoreType.OPERATIONAL, currentPmsIID2, l2);
+
+        Thread.sleep(1000);
+    }
+
+    public static void prepareTestDataInStore4(DataBroker dataBroker, MountPointService mountPointService)
+        throws ExecutionException, InterruptedException {
+        List<SupportingNode> snl;
+        NodeId n5 = new NodeId("node 5");
+        SupportingNode sn = new SupportingNodeBuilder().setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+            .setNodeRef(n5).build();
+        snl = new ArrayList<>();
+        snl.add(sn);
+        Node n0 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608
+            .network.NodeBuilder().setNodeId(n5).setSupportingNode(snl).build();
+        KeyedInstanceIdentifier<Node, NodeKey> mappedNodeII2 =
+            InstanceIdentifiers.OVERLAY_NETWORK_II.child(Node.class, new NodeKey(n5));
+        TransactionUtils.writeTransaction(dataBroker, mappedNodeII2, n0);
+        Thread.sleep(500);
+        InstanceIdentifier<Mapping> portMappingIID2 = InstanceIdentifier.builder(
+            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.Network.class)
+            .child(Nodes.class, new NodesKey("node 5"))
+            .child(Mapping.class, new MappingKey("dest")).build();
+        Mapping map2 = new MappingBuilder().setLogicalConnectionPoint("point")
+            .setSupportingCircuitPackName("circuit name")
+            .setSupportingOms("oms")
+            .setSupportingOts("ots")
+            .setSupportingPort("port")
+            .withKey(new MappingKey("dest"))
+            .build();
+        TransactionUtils.writeTransaction(dataBroker, portMappingIID2, map2);
+        List<NodeId> nodes = TransactionUtils.getNodeIds();
+        for (int i = 0; i < nodes.size(); i++) {
+            if (i != 0) {
+                sn = new SupportingNodeBuilder().setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
+                    .setNodeRef(nodes.get(i - 1)).build();
+            } else {
+                sn = new SupportingNodeBuilder().setNodeRef(n5).setNetworkRef(
+                    new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID)).build();
+            }
+            snl = new ArrayList<>();
+            snl.add(sn);
+            n0 = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608
+                .network.NodeBuilder().setNodeId(nodes.get(i)).setSupportingNode(snl).build();
+            KeyedInstanceIdentifier<Node, NodeKey> mappedNodeII =
+                InstanceIdentifiers.OVERLAY_NETWORK_II.child(Node.class, new NodeKey(nodes.get(i)));
+            TransactionUtils.writeTransaction(dataBroker, mappedNodeII, n0);
+
+            InstanceIdentifier<Mapping> portMappingIID = InstanceIdentifier.builder(
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.portmapping.rev170228.Network.class)
+                .child(Nodes.class, new NodesKey(nodes.get(i).getValue()))
+                .child(Mapping.class, new MappingKey("src")).build();
+            Mapping map = new MappingBuilder().setLogicalConnectionPoint("point")
+                .setSupportingCircuitPackName("circuit name")
+                .setSupportingOms("oms")
+                .setSupportingOts("ots")
+                .setSupportingPort("port")
+                .withKey(new MappingKey("src"))
+                .build();
+            TransactionUtils.writeTransaction(dataBroker, portMappingIID, map);
+
+        }
+
+        NetworkKey overlayTopologyKey = new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID));
+        InstanceIdentifier<Network1> networkIID = InstanceIdentifier.builder(
+            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.Network.class,
+            overlayTopologyKey).augmentation(Network1.class).build();
+        Network1 network = TransactionUtils.getNetwork2();
+        TransactionUtils.writeTransaction(dataBroker, networkIID, network);
+
+        Measurements m0 = new MeasurementsBuilder()
+            .setMeasurement(new MeasurementBuilder()
+                .setPmParameterName(new PmParameterNameBuilder().setExtension("OpticalPowerOutput")
+                    .setType(PmNamesEnum.OpticalPowerOutput).build())
+                .setPmParameterValue(new PmDataType(BigDecimal.TEN))
+                .setPmParameterUnit("unit")
+                .setValidity(PmMeasurement.Validity.Complete)
+                .setLocation(PmMeasurement.Location.NearEnd)
+                .setDirection(PmDirection.Bidirectional)
+                .build()).build();
+        List<Measurements> ll = new ArrayList<>();
+        ll.add(m0);
+        CurrentPm c0 = new CurrentPmBuilder()
+            .setLayerRate(new LayerRateBuilder().setExtension("ext").setType(LayerRateEnum.Layer2).build())
+            .setId("c")
+            .setGranularity(PmGranularity._15min)
+            .setResource(new ResourceBuilder()
+                .setResource(new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource
+                .ResourceBuilder().setResource(new InterfaceBuilder().setInterfaceName("ots").build()).build())
+                .setResourceType(new ResourceTypeBuilder().setType(ResourceTypeEnum.Interface).setExtension("ext")
+                .build()).setDevice(new DeviceBuilder().setNodeId("node 1").build()).build())
+            .setRetrievalTime(new DateAndTime("2019-01-01T12:00:00.456449+06:00"))
+            .setMeasurements(ll)
+            .build();
+        List<CurrentPm> cl = new ArrayList<>();
+        cl.add(c0);
+        CurrentPmlist l0 = new CurrentPmlistBuilder().setCurrentPm(cl).build();
+        InstanceIdentifier<CurrentPmlist> currentPmsIID = InstanceIdentifier.create(CurrentPmlist.class);
+        TransactionUtils.putAndSubmit(new DeviceTransactionManagerImpl(mountPointService, 3000),
+            "node 1", LogicalDatastoreType.OPERATIONAL, currentPmsIID, l0);
+        Measurements m2 = new MeasurementsBuilder()
+            .setMeasurement(new MeasurementBuilder()
+                .setPmParameterName(new PmParameterNameBuilder().setExtension("OpticalPowerInput")
+                    .setType(PmNamesEnum.OpticalPowerInput).build())
+                .setPmParameterValue(new PmDataType(BigDecimal.ONE))
+                .setPmParameterUnit("unit")
+                .setValidity(PmMeasurement.Validity.Complete)
+                .setLocation(PmMeasurement.Location.NearEnd)
+                .setDirection(PmDirection.Bidirectional)
+                .build()).build();
+        List<Measurements> ll2 = new ArrayList<>();
+        ll2.add(m0);
+        ll2.add(m2);
+        CurrentPm c2 = new CurrentPmBuilder()
+            .setLayerRate(new LayerRateBuilder().setExtension("ext").setType(LayerRateEnum.Layer2).build())
+            .setId("c2")
+            .setGranularity(PmGranularity._15min)
+            .setResource(new ResourceBuilder()
+                .setResource(new org.opendaylight.yang.gen.v1.http.org.openroadm.resource.rev161014.resource
+                    .ResourceBuilder().setResource(new InterfaceBuilder().setInterfaceName("ots").build()).build())
+                .setResourceType(new ResourceTypeBuilder().setType(ResourceTypeEnum.Interface).setExtension("ext")
+                    .build()).setDevice(new DeviceBuilder().setNodeId("node 5").build()).build())
+            .setRetrievalTime(new DateAndTime("2019-01-01T12:00:00.456449+06:00"))
+            .setMeasurements(ll2)
+            .build();
+        List<CurrentPm> cl2 = new ArrayList<>();
+        cl2.add(c2);
+        CurrentPmlist l2 = new CurrentPmlistBuilder().setCurrentPm(cl2).build();
+        InstanceIdentifier<CurrentPmlist> currentPmsIID2 = InstanceIdentifier.create(CurrentPmlist.class);
+        TransactionUtils.putAndSubmit(new DeviceTransactionManagerImpl(mountPointService, 3000),
+            "node 5", LogicalDatastoreType.OPERATIONAL, currentPmsIID2, l2);
+
+        InstanceIdentifier<Interface> interfacesIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+            .child(Interface.class, new InterfaceKey("ots"));
+        Interface i0 = new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp
+            .InterfaceBuilder()
+            .setName("ots")
+            .build();
+
+        TransactionUtils.putAndSubmit(new DeviceTransactionManagerImpl(mountPointService, 3000),
+            "node 1", LogicalDatastoreType.CONFIGURATION, interfacesIID, i0);
+
+        Thread.sleep(1000);
+    }
+
 }
index 41cd955f8de39236bacd54dea4246ab475257384..0ac1d4c9e5c069cbb2dd692310799627caef281c 100644 (file)
@@ -8,9 +8,15 @@
 
 package org.opendaylight.transportpce.pce;
 
+import java.util.concurrent.ExecutionException;
 import org.junit.Before;
 import org.junit.Test;
+import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
+import org.opendaylight.transportpce.pce.impl.PceServiceRPCImpl;
+import org.opendaylight.transportpce.pce.service.PathComputationService;
+import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
 import org.opendaylight.transportpce.pce.utils.PceTestData;
+import org.opendaylight.transportpce.pce.utils.PceTestUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestInput;
 
@@ -26,10 +32,11 @@ public class PceSendingPceRPCsTest extends AbstractTest {
     }
 
     @Test
-    public void test() {
+    public void test(){
 //        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil()
 //            , "topologyData/NW-for-test-5-4.xml");
         pceSendingPceRPCs.pathComputation();
     }
 
+
 }
index 3d844243baa69bdf1207ebb9f499fae3c7513e6f..54f60f2bcb343c2244bb334c4f5f5c6d7441a46b 100644 (file)
@@ -10,12 +10,13 @@ package org.opendaylight.transportpce.pce.impl;
 
 import org.junit.Before;
 import org.junit.Test;
-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.transportpce.pce.service.PathComputationService;
 import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
+import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
 import org.opendaylight.transportpce.pce.stub.RpcProviderRegistryStub;
+import org.opendaylight.transportpce.pce.utils.NotificationPublishServiceMock;
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PceService;
 
@@ -36,7 +37,7 @@ public class PceProviderTest extends AbstractTest {
     }
 
     @Test
-    public void testIntialization() {
+    public void testIntialization(){
         pceProvider.init();
         pceProvider.close();
     }
index 9f59e17f99a28177e5ee8748f828263cbe4ba2a5..59c6ebe9415a42ecba673b7f80d995d83879c6c1 100644 (file)
@@ -19,10 +19,7 @@ import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
 import org.opendaylight.transportpce.pce.utils.DataUtils;
 import org.opendaylight.transportpce.pce.utils.PceTestData;
 import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.CancelResourceReserveInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.CancelResourceReserveOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.*;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 
 public class PceServiceRPCImplTest extends AbstractTest {
index 0c6e4d7a9bb5a324d44bb51320a84b61f219b129..506130d40c3d641ce1987214ab25b89125640970 100644 (file)
@@ -13,16 +13,9 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
-import org.opendaylight.transportpce.pce.utils.DataStoreUtils;
-import org.opendaylight.transportpce.pce.utils.DataUtils;
-import org.opendaylight.transportpce.pce.utils.NotificationPublishServiceMock2;
-import org.opendaylight.transportpce.pce.utils.PceTestData;
-import org.opendaylight.transportpce.pce.utils.PceTestUtils;
+import org.opendaylight.transportpce.pce.utils.*;
 import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.CancelResourceReserveInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.CancelResourceReserveOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.*;
 
 public class PathComputationServiceImplTest extends AbstractTest {
 
@@ -36,42 +29,38 @@ public class PathComputationServiceImplTest extends AbstractTest {
     }
 
     @Test
-    public void dummyTest() {
+    public void dummyTest(){
         pathComputationServiceImpl.init();
         pathComputationServiceImpl.close();
     }
 
 
     @Test
-    public void testCancelResourceReserve() {
+    public void testCancelResourceReserve(){
         CancelResourceReserveInput input = DataUtils.getCancelResourceReserveInput();
         CancelResourceReserveOutput output = pathComputationServiceImpl.cancelResourceReserve(input);
         Assert.assertEquals("200", output.getConfigurationResponseCommon().getResponseCode());
         Assert.assertEquals("Yes", output.getConfigurationResponseCommon().getAckFinalIndicator());
-        Assert.assertEquals(input.getServiceHandlerHeader().getRequestId(),
-            output.getConfigurationResponseCommon().getRequestId());
-        Assert.assertEquals("Cancelling ResourceReserve failed !",
-            output.getConfigurationResponseCommon().getResponseMessage());
+        Assert.assertEquals(input.getServiceHandlerHeader().getRequestId(), output.getConfigurationResponseCommon().getRequestId());
+        Assert.assertEquals("Cancelling ResourceReserve failed !", output.getConfigurationResponseCommon().getResponseMessage());
     }
 
     @Test
-    public void testCancelResourceReserve2() {
+    public void testCancelResourceReserve2(){
         notificationPublishService = new NotificationPublishServiceMock2();
         pathComputationServiceImpl = new PathComputationServiceImpl(this.getDataBroker(), notificationPublishService);
         CancelResourceReserveInput input = DataUtils.getCancelResourceReserveInput();
         CancelResourceReserveOutput output = pathComputationServiceImpl.cancelResourceReserve(input);
         Assert.assertEquals("200", output.getConfigurationResponseCommon().getResponseCode());
         Assert.assertEquals("Yes", output.getConfigurationResponseCommon().getAckFinalIndicator());
-        Assert.assertEquals(input.getServiceHandlerHeader().getRequestId(),
-            output.getConfigurationResponseCommon().getRequestId());
-        Assert.assertEquals("Cancelling ResourceReserve failed !",
-            output.getConfigurationResponseCommon().getResponseMessage());
+        Assert.assertEquals(input.getServiceHandlerHeader().getRequestId(), output.getConfigurationResponseCommon().getRequestId());
+        Assert.assertEquals("Cancelling ResourceReserve failed !", output.getConfigurationResponseCommon().getResponseMessage());
     }
 
     @Test
     public void testPathComputationRequest() throws ExecutionException, InterruptedException {
-        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil(),
-            "topologyData/NW-for-test-5-4.xml");
+        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil()
+            "topologyData/NW-for-test-5-4.xml");
         PathComputationRequestInput input = PceTestData.getEmptyPCERequest();
         PathComputationRequestOutput output = pathComputationServiceImpl.pathComputationRequest(input);
         Assert.assertEquals("Path not calculated", output.getConfigurationResponseCommon().getResponseCode());
@@ -79,8 +68,8 @@ public class PathComputationServiceImplTest extends AbstractTest {
 
     @Test
     public void testPathComputationRequest2() throws ExecutionException, InterruptedException {
-        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil(),
-            "topologyData/NW-for-test-5-4.xml");
+        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil()
+        , "topologyData/NW-for-test-5-4.xml");
         PathComputationRequestInput input = PceTestData.getPCE_test1_request_54();
         PathComputationRequestOutput output = pathComputationServiceImpl.pathComputationRequest(input);
         Assert.assertEquals("200", output.getConfigurationResponseCommon().getResponseCode());
@@ -90,8 +79,8 @@ public class PathComputationServiceImplTest extends AbstractTest {
     public void testPathComputationRequest21() throws ExecutionException, InterruptedException {
         notificationPublishService = new NotificationPublishServiceMock2();
         pathComputationServiceImpl = new PathComputationServiceImpl(this.getDataBroker(), notificationPublishService);
-        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil(),
-            "topologyData/NW-for-test-5-4.xml");
+        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil()
+            "topologyData/NW-for-test-5-4.xml");
         PathComputationRequestInput input = PceTestData.getPCE_test1_request_54();
         PathComputationRequestOutput output = pathComputationServiceImpl.pathComputationRequest(input);
         Assert.assertEquals("200", output.getConfigurationResponseCommon().getResponseCode());
@@ -105,10 +94,47 @@ public class PathComputationServiceImplTest extends AbstractTest {
         Assert.assertEquals("500", output.getConfigurationResponseCommon().getResponseCode());
     }
 
+    @Test
+    public void testPathComputationRequest23() throws ExecutionException, InterruptedException {
+        DataStoreUtils.writeTopologyIntoDataStore(this.getDataBroker(), DataStoreUtils.getNetwork1());
+        PathComputationRequestInput input = PceTestData.getPCE_test1_request_54();
+        PathComputationRequestOutput output = pathComputationServiceImpl.pathComputationRequest(input);
+        Assert.assertEquals("500", output.getConfigurationResponseCommon().getResponseCode());
+    }
+
+    @Test
+    public void testPathComputationRequest24() throws ExecutionException, InterruptedException {
+        DataStoreUtils.writeTopologyIntoDataStore(this.getDataBroker(), DataStoreUtils.getNetwork2());
+        PathComputationRequestInput input = PceTestData.getPCE_test1_request_54();
+        PathComputationRequestOutput output = pathComputationServiceImpl.pathComputationRequest(input);
+        Assert.assertEquals("500", output.getConfigurationResponseCommon().getResponseCode());
+    }
+
+    /**
+     *
+     * @throws ExecutionException
+     * @throws InterruptedException
+     */
+    @Test
+    public void testPathComputationRequest25() throws ExecutionException, InterruptedException {
+        DataStoreUtils.writeTopologyIntoDataStore(this.getDataBroker(), DataStoreUtils.getNetwork3());
+        PathComputationRequestInput input = PceTestData.getPCE_test1_request_54();
+        PathComputationRequestOutput output = pathComputationServiceImpl.pathComputationRequest(input);
+        Assert.assertEquals("500", output.getConfigurationResponseCommon().getResponseCode());
+    }
+
+//    @Test
+//    public void testPathComputationRequest26() throws ExecutionException, InterruptedException {
+//        DataStoreUtils.writeTopologyIntoDataStore(this.getDataBroker(), DataStoreUtils.getNetwork4());
+//        PathComputationRequestInput input = PceTestData.getPCE_test1_request_54();
+//        PathComputationRequestOutput output = pathComputationServiceImpl.pathComputationRequest(input);
+//        Assert.assertEquals("500", output.getConfigurationResponseCommon().getResponseCode());
+//    }
+
     @Test
     public void testPathComputationRequest3() throws ExecutionException, InterruptedException {
-        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil(),
-            "topologyData/NW-for-test-5-4.xml");
+        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil()
+            "topologyData/NW-for-test-5-4.xml");
         PathComputationRequestInput input = PceTestData.getPCE_test2_request_54();
         PathComputationRequestOutput output = pathComputationServiceImpl.pathComputationRequest(input);
         Assert.assertEquals("200", output.getConfigurationResponseCommon().getResponseCode());
@@ -117,8 +143,8 @@ public class PathComputationServiceImplTest extends AbstractTest {
 
     @Test
     public void testPathComputationRequest4() throws ExecutionException, InterruptedException {
-        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil(),
-            "topologyData/NW-for-test-5-4.xml");
+        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil()
+            "topologyData/NW-for-test-5-4.xml");
         PathComputationRequestInput input = PceTestData.getPCE_test3_request_54();
         PathComputationRequestOutput output = pathComputationServiceImpl.pathComputationRequest(input);
         Assert.assertEquals("200", output.getConfigurationResponseCommon().getResponseCode());
@@ -126,8 +152,8 @@ public class PathComputationServiceImplTest extends AbstractTest {
 
     @Test
     public void testPathComputationRequest5() throws ExecutionException, InterruptedException {
-        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil(),
-            "topologyData/NW-for-test-5-4.xml");
+        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil()
+            "topologyData/NW-for-test-5-4.xml");
         PathComputationRequestInput input = PceTestData.getPCERequest();
         PathComputationRequestOutput output = pathComputationServiceImpl.pathComputationRequest(input);
         Assert.assertEquals("200", output.getConfigurationResponseCommon().getResponseCode());
@@ -136,8 +162,8 @@ public class PathComputationServiceImplTest extends AbstractTest {
 
     @Test
     public void testPathComputationRequest6() throws ExecutionException, InterruptedException {
-        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil(),
-            "topologyData/NW-simple-topology.xml");
+        PceTestUtils.writeTopologyIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil()
+            "topologyData/NW-simple-topology.xml");
         PathComputationRequestInput input = PceTestData.getPCE_simpletopology_test1_request();
         PathComputationRequestOutput output = pathComputationServiceImpl.pathComputationRequest(input);
         Assert.assertEquals("200", output.getConfigurationResponseCommon().getResponseCode());
index c0b4da8c92049e4235561e196fa7b450329b25e2..cd8338bed571452a2451ebd80e1eb3027f4d8b49 100644 (file)
@@ -8,23 +8,28 @@
 
 package org.opendaylight.transportpce.pce.utils;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.ExecutionException;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.NetworkUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.Network;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NetworkId;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.NetworkKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.*;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.network.NetworkTypesBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.network.Node;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev150608.network.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.LinkId;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Network1;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.Network1Builder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.Link;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev150608.network.LinkBuilder;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 public final class DataStoreUtils {
 
+
     public static void writeTopologyIntoDataStore(DataBroker dataBroker, Network network)
         throws ExecutionException, InterruptedException {
         InstanceIdentifier<Network> nwInstanceIdentifier = InstanceIdentifier
@@ -34,16 +39,73 @@ public final class DataStoreUtils {
         writeOnlyTransaction.submit().get();
     }
 
-    public static Network getEmptyNetwork() {
+    public static Network getEmptyNetwork(){
+        Augmentation<Network> aug = new Network1Builder().build();
+        Network network = new NetworkBuilder()
+            .setNetworkId(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))
+            .addAugmentation(Network1.class, aug)
+            .setNetworkTypes(new NetworkTypesBuilder().build())
+            .build();
+        return network;
+    }
+
+    public static Network getNetwork1(){
+        List<Node> nodes = new ArrayList<>();
+        Node node1 = new NodeBuilder()
+            .setNodeId(new NodeId("node 1"))
+            .build();
+        nodes.add(node1);
         Augmentation<Network> aug = new Network1Builder().build();
         Network network = new NetworkBuilder()
             .setNetworkId(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))
+            .setNode(nodes)
             .addAugmentation(Network1.class, aug)
             .setNetworkTypes(new NetworkTypesBuilder().build())
             .build();
         return network;
     }
 
-    private DataStoreUtils() {
+    public static Network getNetwork2(){
+        List<Node> nodes = new ArrayList<>();
+        Augmentation<Network> aug = new Network1Builder().build();
+        Network network = new NetworkBuilder()
+            .setNetworkId(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))
+            .setNode(nodes)
+            .addAugmentation(Network1.class, aug)
+            .setNetworkTypes(new NetworkTypesBuilder().build())
+            .build();
+        return network;
+    }
+
+    public static Network getNetwork3(){
+        List<Link> links = new ArrayList<>();
+        List<Node> nodes = new ArrayList<>();
+        Augmentation<Network> aug = new Network1Builder().setLink(links).build();
+        Network network = new NetworkBuilder()
+            .setNetworkId(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))
+            .setNode(nodes)
+            .addAugmentation(Network1.class, aug)
+            .setNetworkTypes(new NetworkTypesBuilder().build())
+            .build();
+        return network;
+    }
+
+    public static Network getNetwork4(){
+        List<Link> links = new ArrayList<>();
+        Link link1 = new LinkBuilder()
+            .setLinkId(new LinkId("link1"))
+            .build();
+        links.add(link1);
+        List<Node> nodes = new ArrayList<>();
+        Node node1 = null;
+        nodes.add(node1);
+        Augmentation<Network> aug = new Network1Builder().setLink(links).build();
+        Network network = new NetworkBuilder()
+            .setNetworkId(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))
+            .setNode(nodes)
+            .addAugmentation(Network1.class, aug)
+            .setNetworkTypes(new NetworkTypesBuilder().build())
+            .build();
+        return network;
     }
 }
index a2046c42d5c9b4884884c7c99f9d441700ee44be..b453b55c5badfeb6513b5a7c59515148b928ff10 100644 (file)
@@ -8,13 +8,29 @@
 
 package org.opendaylight.transportpce.pce.utils;
 
+import java.util.Arrays;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.CancelResourceReserveInput;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.CancelResourceReserveInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.path.computation.request.input.ServiceAEnd;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.path.computation.request.input.ServiceAEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.path.computation.request.input.ServiceZEnd;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.path.computation.request.input.ServiceZEndBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.RoutingConstraintsSp;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.constraints.sp.co.routing.or.general.CoRoutingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.routing.constraints.sp.HardConstraintsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.routing.constraints.rev170426.routing.constraints.sp.SoftConstraintsBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.RxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.endpoint.sp.TxDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.handler.header.ServiceHandlerHeader;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev170426.service.handler.header.ServiceHandlerHeaderBuilder;
 
 public final class DataUtils {
 
-    public static CancelResourceReserveInput getCancelResourceReserveInput() {
+    public static CancelResourceReserveInput getCancelResourceReserveInput(){
         CancelResourceReserveInput input = new CancelResourceReserveInputBuilder()
             .setServiceName("service 1")
             .setServiceHandlerHeader(new ServiceHandlerHeaderBuilder()
@@ -24,8 +40,4 @@ public final class DataUtils {
 
         return input;
     }
-
-    private DataUtils() {
-    }
-
 }