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=d0e9afa23dfa25b98c9d8add8b536951c29bb7f9;hb=6ae7f17afc50195ff2449043e65341e28c1056e3;hp=ab1eeef0d5373c3adcfd96f304746e38acf86305;hpb=a77937222db28970e716507baa1d221679d4e0d0;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 ab1eeef0d..d0e9afa23 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,29 +7,37 @@ */ 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.Nullable; import org.junit.Assert; 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.DataStoreContext; 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.rev200128.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.rev240205.PathComputationRequestOutput; +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.AToZKey; +import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.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.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; @@ -51,17 +59,51 @@ public final class PceTestUtils { DataObjectConverter dataObjectConverter = XMLDataObjectConverter.createWithDataStoreUtil(dataStoreContext); InputStream resourceAsStream = PceTestUtils.class.getClassLoader().getResourceAsStream(topologyDataPath); - Optional> normalizedNode + Optional normalizedNode = dataObjectConverter.transformIntoNormalizedNode(resourceAsStream); - DataContainerChild next - = ((ContainerNode) normalizedNode.get()).getValue().iterator().next(); - MapEntryNode mapNode = ((MapNode) next).getValue().iterator().next(); + DataContainerChild next + = ((ContainerNode) normalizedNode.orElseThrow()).body().iterator().next(); + MapEntryNode mapNode = ((MapNode) next).body().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(); WriteTransaction dataWriteTransaction = dataBroker.newWriteOnlyTransaction(); - dataWriteTransaction.put(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier, (Network) dataObject.get()); + dataWriteTransaction.put(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier, + (Network) dataObject.orElseThrow()); + 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, Networks.QNAME); + List networkMap = new ArrayList<>(networks.nonnullNetwork().values()); + saveOpenRoadmNetwork(networkMap.get(0), NetworkUtils.UNDERLAY_NETWORK_ID, dataBroker); + networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(topoReader, Networks.QNAME); + 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(); } @@ -127,8 +169,9 @@ public final class PceTestUtils { } private static List getNodesFromPath(PathComputationRequestOutput output) { - List atozList = output.getResponseParameters().getPathDescription().getAToZDirection().getAToZ(); - return atozList.stream() + @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!",