X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pce%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Fgnpy%2FGnpyUtilitiesImplTest.java;h=3a52ac2249c637b44b562597477e6c67f273efaf;hb=5a59a59e40a4c6d8176666965f469d0c3f6d7487;hp=efaf518904152f06b318776a2f621cf7a4a198dc;hpb=da37d3bba2a7aeafc56c2ccd0e2b3610ecea82ef;p=transportpce.git 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 efaf51890..3a52ac224 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 @@ -7,9 +7,11 @@ */ package org.opendaylight.transportpce.pce.gnpy; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.fail; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; import com.google.gson.stream.JsonReader; import java.io.FileNotFoundException; @@ -23,38 +25,38 @@ 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; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.transportpce.common.network.NetworkTransactionImpl; -import org.opendaylight.transportpce.common.network.RequestProcessor; import org.opendaylight.transportpce.pce.constraints.PceConstraints; import org.opendaylight.transportpce.pce.constraints.PceConstraintsCalc; +import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyConsumer; +import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyConsumerImpl; +import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyStub; 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.rev201126.path.description.AToZDirectionBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ZToADirectionBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZ; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.atoz.direction.AToZKey; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToA; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToABuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.path.description.ztoa.direction.ZToAKey; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.Resource; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.ResourceBuilder; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPoint; -import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201126.pce.resource.resource.resource.TerminationPointBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirectionBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ZToADirectionBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZ; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZKey; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ztoa.direction.ZToA; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ztoa.direction.ZToABuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ztoa.direction.ZToAKey; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.Resource; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.ResourceBuilder; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.pce.resource.resource.resource.TerminationPoint; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.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; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,9 +67,10 @@ public class GnpyUtilitiesImplTest extends AbstractTest { private GnpyUtilitiesImpl gnpyUtilitiesImpl; private NetworkTransactionImpl networkTransaction; private static HttpServer httpServer; + private GnpyConsumer gnpyConsumer; public GnpyUtilitiesImplTest() throws IOException { - networkTransaction = new NetworkTransactionImpl(new RequestProcessor(this.getDataBroker())); + networkTransaction = new NetworkTransactionImpl(getDataBroker()); JsonReader networkReader = null; JsonReader topoReader = null; @@ -77,15 +80,13 @@ public class GnpyUtilitiesImplTest extends AbstractTest { StandardCharsets.UTF_8); networkReader = new JsonReader(gnpyNetwork); - Networks networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(networkReader, - QName.create("urn:ietf:params:xml:ns:yang:ietf-network", "2018-02-26", "networks")); + Networks networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(networkReader, Networks.QNAME); saveOpenRoadmNetwork(networks.getNetwork().values().iterator().next(), NetworkUtils.UNDERLAY_NETWORK_ID); // load openroadm-topology Reader gnpyTopo = new FileReader("src/test/resources/gnpy/gnpy_topology.json", StandardCharsets.UTF_8); topoReader = new JsonReader(gnpyTopo); - networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(topoReader, - QName.create("urn:ietf:params:xml:ns:yang:ietf-network", "2018-02-26", "networks")); + networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(topoReader, Networks.QNAME); saveOpenRoadmNetwork(networks.getNetwork().values().iterator().next(), NetworkUtils.OVERLAY_NETWORK_ID); } catch (FileNotFoundException | InterruptedException | ExecutionException e) { LOG.error("Cannot init test ", e); @@ -106,15 +107,21 @@ public class GnpyUtilitiesImplTest extends AbstractTest { } - @BeforeClass - public static void init() { + @BeforeEach + void initConsumer() { + gnpyConsumer = new GnpyConsumerImpl("http://localhost:9998", "mylogin", "mypassword", + getDataStoreContextUtil().getBindingDOMCodecServices()); + } + + @BeforeAll + static void init() { // here we cannot use JerseyTest as we already extends AbstractTest final ResourceConfig rc = new ResourceConfig(GnpyStub.class); - httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create("http://127.0.0.1:8008"), rc); + httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create("http://localhost:9998"), rc); } - @AfterClass - public static void tearDown() { + @AfterAll + static void tearDown() { httpServer.shutdownNow(); } @@ -122,35 +129,31 @@ public class GnpyUtilitiesImplTest extends AbstractTest { throws InterruptedException, ExecutionException { InstanceIdentifier nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class) .child(Network.class, new NetworkKey(new NetworkId(networkId))).build(); - WriteTransaction dataWriteTransaction = this.getDataBroker().newWriteOnlyTransaction(); - dataWriteTransaction.put(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier, network); - dataWriteTransaction.commit().get(); + networkTransaction.put(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier, network); + networkTransaction.commit().get(); } @Test - public void askNewPathFromGnpyNullResultTest() throws Exception { + void askNewPathFromGnpyNullResultTest() throws Exception { gnpyUtilitiesImpl = new GnpyUtilitiesImpl(networkTransaction, PceTestData.getGnpyPCERequest("XPONDER-1", "XPONDER-2"), - JsonUtil.getInstance().getBindingDOMCodecServices()); - assertNull("No hard constraints should be available", gnpyUtilitiesImpl.askNewPathFromGnpy(null)); - + gnpyConsumer); + assertNull(gnpyUtilitiesImpl.askNewPathFromGnpy(null), "No hard constraints should be available"); } @Test - public void askNewPathFromGnpyTest() throws Exception { + void askNewPathFromGnpyTest() throws Exception { gnpyUtilitiesImpl = new GnpyUtilitiesImpl(networkTransaction, PceTestData.getGnpyPCERequest("XPONDER-3", "XPONDER-4"), - JsonUtil.getInstance().getBindingDOMCodecServices()); + gnpyConsumer); PceConstraintsCalc constraints = new PceConstraintsCalc(PceTestData.getPCE_simpletopology_test1_request(), networkTransaction); PceConstraints pceHardConstraints = constraints.getPceHardConstraints(); - assertNotNull("Hard constraints should be available", gnpyUtilitiesImpl.askNewPathFromGnpy(pceHardConstraints)); - - + assertNotNull(gnpyUtilitiesImpl.askNewPathFromGnpy(pceHardConstraints), "Hard constraints should be available"); } @Test - public void verifyComputationByGnpyTest() throws Exception { + void verifyComputationByGnpyTest() throws Exception { // build AtoZ AToZDirectionBuilder atoZDirectionBldr = buildAtZ(); // build ZtoA @@ -158,14 +161,14 @@ public class GnpyUtilitiesImplTest extends AbstractTest { gnpyUtilitiesImpl = new GnpyUtilitiesImpl(networkTransaction, PceTestData.getGnpyPCERequest("XPONDER-1", "XPONDER-2"), - JsonUtil.getInstance().getBindingDOMCodecServices()); + gnpyConsumer); 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); + assertFalse(result, "Gnpy Computation should be false"); } private AToZDirectionBuilder buildAtZ() { @@ -175,12 +178,10 @@ public class GnpyUtilitiesImplTest extends AbstractTest { .build(); Resource clientResource = new ResourceBuilder().setResource(stp).build(); AToZ firstResource = new AToZBuilder().setId("tpName").withKey(clientKey).setResource(clientResource).build(); - return new AToZDirectionBuilder() .setRate(Uint32.valueOf(100)) .setAToZ(Map.of(firstResource.key(),firstResource)) .setAToZWavelengthNumber(Uint32.valueOf(0)); - } private ZToADirectionBuilder buildZtoA() { @@ -194,6 +195,5 @@ public class GnpyUtilitiesImplTest extends AbstractTest { .setRate(Uint32.valueOf(100)) .setZToA(Map.of(firstResource.key(),firstResource)) .setZToAWavelengthNumber(Uint32.valueOf(0)); - } }