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=7c2f424971d7595bddefcb806e2d588bc5f85a0e;hb=refs%2Fchanges%2F11%2F90011%2F7;hp=23289ae17337c8856f5ce8c27bc7abaecfa510ed;hpb=77fcc6a019ffb351ee6b5d13757cefecdd837a30;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 23289ae17..7c2f42497 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,38 +7,128 @@ */ package org.opendaylight.transportpce.pce.gnpy; -import org.junit.Before; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; + +import com.google.gson.stream.JsonReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.io.Reader; +import java.net.URI; +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.BeforeClass; import org.junit.Test; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +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.utils.JsonUtil; 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; +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.slf4j.Logger; +import org.slf4j.LoggerFactory; + + public class GnpyUtilitiesImplTest extends AbstractTest { + private static final Logger LOG = LoggerFactory.getLogger(GnpyUtilitiesImplTest.class); private GnpyUtilitiesImpl gnpyUtilitiesImpl; private NetworkTransactionImpl networkTransaction; + private static HttpServer httpServer; - @Before - public void setUp()throws Exception { - PceTestUtils.writeNetworkIntoDataStore(this.getDataBroker(), this.getDataStoreContextUtil(), - TransactionUtils.getNetworkForSpanLoss()); + public GnpyUtilitiesImplTest() { networkTransaction = new NetworkTransactionImpl(new RequestProcessor(this.getDataBroker())); + JsonReader networkReader = null; + JsonReader topoReader = null; + + try { + // load openroadm-network + Reader gnpyNetwork = new FileReader("src/test/resources/gnpy/gnpy_network.json"); + + 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")); + saveOpenRoadmNetwork(networks.getNetwork().get(0), NetworkUtils.UNDERLAY_NETWORK_ID); + // load openroadm-topology + Reader gnpyTopo = new FileReader("src/test/resources/gnpy/gnpy_topology.json"); + topoReader = new JsonReader(gnpyTopo); + 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); + } catch (FileNotFoundException | InterruptedException | ExecutionException e) { + LOG.error("Cannot init test ", e); + fail("Cannot init test "); + } finally { + try { + if (networkReader != null) { + networkReader.close(); + } + if (topoReader != null) { + topoReader.close(); + } + } catch (IOException e) { + LOG.warn("Cannot close reader ", e); + } + } } - @Test(expected = Exception.class) + @BeforeClass + public 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); + } + + @AfterClass + public static void tearDown() { + httpServer.shutdownNow(); + } + + private void saveOpenRoadmNetwork(Network network, String networkId) + 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(); + } + + @Test + public void askNewPathFromGnpyNullResultTest() throws Exception { + gnpyUtilitiesImpl = new GnpyUtilitiesImpl(networkTransaction, + PceTestData.getGnpyPCERequest("XPONDER-1", "XPONDER-2")); + assertNull("No hard constraints should be available", gnpyUtilitiesImpl.askNewPathFromGnpy(null)); + + } + + @Test public void askNewPathFromGnpyTest() throws Exception { - gnpyUtilitiesImpl = new GnpyUtilitiesImpl(networkTransaction, PceTestData.getPCERequest()); - PceConstraintsCalc constraints = - new PceConstraintsCalc(PceTestData.getPCE_simpletopology_test1_request(), networkTransaction); + gnpyUtilitiesImpl = new GnpyUtilitiesImpl(networkTransaction, + PceTestData.getGnpyPCERequest("XPONDER-3", "XPONDER-4")); + PceConstraintsCalc constraints = new PceConstraintsCalc(PceTestData.getPCE_simpletopology_test1_request(), + networkTransaction); PceConstraints pceHardConstraints = constraints.getPceHardConstraints(); - gnpyUtilitiesImpl.askNewPathFromGnpy(pceHardConstraints); + assertNotNull("Hard constraints should be available",gnpyUtilitiesImpl.askNewPathFromGnpy(pceHardConstraints)); + + } @Test(expected = Exception.class) @@ -46,6 +136,4 @@ public class GnpyUtilitiesImplTest extends AbstractTest { gnpyUtilitiesImpl = new GnpyUtilitiesImpl(networkTransaction, PceTestData.getPCERequest()); gnpyUtilitiesImpl.gnpyResponseOneDirection(null); } - - }