Add customer name to pathComputationRequest input
[transportpce.git] / pce / src / test / java / org / opendaylight / transportpce / pce / utils / PceTestUtils.java
index 5aee69c20334eb8d06effc63216a0ae4737196f6..d0e9afa23dfa25b98c9d8add8b536951c29bb7f9 100644 (file)
@@ -12,29 +12,32 @@ 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.rev200629.path.description.atoz.direction.AToZ;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.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.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;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
@@ -56,17 +59,18 @@ public final class PceTestUtils {
 
         DataObjectConverter dataObjectConverter = XMLDataObjectConverter.createWithDataStoreUtil(dataStoreContext);
         InputStream resourceAsStream = PceTestUtils.class.getClassLoader().getResourceAsStream(topologyDataPath);
-        Optional<NormalizedNode<? extends YangInstanceIdentifier.PathArgument, ?>> normalizedNode
+        Optional<NormalizedNode> normalizedNode
                 = dataObjectConverter.transformIntoNormalizedNode(resourceAsStream);
-        DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> 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> dataObject = dataObjectConverter.getDataObject(mapNode, Network.QNAME);
         InstanceIdentifier<Network> 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();
     }
 
@@ -74,19 +78,20 @@ public final class PceTestUtils {
 
         try (
                 // load openroadm-network
-                Reader gnpyNetwork = new FileReader("src/test/resources/gnpy/gnpy_network.json");
+                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");
+                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"));
-            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);
+            Networks networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(networkReader, Networks.QNAME);
+            List<Network> 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 ");
@@ -164,8 +169,9 @@ public final class PceTestUtils {
     }
 
     private static List<String> getNodesFromPath(PathComputationRequestOutput output) {
-        List<AToZ> atozList = output.getResponseParameters().getPathDescription().getAToZDirection().getAToZ();
-        return atozList.stream()
+        @Nullable Map<AToZKey, AToZ> 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!",