improve pce unit tests 68/90368/11
authorAhmedEldeeb50 <ahmed.eldeeb.ext@orange.com>
Wed, 10 Jun 2020 08:20:43 +0000 (10:20 +0200)
committerGuillaume Lambert <guillaume.lambert@orange.com>
Wed, 24 Jun 2020 13:55:09 +0000 (13:55 +0000)
-add some helper methods at NetworkTransactionUtil
-add try with resource for IO
-add a message to assert(True/False)

JIRA: TRNSPRTPCE-209
Signed-off-by: AhmedEldeeb50 <ahmed.eldeeb.ext@orange.com>
Change-Id: I721b6c3bf472a299cd3016929d4af2e99bd6bb5e

pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/ConnectToGnpyServerTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImplTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestUtils.java

index 6bf59376a6dbd9b661dc64372771e58b6fd283fa..4e5f69bdaacaf686359b82b0e4bdb10b5ab6a7cf 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.transportpce.pce;
 
+
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -18,7 +19,6 @@ import org.opendaylight.transportpce.pce.gnpy.ConnectToGnpyServer;
 import org.opendaylight.transportpce.pce.gnpy.JerseyServer;
 import org.opendaylight.transportpce.pce.utils.PceTestData;
 import org.opendaylight.transportpce.pce.utils.PceTestUtils;
-import org.opendaylight.transportpce.pce.utils.TransactionUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
 
 
@@ -29,16 +29,13 @@ public class PceSendingPceRPCsTest extends AbstractTest {
     private NetworkTransactionImpl networkTransaction;
     private DataStoreContext dataStoreContext = this.getDataStoreContextUtil();
     private DataBroker dataBroker = this.getDataBroker();
-    private JerseyServer  jerseyServer = new JerseyServer();
+    private JerseyServer jerseyServer = new JerseyServer();
 
 
     @Before
-    public void setUp() throws Exception {
-//        PceTestUtils.writeTopologyIntoDataStore(
-//                dataBroker, dataStoreContext, "./topologyData/NW-simple-topology.xml");
-        PceTestUtils.writeNetworkIntoDataStore(dataBroker, dataStoreContext, TransactionUtils.getNetworkForSpanLoss());
-        networkTransaction = new NetworkTransactionImpl(new RequestProcessor(dataBroker));
-        pceSendingPceRPCs = new PceSendingPceRPCs();
+    public void setUp() {
+        networkTransaction = new NetworkTransactionImpl(new RequestProcessor(this.getDataBroker()));
+        PceTestUtils.writeNetworkInDataStore(this.getDataBroker());
         pceSendingPceRPCs =
                 new PceSendingPceRPCs(PceTestData.getPCE_test1_request_54(), networkTransaction);
     }
@@ -46,14 +43,16 @@ public class PceSendingPceRPCsTest extends AbstractTest {
     @Test
     public void cancelResourceReserve() {
         pceSendingPceRPCs.cancelResourceReserve();
-        Assert.assertEquals(true, pceSendingPceRPCs.getSuccess());
+        Assert.assertTrue("Success should equal to true", pceSendingPceRPCs.getSuccess());
     }
 
     @Test
     public void pathComputationTest() throws Exception {
         jerseyServer.setUp();
         pceSendingPceRPCs =
-                new PceSendingPceRPCs(PceTestData.getGnpyPCERequest("nodeA","nodeZ"), networkTransaction);
+                new PceSendingPceRPCs(PceTestData.getGnpyPCERequest("XPONDER-1", "XPONDER-2"),
+                        networkTransaction);
+
         pceSendingPceRPCs.pathComputation();
         ConnectToGnpyServer connectToGnpy = new ConnectToGnpyServer();
         Assert.assertTrue(connectToGnpy.isGnpyURLExist());
@@ -81,4 +80,5 @@ public class PceSendingPceRPCsTest extends AbstractTest {
         Assert.assertNull(pceSendingPceRPCs.getGnpyZtoA());
     }
 
+
 }
index 739d8b0b07f5ce858b0474b6823b2ed8a94145dc..1d0dc55033b9ab5ff791a605828c94dabd8bda8f 100644 (file)
@@ -10,13 +10,17 @@ package org.opendaylight.transportpce.pce.gnpy;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import javax.ws.rs.core.Application;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
+import org.junit.Assert;
 import org.junit.Test;
 
 public class ConnectToGnpyServerTest extends JerseyTest {
@@ -45,4 +49,13 @@ public class ConnectToGnpyServerTest extends JerseyTest {
         assertTrue("Result should not be empty", !result.isEmpty());
     }
 
+    @Test
+    public void readResponseTest() throws GnpyException {
+        InputStream anyInputStream = new ByteArrayInputStream("test data".getBytes());
+        ConnectToGnpyServer connectToGnpy = new ConnectToGnpyServer();
+        String result = connectToGnpy.readResponse(new InputStreamReader(anyInputStream));
+        Assert.assertNotNull(result);
+
+    }
+
 }
index 7c2f424971d7595bddefcb806e2d588bc5f85a0e..0069b6130e2aa4c4fd430cd5aede665686998043 100644 (file)
@@ -17,11 +17,14 @@ import java.io.FileReader;
 import java.io.IOException;
 import java.io.Reader;
 import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.ExecutionException;
 import org.glassfish.grizzly.http.server.HttpServer;
 import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.junit.AfterClass;
+import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
@@ -34,6 +37,15 @@ import org.opendaylight.transportpce.pce.constraints.PceConstraintsCalc;
 import org.opendaylight.transportpce.pce.utils.JsonUtil;
 import org.opendaylight.transportpce.pce.utils.PceTestData;
 import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.AToZDirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ZToADirectionBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.atoz.direction.AToZ;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.atoz.direction.AToZBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.atoz.direction.AToZKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource.Resource;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource.ResourceBuilder;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource.resource.resource.TerminationPoint;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.pce.resource.resource.resource.TerminationPointBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network;
@@ -44,7 +56,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 
-
 public class GnpyUtilitiesImplTest extends AbstractTest {
 
     private static final Logger LOG = LoggerFactory.getLogger(GnpyUtilitiesImplTest.class);
@@ -126,14 +137,51 @@ public class GnpyUtilitiesImplTest extends AbstractTest {
         PceConstraintsCalc constraints = new PceConstraintsCalc(PceTestData.getPCE_simpletopology_test1_request(),
                 networkTransaction);
         PceConstraints pceHardConstraints = constraints.getPceHardConstraints();
-        assertNotNull("Hard constraints should be available",gnpyUtilitiesImpl.askNewPathFromGnpy(pceHardConstraints));
+        assertNotNull("Hard constraints should be available", gnpyUtilitiesImpl.askNewPathFromGnpy(pceHardConstraints));
+
+
+    }
+
+    @Test
+    public void verifyComputationByGnpyTest() throws Exception {
+        // build AtoZ
+        AToZDirectionBuilder atoZDirectionBldr = buildAtZ();
+        // build ZtoA
+        ZToADirectionBuilder ztoADirectionBldr = buildZtoA();
+
+        gnpyUtilitiesImpl = new GnpyUtilitiesImpl(networkTransaction,
+                PceTestData.getGnpyPCERequest("XPONDER-1", "XPONDER-2"));
+        PceConstraintsCalc constraints = new PceConstraintsCalc(PceTestData.getPCE_simpletopology_test1_request(),
+                networkTransaction);
+        PceConstraints pceHardConstraints = constraints.getPceHardConstraints();
+        boolean result = gnpyUtilitiesImpl.verifyComputationByGnpy(atoZDirectionBldr.build(),
+                ztoADirectionBldr.build(),
+                pceHardConstraints);
+        Assert.assertFalse("Gnpy Computation should be false",result);
+    }
 
+    private AToZDirectionBuilder buildAtZ() {
+        List<AToZ> atozList = new ArrayList<>();
+        AToZKey clientKey = new AToZKey("key");
+        TerminationPoint stp = new TerminationPointBuilder()
+                .setTpId("tpName").setTpNodeId("xname")
+                .build();
+        Resource clientResource = new ResourceBuilder().setResource(stp).build();
+        AToZ firstResource = new AToZBuilder().setId("tpName").withKey(clientKey).setResource(clientResource).build();
+        atozList.add(firstResource);
+
+        return new AToZDirectionBuilder()
+                .setRate(100L)
+                .setAToZ(atozList)
+                .setAToZWavelengthNumber(Long.valueOf(0));
 
     }
 
-    @Test(expected = Exception.class)
-    public void gnpyResponseOneDirectionTest() throws Exception {
-        gnpyUtilitiesImpl = new GnpyUtilitiesImpl(networkTransaction, PceTestData.getPCERequest());
-        gnpyUtilitiesImpl.gnpyResponseOneDirection(null);
+    private ZToADirectionBuilder buildZtoA() {
+        return new ZToADirectionBuilder()
+                .setRate(100L)
+                .setZToA(new ArrayList())
+                .setZToAWavelengthNumber(Long.valueOf(0));
+
     }
 }
index ab1eeef0d5373c3adcfd96f304746e38acf86305..35ee84225d723c519566ee3f54c595d9a7cba987 100644 (file)
@@ -7,7 +7,11 @@
  */
 package org.opendaylight.transportpce.pce.utils;
 
+import com.google.gson.stream.JsonReader;
+import java.io.FileReader;
+import java.io.IOException;
 import java.io.InputStream;
+import java.io.Reader;
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
@@ -29,6 +33,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkKey;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
@@ -65,6 +70,38 @@ public final class PceTestUtils {
         dataWriteTransaction.commit().get();
     }
 
+    public static void writeNetworkInDataStore(DataBroker dataBroker) {
+
+        try (
+                // load openroadm-network
+                Reader gnpyNetwork = new FileReader("src/test/resources/gnpy/gnpy_network.json");
+                // load openroadm-topology
+                Reader gnpyTopo = new FileReader("src/test/resources/gnpy/gnpy_topology.json");
+                JsonReader networkReader = new JsonReader(gnpyNetwork);
+                JsonReader topoReader = new JsonReader(gnpyTopo);
+        ) {
+
+            Networks networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(networkReader,
+                    QName.create("urn:ietf:params:xml:ns:yang:ietf-network", "2018-02-26", "networks"));
+            saveOpenRoadmNetwork(networks.getNetwork().get(0), NetworkUtils.UNDERLAY_NETWORK_ID, dataBroker);
+            networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(topoReader,
+                    QName.create("urn:ietf:params:xml:ns:yang:ietf-network", "2018-02-26", "networks"));
+            saveOpenRoadmNetwork(networks.getNetwork().get(0), NetworkUtils.OVERLAY_NETWORK_ID, dataBroker);
+        } catch (IOException | ExecutionException | InterruptedException e) {
+            LOG.error("Cannot init test ", e);
+            Assert.fail("Cannot init test ");
+        }
+    }
+
+    private static void saveOpenRoadmNetwork(Network network, String networkId, DataBroker dataBroker)
+            throws InterruptedException, ExecutionException {
+        InstanceIdentifier<Network> nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class)
+                .child(Network.class, new NetworkKey(new NetworkId(networkId))).build();
+        WriteTransaction dataWriteTransaction = dataBroker.newWriteOnlyTransaction();
+        dataWriteTransaction.put(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier, network);
+        dataWriteTransaction.commit().get();
+    }
+
     public static void writeNetworkIntoDataStore(DataBroker dataBroker,
                                                  DataStoreContext dataStoreContext, Network network)
             throws ExecutionException, InterruptedException {