From: AhmedEldeeb50 Date: Wed, 10 Jun 2020 08:20:43 +0000 (+0200) Subject: improve pce unit tests X-Git-Tag: 2.0.0~71^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=8750e9bc9ae67135fd6f38cdd2e04456397e899f;hp=-c;p=transportpce.git improve pce unit tests -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 Change-Id: I721b6c3bf472a299cd3016929d4af2e99bd6bb5e --- 8750e9bc9ae67135fd6f38cdd2e04456397e899f diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java index 6bf59376a..4e5f69bda 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/PceSendingPceRPCsTest.java @@ -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()); } + } diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/ConnectToGnpyServerTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/ConnectToGnpyServerTest.java index 739d8b0b0..1d0dc5503 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/ConnectToGnpyServerTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/ConnectToGnpyServerTest.java @@ -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); + + } + } diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImplTest.java b/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImplTest.java index 7c2f42497..0069b6130 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImplTest.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImplTest.java @@ -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 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)); + } } diff --git a/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestUtils.java b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestUtils.java index ab1eeef0d..35ee84225 100644 --- a/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestUtils.java +++ b/pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestUtils.java @@ -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 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 {