import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
import org.junit.Test;
import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
import org.opendaylight.transportpce.networkmodel.util.test.JsonUtil;
import org.opendaylight.transportpce.networkmodel.util.test.NetworkmodelTestUtil;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPools;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
public class OpenRoadmOtnTopologyTest {
private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmOtnTopologyTest.class);
private Nodes portMappingBad;
public OpenRoadmOtnTopologyTest() {
- try (Reader reader = new FileReader("src/test/resources/portMapping.json");
+ try (Reader reader = new FileReader("src/test/resources/portMapping.json", StandardCharsets.UTF_8);
JsonReader portMappingReader = new JsonReader(reader)) {
Network portMapping = (Network) JsonUtil.getInstance().getDataObjectFromJson(portMappingReader,
- QName.create("http://org/opendaylight/transportpce/portmapping", "2020-08-27", "network"));
- for (Nodes nodes : portMapping.getNodes()) {
+ QName.create("http://org/opendaylight/transportpce/portmapping", "2020-10-12", "network"));
+ for (Nodes nodes : portMapping.nonnullNodes().values()) {
if (nodes.getNodeId().equals("XPDR-A1")) {
this.portMappingTpdr = nodes;
} else {
this.portMappingSpdr = nodes;
}
}
- List<Mapping> mappingList = new ArrayList<>();
- mappingList.add(new MappingBuilder().setLogicalConnectionPoint("XPDR0-NETWORK0").build());
+ Map<MappingKey,Mapping> mappingList = new HashMap<>();
+ Mapping mapping = new MappingBuilder().setLogicalConnectionPoint("XPDR0-NETWORK0").build();
+ mappingList.put(mapping.key(),mapping);
this.portMappingBad = new NodesBuilder()
.setNodeId(this.portMappingTpdr.getNodeId())
.setNodeInfo(new NodeInfoBuilder(this.portMappingTpdr.getNodeInfo()).setNodeType(NodeTypes.Ila).build())
Node node = topologyShard.getNodes().get(0);
assertEquals("XPDR-A1-XPDR1", node.getNodeId().getValue());
// tests supporting nodes
- List<SupportingNode> supportingNodes = node.getSupportingNode().stream()
+ List<SupportingNode> supportingNodes = node.nonnullSupportingNode().values().stream()
.sorted((sn1, sn2) -> sn1.getNetworkRef().getValue().compareTo(sn2.getNetworkRef().getValue()))
.collect(Collectors.toList());
assertEquals("Should contain 3 supporting nodes", 3, supportingNodes.size());
//tests list of TPs
List<TerminationPoint> tps = node.augmentation(
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
- .getTerminationPoint().stream()
+ .nonnullTerminationPoint().values().stream()
.sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
.collect(Collectors.toList());
assertEquals("node should contain 4 TPs", 4, tps.size());
tps.get(0).augmentation(
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
- .getTpSupportedInterfaces().getSupportedInterfaceCapability()
- .get(0).getIfCapType().getName());
+ .getTpSupportedInterfaces().nonnullSupportedInterfaceCapability()
+ .values().stream().findFirst()
+ .get().getIfCapType().getName());
assertEquals(
"first TP must be of type client",
OpenroadmTpType.XPONDERCLIENT,
.TerminationPoint1.class)
.getTpSupportedInterfaces()
.getSupportedInterfaceCapability()
- .get(0)
+ .values().stream().findFirst()
+ .get()
.getIfCapType()
.getName());
assertEquals(
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getXpdrTpPortConnectionAttributes()
- .getOdtuTpnPool().get(0)
+ .getOdtuTpnPool().values().stream().findFirst()
+ .get()
.getTpnPool());
assertEquals(
"Tpn pool list should be full, with 80 trib ports",
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getXpdrTpPortConnectionAttributes()
- .getOdtuTpnPool().get(0)
+ .getOdtuTpnPool().values().stream().findFirst()
+ .get()
.getTpnPool()
.size());
}
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getXpdrTpPortConnectionAttributes()
- .getOdtuTpnPool().get(0)
+ .getOdtuTpnPool().values().stream().findFirst()
+ .get()
.getTpnPool()
.size());
assertThat(
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getXpdrTpPortConnectionAttributes()
- .getOdtuTpnPool().get(0)
+ .getOdtuTpnPool().values().stream().findFirst()
+ .get()
.getTpnPool(),
not(hasItem(Uint16.valueOf(1))));
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getXpdrTpPortConnectionAttributes()
- .getOdtuTpnPool().get(0)
+ .getOdtuTpnPool().values().stream().findFirst()
+ .get()
.getTpnPool()
.size());
assertThat(
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getXpdrTpPortConnectionAttributes()
- .getOdtuTpnPool().get(0)
+ .getOdtuTpnPool().values().stream().findFirst()
+ .get()
.getTpnPool(),
hasItem(Uint16.valueOf(1)));
}
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getXpdrTpPortConnectionAttributes()
- .getOdtuTpnPool().get(0)
+ .getOdtuTpnPool().values().stream().findFirst()
+ .get()
.getTpnPool()
.size());
assertThat(
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getXpdrTpPortConnectionAttributes()
- .getOdtuTpnPool().get(0)
+ .getOdtuTpnPool().values().stream().findFirst()
+ .get()
.getTpnPool(),
not(hasItem(Uint16.valueOf(1))));
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getXpdrTpPortConnectionAttributes()
- .getOdtuTpnPool().get(0)
+ .getOdtuTpnPool().values().stream().findFirst()
+ .get()
.getTpnPool()
.size());
assertThat(
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getXpdrTpPortConnectionAttributes()
- .getOdtuTpnPool().get(0)
+ .getOdtuTpnPool().values().stream().findFirst()
+ .get()
.getTpnPool(),
hasItem(Uint16.valueOf(1)));
}
assertEquals(OpenroadmNodeType.SWITCH, node.augmentation(Node1.class).getNodeType());
}
// tests supporting nodes
- List<SupportingNode> supportingNodes = node.getSupportingNode().stream()
+ List<SupportingNode> supportingNodes = node.nonnullSupportingNode().values().stream()
.sorted((sn1, sn2) -> sn1.getNetworkRef().getValue().compareTo(sn2.getNetworkRef().getValue()))
.collect(Collectors.toList());
assertEquals("Should contain 3 supporting nodes", 3, supportingNodes.size());
.getSwitchingPools());
List<TerminationPoint> tpList = node.augmentation(
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
- .getTerminationPoint().stream()
+ .nonnullTerminationPoint().values().stream()
.sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
.collect(Collectors.toList());
checkSpdrTpList(xpdrNb, tpList);
}
private void checkSpdrSwitchingPools(Uint16 xpdrNb, SwitchingPools sp) {
+ List<OduSwitchingPools> oduSwitchingPools = new ArrayList<>(sp.nonnullOduSwitchingPools().values());
assertEquals(
"switching-pools augmentation should contain a single odu-switching-pools",
1,
- sp.getOduSwitchingPools().size());
+ oduSwitchingPools.size());
assertEquals(
"switching-pool-number should be 1",
Uint16.valueOf(1),
- sp.getOduSwitchingPools().get(0).getSwitchingPoolNumber());
+ oduSwitchingPools.get(0).getSwitchingPoolNumber());
assertEquals(
"switching-pool-type should be non-blocking",
"non-blocking",
- sp.getOduSwitchingPools().get(0).getSwitchingPoolType().getName());
+ oduSwitchingPools.get(0).getSwitchingPoolType().getName());
+
+ List<NonBlockingList> nonBlockingList =
+ new ArrayList<>(oduSwitchingPools.get(0).nonnullNonBlockingList().values());
if (xpdrNb.equals(Uint16.valueOf(1))) {
assertEquals(
"Mux should contain 4 non blocking list",
4,
- sp.getOduSwitchingPools().get(0).getNonBlockingList().size());
+ nonBlockingList.size());
assertEquals(
Uint16.valueOf(1),
- sp.getOduSwitchingPools().get(0).getNonBlockingList().get(0).getNblNumber());
- List<NonBlockingList> nblList = sp.getOduSwitchingPools().get(0).getNonBlockingList().stream()
+ nonBlockingList.get(0).getNblNumber());
+ List<NonBlockingList> nblList = oduSwitchingPools.get(0).nonnullNonBlockingList().values().stream()
.sorted((nbl1, nbl2) -> nbl1.getNblNumber().compareTo(nbl2.getNblNumber()))
.collect(Collectors.toList());
for (NonBlockingList nbl : nblList) {
assertEquals(
"Switch should contain a single non blocking list",
1,
- sp.getOduSwitchingPools().get(0).getNonBlockingList().size());
+ nonBlockingList.size());
assertEquals(
Uint16.valueOf(1),
- sp.getOduSwitchingPools().get(0).getNonBlockingList().get(0).getNblNumber());
+ nonBlockingList.get(0).getNblNumber());
assertThat(
"for a 100G Switch, non blocking list should contain 8 entries (4 clients + 4 network ports)",
- sp.getOduSwitchingPools().get(0).getNonBlockingList().get(0).getTpList(),
+ nonBlockingList.get(0).getTpList(),
hasSize(8));
assertThat(
- sp.getOduSwitchingPools().get(0).getNonBlockingList().get(0).getTpList(),
+ nonBlockingList.get(0).getTpList(),
containsInAnyOrder(
new TpId("XPDR2-CLIENT1"), new TpId("XPDR2-NETWORK1"), new TpId("XPDR2-CLIENT2"),
new TpId("XPDR2-NETWORK2"), new TpId("XPDR2-CLIENT3"), new TpId("XPDR2-NETWORK3"),
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getTpSupportedInterfaces()
- .getSupportedInterfaceCapability().get(0)
+ .getSupportedInterfaceCapability().values().stream().findFirst()
+ .get()
.getIfCapType());
assertEquals(
"the rate should be ODU4",
.getRate());
assertEquals(
"openroadm-topology",
- tpList.get(4).getSupportingTerminationPoint().get(0).getNetworkRef().getValue());
+ tpList.get(4).getSupportingTerminationPoint().values().stream().findFirst()
+ .get().getNetworkRef().getValue());
assertEquals(
"SPDR-SA1-XPDR" + xpdrNb,
- tpList.get(4).getSupportingTerminationPoint().get(0).getNodeRef().getValue());
+ tpList.get(4).getSupportingTerminationPoint().values().stream().findFirst()
+ .get().getNodeRef().getValue());
assertEquals(
"XPDR" + xpdrNb + "-NETWORK1",
- tpList.get(4).getSupportingTerminationPoint().get(0).getTpRef());
+ tpList.get(4).getSupportingTerminationPoint().values().stream().findFirst()
+ .get().getTpRef());
if (xpdrNb.equals(Uint16.valueOf(1))) {
assertEquals("should contain 5 TPs", 5, tpList.size());
assertEquals("XPDR1-CLIENT1", tpList.get(0).getTpId().getValue());
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getTpSupportedInterfaces()
- .getSupportedInterfaceCapability().get(0)
+ .getSupportedInterfaceCapability().values().stream().findFirst()
+ .get()
.getIfCapType());
assertEquals(
"the rate should be ODU2e",
org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130
.TerminationPoint1.class)
.getTpSupportedInterfaces()
- .getSupportedInterfaceCapability().get(0)
+ .getSupportedInterfaceCapability().values().stream().findFirst()
+ .get()
.getIfCapType());
assertEquals(
"the rate should be ODU4",