X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=networkmodel%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fnetworkmodel%2Futil%2FOpenRoadmOtnTopologyTest.java;h=c209fbdfb2fade0d4e87fcf6019083f4652f7fce;hb=67763b4d82e44c68fdbc765cdeec5496ff65b01e;hp=475c885a80ede369e0af711a54efb7b93a52073b;hpb=e25624aca3a34b7a8e30cd8b8819eb6ca838932d;p=transportpce.git diff --git a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java index 475c885a8..c209fbdfb 100644 --- a/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java +++ b/networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java @@ -7,6 +7,8 @@ */ package org.opendaylight.transportpce.networkmodel.util; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.either; import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.hasItems; import static org.hamcrest.CoreMatchers.not; @@ -23,35 +25,45 @@ import com.google.gson.stream.JsonReader; 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.rev200429.Network; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.Nodes; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.NodesBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.Mapping; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.network.nodes.MappingBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200429.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.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.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU2e; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU4; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Link1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.SwitchingPools; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If100GE; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If100GEODU4; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If10GEODU2e; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.IfOCHOTU4ODU4; -import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.OtnLinkType; -import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.Network; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.mapping.Mapping; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.mapping.MappingBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.mapping.MappingKey; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.network.Nodes; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.network.NodesBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210315.network.nodes.NodeInfoBuilder; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1; +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.rev200327.xpdr.odu.switching.pools.OduSwitchingPools; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev200327.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmLinkType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmNodeType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmTpType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.xpdr.tp.supported.interfaces.SupportedInterfaceCapability; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.ODU2; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.ODU2e; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.ODU4; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Link1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.networks.network.node.SwitchingPools; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.If100GE; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.If100GEODU4; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.If10GE; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.If10GEODU2; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.If10GEODU2e; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.IfOCH; +import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.IfOCHOTU4ODU4; +import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev201019.OtnLinkType; +import org.opendaylight.yang.gen.v1.http.transportpce.topology.rev201019.TerminationPoint1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId; @@ -64,7 +76,6 @@ import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - public class OpenRoadmOtnTopologyTest { private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmOtnTopologyTest.class); @@ -73,19 +84,20 @@ public class OpenRoadmOtnTopologyTest { 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-04-29", "network")); - for (Nodes nodes : portMapping.getNodes()) { + QName.create("http://org/opendaylight/transportpce/portmapping", "2021-03-15", "network")); + for (Nodes nodes : portMapping.nonnullNodes().values()) { if (nodes.getNodeId().equals("XPDR-A1")) { this.portMappingTpdr = nodes; } else { this.portMappingSpdr = nodes; } } - List mappingList = new ArrayList<>(); - mappingList.add(new MappingBuilder().setLogicalConnectionPoint("XPDR0-NETWORK0").build()); + Map 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()) @@ -109,7 +121,7 @@ public class OpenRoadmOtnTopologyTest { Node node = topologyShard.getNodes().get(0); assertEquals("XPDR-A1-XPDR1", node.getNodeId().getValue()); // tests supporting nodes - List supportingNodes = node.getSupportingNode().stream() + List 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()); @@ -123,13 +135,13 @@ public class OpenRoadmOtnTopologyTest { assertEquals( Uint16.valueOf(1), node.augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Node1.class) + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Node1.class) .getXpdrAttributes() .getXpdrNumber()); //tests list of TPs List 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()); @@ -142,7 +154,7 @@ public class OpenRoadmOtnTopologyTest { "only If100GE interface capabitily expected", 1, tps.get(0).augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getTpSupportedInterfaces() .getSupportedInterfaceCapability() @@ -150,15 +162,16 @@ public class OpenRoadmOtnTopologyTest { assertEquals( If100GE.class.getName(), tps.get(0).augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .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, tps.get(0).augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529 .TerminationPoint1.class) .getTpType()); //tests network tp @@ -167,38 +180,37 @@ public class OpenRoadmOtnTopologyTest { "XPDR1-CLIENT1", tps.get(2).augmentation(TerminationPoint1.class).getAssociatedConnectionMapPort()); assertEquals( - "only IfOCHOTU4ODU4 interface capabitily expected", + "only IfOCH interface capabitily expected", 1, tps.get(2).augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getTpSupportedInterfaces() .getSupportedInterfaceCapability() .size()); assertEquals( - IfOCHOTU4ODU4.class.getName(), + IfOCH.class.getName(), tps.get(2).augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getTpSupportedInterfaces() .getSupportedInterfaceCapability() - .get(0) + .values().stream().findFirst() + .get() .getIfCapType() .getName()); - assertEquals( - "the rate should be ODU4", - ODU4.class.getName(), + assertNull( + "the rate should be null", tps.get(2).augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getRate() - .getName()); + .getRate()); assertEquals( "third TP must be of type network", OpenroadmTpType.XPONDERNETWORK, tps.get(2).augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1.class) + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1.class) .getTpType()); } @@ -250,20 +262,20 @@ public class OpenRoadmOtnTopologyTest { assertEquals( OpenroadmLinkType.OTNLINK, sortedLinks.get(0).augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class) + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class) .getLinkType()); assertEquals( "opposite link must be present", "OTU4-SPDRZ-XPDR1-XPDR1-NETWORK1toSPDRA-XPDR1-XPDR1-NETWORK1", sortedLinks.get(0).augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class) + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class) .getOppositeLink() .getValue()); assertEquals( "otn link type should be OTU4", OtnLinkType.OTU4, sortedLinks.get(0).augmentation( - org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1.class) + org.opendaylight.yang.gen.v1.http.transportpce.topology.rev201019.Link1.class) .getOtnLinkType()); } @@ -323,14 +335,14 @@ public class OpenRoadmOtnTopologyTest { OpenroadmLinkType.OTNLINK, sortedLinks.get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class) + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class) .getLinkType()); assertEquals( "opposite link must be present", "ODU4-SPDRZ-XPDR1-XPDR1-NETWORK1toSPDRA-XPDR1-XPDR1-NETWORK1", sortedLinks.get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class) + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Link1.class) .getOppositeLink() .getValue()); assertEquals( @@ -338,7 +350,7 @@ public class OpenRoadmOtnTopologyTest { OtnLinkType.ODTU4, sortedLinks.get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.Link1.class) + org.opendaylight.yang.gen.v1.http.transportpce.topology.rev201019.Link1.class) .getOtnLinkType()); assertEquals("list of TPs should contain 2 updated TPs", 2, topoShard.getTps().size()); @@ -346,7 +358,7 @@ public class OpenRoadmOtnTopologyTest { "after ODU4 creation, its termination point should contain a TsPool list", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool()); @@ -355,7 +367,7 @@ public class OpenRoadmOtnTopologyTest { 80, topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool() @@ -364,20 +376,22 @@ public class OpenRoadmOtnTopologyTest { "after ODU4 creation, its termination point should contain a TpnPool list", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool()); assertEquals( "Tpn pool list should be full, with 80 trib ports", 80, topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool() .size()); } @@ -428,7 +442,7 @@ public class OpenRoadmOtnTopologyTest { "after ODU4 deletion, its termination points should not contain any TsPool list", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool()); @@ -436,7 +450,7 @@ public class OpenRoadmOtnTopologyTest { "after ODU4 deletion, its termination points should not contain any TpnPool list", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getOdtuTpnPool()); @@ -486,7 +500,7 @@ public class OpenRoadmOtnTopologyTest { 72, topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool() @@ -495,7 +509,7 @@ public class OpenRoadmOtnTopologyTest { "trib slot 1-8 should no longer be present in Trib slot list", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool(), @@ -504,7 +518,7 @@ public class OpenRoadmOtnTopologyTest { "trib slot 9 should always be present in trib slot list", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool(), @@ -514,20 +528,22 @@ public class OpenRoadmOtnTopologyTest { 79, topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool() .size()); assertThat( "trib port 1 should no longer be present", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool(), not(hasItem(Uint16.valueOf(1)))); @@ -554,7 +570,7 @@ public class OpenRoadmOtnTopologyTest { 80, topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool() @@ -563,7 +579,7 @@ public class OpenRoadmOtnTopologyTest { "after 10G deletion, trib slot list should contain items 1-8", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool(), @@ -573,20 +589,22 @@ public class OpenRoadmOtnTopologyTest { 80, topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool() .size()); assertThat( "after 10G deletion, trib port list should contain items 1", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool(), hasItem(Uint16.valueOf(1))); } @@ -620,7 +638,7 @@ public class OpenRoadmOtnTopologyTest { 79, topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool() @@ -629,7 +647,7 @@ public class OpenRoadmOtnTopologyTest { "trib slot 1 should no longer be present in Trib slot list", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool(), @@ -638,7 +656,7 @@ public class OpenRoadmOtnTopologyTest { "trib slot 2 should always be present in Trib slot list", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes().getTsPool(), hasItem(Uint16.valueOf(2))); @@ -647,20 +665,22 @@ public class OpenRoadmOtnTopologyTest { 79, topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool() .size()); assertThat( "trib port 1 should no longer be present in Trib port list", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool(), not(hasItem(Uint16.valueOf(1)))); @@ -690,7 +710,7 @@ public class OpenRoadmOtnTopologyTest { 80, topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool() @@ -699,7 +719,7 @@ public class OpenRoadmOtnTopologyTest { "after 1G deletion, trib slot list should contain items 1 and 2", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .getTsPool(), @@ -709,20 +729,22 @@ public class OpenRoadmOtnTopologyTest { 80, topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool() .size()); assertThat( "after 1G deletion, trib port list should contain items 1", topoShard.getTps().get(0) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getOdtuTpnPool().get(0) + .getOdtuTpnPool().values().stream().findFirst() + .get() .getTpnPool(), hasItem(Uint16.valueOf(1))); } @@ -761,7 +783,7 @@ public class OpenRoadmOtnTopologyTest { private void checkSpdrNode(Node node) { Uint16 xpdrNb = node - .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Node1.class) + .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Node1.class) .getXpdrAttributes().getXpdrNumber(); assertEquals("SPDR-SA1-XPDR" + xpdrNb, node.getNodeId().getValue()); if (xpdrNb.equals(Uint16.valueOf(1))) { @@ -770,7 +792,7 @@ public class OpenRoadmOtnTopologyTest { assertEquals(OpenroadmNodeType.SWITCH, node.augmentation(Node1.class).getNodeType()); } // tests supporting nodes - List supportingNodes = node.getSupportingNode().stream() + List 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()); @@ -783,38 +805,42 @@ public class OpenRoadmOtnTopologyTest { checkSpdrSwitchingPools( xpdrNb, node.augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Node1.class) + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529.Node1.class) .getSwitchingPools()); List 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 = 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 = + 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 nblList = sp.getOduSwitchingPools().get(0).getNonBlockingList().stream() + nonBlockingList.get(0).getNblNumber()); + List nblList = oduSwitchingPools.get(0).nonnullNonBlockingList().values().stream() .sorted((nbl1, nbl2) -> nbl1.getNblNumber().compareTo(nbl2.getNblNumber())) .collect(Collectors.toList()); for (NonBlockingList nbl : nblList) { @@ -831,22 +857,22 @@ public class OpenRoadmOtnTopologyTest { assertThat( nbl.getTpList(), containsInAnyOrder(new TpId("XPDR1-NETWORK1"), - new TpId("XPDR1-CLIENT" + nb))); + new TpId("XPDR1-CLIENT" + nb))); } } else if (xpdrNb.equals(Uint16.valueOf(2))) { 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"), @@ -855,64 +881,102 @@ public class OpenRoadmOtnTopologyTest { } private void checkSpdrTpList(Uint16 xpdrNb, List tpList) { + LOG.info("tpList = {}", tpList); assertEquals( "only IfOCHOTU4ODU4 interface capabitily expected", IfOCHOTU4ODU4.class, tpList.get(4) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getTpSupportedInterfaces() - .getSupportedInterfaceCapability().get(0) + .getSupportedInterfaceCapability().values().stream().findFirst() + .get() .getIfCapType()); assertEquals( "the rate should be ODU4", ODU4.class, tpList.get(4) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() .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().toString()); if (xpdrNb.equals(Uint16.valueOf(1))) { assertEquals("should contain 5 TPs", 5, tpList.size()); assertEquals("XPDR1-CLIENT1", tpList.get(0).getTpId().getValue()); assertEquals("XPDR1-CLIENT2", tpList.get(1).getTpId().getValue()); assertEquals("XPDR1-NETWORK1", tpList.get(4).getTpId().getValue()); assertEquals( - "only If10GEODU2e interface capabitily expected", - If10GEODU2e.class, - tpList.get(2) + "supported interface capability of tp-id XPDR1-CLIENT2 should contain 2 if-cap-type", + 2, + tpList.get(1) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getTpSupportedInterfaces() - .getSupportedInterfaceCapability().get(0) - .getIfCapType()); + .getSupportedInterfaceCapability().values().size()); assertEquals( - "the rate should be ODU2e", - ODU2e.class, + "supported interface capability of tp-id XPDR1-CLIENT3 should contain 3 if-cap-type", + 3, tpList.get(2) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 + .TerminationPoint1.class) + .getTpSupportedInterfaces() + .getSupportedInterfaceCapability().values().size()); + List sicListClient1 = tpList.get(0) + .augmentation( + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 + .TerminationPoint1.class) + .getTpSupportedInterfaces() + .getSupportedInterfaceCapability().values().stream().collect(Collectors.toList()); + for (SupportedInterfaceCapability supportedInterfaceCapability : sicListClient1) { + assertThat("tp should have 2 if-cap-type: if-10GE-ODU2e, if-10GE-ODU2", + String.valueOf(supportedInterfaceCapability.getIfCapType()), + either(containsString(String.valueOf(If10GEODU2e.class))) + .or(containsString(String.valueOf(If10GEODU2.class)))); + } + List sicListClient3 = tpList.get(3) + .augmentation( + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 + .TerminationPoint1.class) + .getTpSupportedInterfaces() + .getSupportedInterfaceCapability().values().stream().collect(Collectors.toList()); + for (SupportedInterfaceCapability supportedInterfaceCapability : sicListClient3) { + assertThat("tp should have 3 if-cap-type: if-10GE-ODU2e, if-10GE-ODU2, if-10GE", + String.valueOf(supportedInterfaceCapability.getIfCapType()), + either(containsString(String.valueOf(If10GEODU2e.class))) + .or(containsString(String.valueOf(If10GEODU2.class))) + .or(containsString(String.valueOf(If10GE.class)))); + } + assertThat("the rate should be ODU2 or ODU2e or 10GE", + String.valueOf(tpList.get(2) + .augmentation( + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getXpdrTpPortConnectionAttributes() - .getRate()); + .getRate()), + either(containsString(String.valueOf(ODU2e.class))) + .or(containsString(String.valueOf(ODU2.class)))); assertEquals( "TP should be of type client", OpenroadmTpType.XPONDERCLIENT, tpList.get(2) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529 .TerminationPoint1.class) .getTpType()); assertEquals( @@ -920,7 +984,7 @@ public class OpenRoadmOtnTopologyTest { OpenroadmTpType.XPONDERNETWORK, tpList.get(4) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529 .TerminationPoint1.class) .getTpType()); } else if (xpdrNb.equals(Uint16.valueOf(2))) { @@ -930,36 +994,49 @@ public class OpenRoadmOtnTopologyTest { assertEquals("XPDR2-NETWORK1", tpList.get(4).getTpId().getValue()); assertEquals("XPDR2-NETWORK2", tpList.get(5).getTpId().getValue()); assertEquals( - "only If100GEODU4 interface capabitily expected", - If100GEODU4.class, - tpList.get(2) + "only IfOCHOTU4ODU4 interface capabitily expected", + IfOCHOTU4ODU4.class, + tpList.get(5) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) .getTpSupportedInterfaces() - .getSupportedInterfaceCapability().get(0) + .getSupportedInterfaceCapability().values().stream().findFirst() + .get() .getIfCapType()); assertEquals( - "the rate should be ODU4", - ODU4.class, + "supported interface capability of tp should contain 2 IfCapType", + 2, tpList.get(2) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 .TerminationPoint1.class) - .getXpdrTpPortConnectionAttributes() - .getRate()); + .getTpSupportedInterfaces() + .getSupportedInterfaceCapability().values().size()); + List sicListClient3 = tpList.get(2) + .augmentation( + org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev200529 + .TerminationPoint1.class) + .getTpSupportedInterfaces() + .getSupportedInterfaceCapability().values().stream().collect(Collectors.toList()); + for (SupportedInterfaceCapability supportedInterfaceCapability : sicListClient3) { + assertThat("tp should have 2 if-cap-type: if-100GE-ODU4, if-100GE", + String.valueOf(supportedInterfaceCapability.getIfCapType()), + either(containsString(String.valueOf(If100GEODU4.class))) + .or(containsString(String.valueOf(If100GE.class)))); + } assertEquals( "TP should be of type client", OpenroadmTpType.XPONDERCLIENT, tpList.get(2) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529 .TerminationPoint1.class) .getTpType()); assertEquals( "TP should be of type network", OpenroadmTpType.XPONDERNETWORK, tpList.get(6) .augmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529 .TerminationPoint1.class) .getTpType()); }