X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pce%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Futils%2FPceTestUtils.java;h=37518dfaf6325aaf35343f9bf9d39a2b5bb1a21c;hb=2a29f9ab006d8806f77b1a1e073b478e5351cc5f;hp=5c468c92276c32f40804f7dc582ce08fff817877;hpb=a05bba4c09700f9e2bc0520d5de384477abd0107;p=transportpce.git 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 5c468c922..37518dfaf 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,28 +7,39 @@ */ 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.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; import org.junit.Assert; -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.DataStoreContext; +import org.opendaylight.mdsal.binding.api.DataBroker; +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.converter.XMLDataObjectConverter; -import org.opendaylight.transportpce.common.converter.api.DataObjectConverter; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev190624.PathComputationRequestOutput; -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.pce.resource.resource.resource.Node; +import org.opendaylight.transportpce.test.DataStoreContext; +import org.opendaylight.transportpce.test.converter.DataObjectConverter; +import org.opendaylight.transportpce.test.converter.XMLDataObjectConverter; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev210701.PathComputationRequestOutput; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZ; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.path.description.atoz.direction.AToZKey; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev201210.pce.resource.resource.resource.Node; 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.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; @@ -48,6 +59,7 @@ public final class PceTestUtils { public static void writeTopologyIntoDataStore(DataBroker dataBroker, DataStoreContext dataStoreContext, String topologyDataPath) throws ExecutionException, InterruptedException { + DataObjectConverter dataObjectConverter = XMLDataObjectConverter.createWithDataStoreUtil(dataStoreContext); InputStream resourceAsStream = PceTestUtils.class.getClassLoader().getResourceAsStream(topologyDataPath); Optional> normalizedNode @@ -57,11 +69,59 @@ public final class PceTestUtils { MapEntryNode mapNode = ((MapNode) next).getValue().iterator().next(); Optional dataObject = dataObjectConverter.getDataObject(mapNode, Network.QNAME); InstanceIdentifier nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class) - .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))) - .build(); + .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))) + .build(); WriteTransaction dataWriteTransaction = dataBroker.newWriteOnlyTransaction(); dataWriteTransaction.put(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier, (Network) dataObject.get()); - dataWriteTransaction.submit().get(); + dataWriteTransaction.commit().get(); + } + + public static void writeNetworkInDataStore(DataBroker dataBroker) { + + try ( + // load openroadm-network + Reader gnpyNetwork = new FileReader("src/test/resources/gnpy/gnpy_network.json", + StandardCharsets.UTF_8); + // load openroadm-topology + Reader gnpyTopo = new FileReader("src/test/resources/gnpy/gnpy_topology.json", + StandardCharsets.UTF_8); + 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")); + @NonNull + List networkMap = new ArrayList<>(networks.nonnullNetwork().values()); + saveOpenRoadmNetwork(networkMap.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(networkMap.get(0), NetworkUtils.UNDERLAY_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 { + + InstanceIdentifier nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class) + .child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))) + .build(); + WriteTransaction dataWriteTransaction = dataBroker.newWriteOnlyTransaction(); + dataWriteTransaction.put(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier, network); + dataWriteTransaction.commit().get(); } public static void checkConfigurationResponse(PathComputationRequestOutput output, @@ -91,46 +151,47 @@ public final class PceTestUtils { Assert.assertEquals(atozSize, ztoaSize); Long actualAToZWavel = output.getResponseParameters().getPathDescription().getAToZDirection() - .getAToZWavelengthNumber(); + .getAToZWavelengthNumber().toJava(); Long expectedAToZWavel = expectedOutput.getResponseParameters().getPathDescription().getAToZDirection() - .getAToZWavelengthNumber(); + .getAToZWavelengthNumber().toJava(); Assert.assertEquals(actualAToZWavel, expectedAToZWavel); Long actualZtoAWavel = output.getResponseParameters().getPathDescription().getZToADirection() - .getZToAWavelengthNumber(); + .getZToAWavelengthNumber().toJava(); Long expectedZtoAWavel = expectedOutput.getResponseParameters().getPathDescription().getZToADirection() - .getZToAWavelengthNumber(); + .getZToAWavelengthNumber().toJava(); Assert.assertEquals(actualZtoAWavel, expectedZtoAWavel); - Long actualAToZRate = output.getResponseParameters().getPathDescription().getAToZDirection().getRate(); + Long actualAToZRate = output.getResponseParameters().getPathDescription().getAToZDirection().getRate().toJava(); Long expectedAToZRate = expectedOutput.getResponseParameters().getPathDescription().getAToZDirection() - .getRate(); + .getRate().toJava(); Assert.assertEquals(expectedAToZRate, actualAToZRate); - Long actualZToARate = output.getResponseParameters().getPathDescription().getZToADirection().getRate(); + Long actualZToARate = output.getResponseParameters().getPathDescription().getZToADirection().getRate().toJava(); Long expectedZToARate = expectedOutput.getResponseParameters().getPathDescription().getZToADirection() - .getRate(); + .getRate().toJava(); Assert.assertEquals(actualZToARate, expectedZToARate); } private static List getNodesFromPath(PathComputationRequestOutput output) { - List atozList = output.getResponseParameters().getPathDescription().getAToZDirection().getAToZ(); - return atozList.stream() - .filter(aToZ -> { - if ((aToZ.getResource() == null) || (aToZ.getResource().getResource() == null)) { - LOG.debug("Diversity constraint: Resource of AToZ node {} is null! Skipping this node!", - aToZ.getId()); - return false; - } - return aToZ.getResource().getResource() instanceof Node; - }).map(aToZ -> { - Node node = (Node) aToZ.getResource().getResource(); - if (node.getNodeId() == null) { - LOG.warn("Node in AToZ node {} contains null! Skipping this node!", aToZ.getId()); - return null; - } - return node.getNodeId().toString(); - }).collect(Collectors.toList()); + @Nullable Map atozList = output.getResponseParameters() + .getPathDescription().getAToZDirection().getAToZ(); + return atozList.values().stream() + .filter(aToZ -> { + if ((aToZ.getResource() == null) || (aToZ.getResource().getResource() == null)) { + LOG.debug("Diversity constraint: Resource of AToZ node {} is null! Skipping this node!", + aToZ.getId()); + return false; + } + return aToZ.getResource().getResource() instanceof Node; + }).map(aToZ -> { + Node node = (Node) aToZ.getResource().getResource(); + if (node.getNodeId() == null) { + LOG.warn("Node in AToZ node {} contains null! Skipping this node!", aToZ.getId()); + return null; + } + return node.getNodeId().toString(); + }).collect(Collectors.toList()); } public static boolean comparePath(PathComputationRequestOutput output1, PathComputationRequestOutput output2) {