2 * Copyright © 2020 Orange, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.transportpce.pce.networkanalyzer;
11 import java.util.HashMap;
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Ignore;
16 import org.junit.Test;
17 import org.opendaylight.transportpce.common.NetworkUtils;
18 import org.opendaylight.transportpce.pce.utils.TransactionUtils;
19 import org.opendaylight.transportpce.test.AbstractTest;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node.attributes.AvailableWavelengths;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node.attributes.AvailableWavelengthsBuilder;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributes;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributesBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributes;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributesBuilder;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CpAttributesBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CtpAttributesBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.PpAttributesBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.RxTtpAttributesBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.TxTtpAttributesBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrClientAttributesBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrNetworkAttributesBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrPortAttributesBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
39 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
41 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
42 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
43 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
44 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
45 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeKey;
46 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder;
47 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
48 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
49 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
50 import org.opendaylight.yangtools.yang.common.Uint32;
53 public class PceOpticalNodeTest extends AbstractTest {
55 private PceOpticalNode pceOpticalNode;
60 NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.SRGTXRXPP);
61 node = node1Builder.build();
65 public void isValidTest() {
66 OpenroadmNodeType nodeType = OpenroadmNodeType.ROADM;
67 ServiceFormat serviceFormat = ServiceFormat.Ethernet;
68 String pceNodeType = "pceNodeType";
69 pceOpticalNode = new PceOpticalNode(node, nodeType, new NodeId("node_test"), serviceFormat, pceNodeType);
70 Assert.assertTrue(pceOpticalNode.isValid());
74 public void testInitSrgTps() {
76 pceOpticalNode = new PceOpticalNode(node,
77 OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
78 pceOpticalNode.initSrgTps();
79 pceOpticalNode.initXndrTps();
80 pceOpticalNode.initWLlist();
81 Assert.assertFalse(pceOpticalNode.isValid());
82 Assert.assertFalse(pceOpticalNode.checkWL(12));
83 Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
84 Assert.assertNull(pceOpticalNode.getAvailableTribPorts());
85 Assert.assertNull(pceOpticalNode.getAvailableTribPorts());
86 Assert.assertNull(pceOpticalNode.getXpdrClient("test"));
90 public void testInitXndrTpSrgTypes() {
91 NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.XPONDERNETWORK);
92 Node specificNode = node1Builder.build();
93 pceOpticalNode = new PceOpticalNode(specificNode,
94 OpenroadmNodeType.SRG, new NodeId("optical"), ServiceFormat.OMS, "test");
95 pceOpticalNode.initWLlist();
96 Assert.assertTrue(pceOpticalNode.isValid());
97 Assert.assertTrue(pceOpticalNode.checkWL(12));
98 Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
102 public void testInitXndrTpDegTypes() {
103 pceOpticalNode = new PceOpticalNode(node,
104 OpenroadmNodeType.DEGREE, new NodeId("optical"), ServiceFormat.OMS, "test");
105 pceOpticalNode.initWLlist();
106 Assert.assertTrue(pceOpticalNode.isValid());
107 Assert.assertFalse(pceOpticalNode.checkWL(12));
108 Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
112 public void testInitXndrTpXpondrTypes() {
113 pceOpticalNode = new PceOpticalNode(node,
114 OpenroadmNodeType.XPONDER, new NodeId("optical"), ServiceFormat.OMS, "test");
115 pceOpticalNode.initWLlist();
116 Assert.assertTrue(pceOpticalNode.isValid());
117 Assert.assertTrue(pceOpticalNode.checkWL(12));
118 Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
122 public void testInitWLlist() {
123 pceOpticalNode = new PceOpticalNode(node,
124 OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
125 pceOpticalNode.initXndrTps();
126 pceOpticalNode.initWLlist();
127 Assert.assertFalse(pceOpticalNode.isValid());
128 Assert.assertFalse(pceOpticalNode.checkWL(12));
129 Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
133 public void testGetRdmSrgClient() {
134 pceOpticalNode = new PceOpticalNode(node,
135 OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
136 pceOpticalNode.initSrgTps();
137 Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
138 Assert.assertFalse(pceOpticalNode.isValid());
139 Assert.assertFalse(pceOpticalNode.checkWL(12));
140 Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
144 public void testGetRdmSrgClientEmpty() {
145 NodeBuilder node1Builder = getNodeBuilderEmpty(geSupportingNodes(), OpenroadmTpType.SRGTXRXPP);
146 Node specificNode = node1Builder.build();
147 pceOpticalNode = new PceOpticalNode(specificNode,
148 OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
149 pceOpticalNode.initSrgTps();
150 pceOpticalNode.initWLlist();
151 pceOpticalNode.initXndrTps();
152 Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
153 Assert.assertFalse(pceOpticalNode.isValid());
154 Assert.assertFalse(pceOpticalNode.checkWL(12));
155 Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
159 public void testGetRdmSrgClientDeg() {
160 pceOpticalNode = new PceOpticalNode(node,
161 OpenroadmNodeType.DEGREE, new NodeId("optical"), ServiceFormat.OMS, "test");
162 pceOpticalNode.initSrgTps();
163 Assert.assertNull(pceOpticalNode.getRdmSrgClient("7"));
164 Assert.assertFalse(pceOpticalNode.isValid());
165 Assert.assertFalse(pceOpticalNode.checkWL(12));
166 Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
170 public void testGetRdmSrgClientsrgtxcp() {
171 NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.SRGTXCP);
172 Node specificNode = node1Builder.build();
173 pceOpticalNode = new PceOpticalNode(specificNode,
174 OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
175 pceOpticalNode.initSrgTps();
176 Assert.assertFalse(pceOpticalNode.isValid());
177 Assert.assertFalse(pceOpticalNode.checkWL(12));
178 Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
179 Assert.assertNull(pceOpticalNode.getRdmSrgClient("5"));
183 public void testGetRdmSrgClientDegreerxtpp() {
184 NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.DEGREERXTTP);
185 node = node1Builder.build();
186 pceOpticalNode = new PceOpticalNode(node,
187 OpenroadmNodeType.ROADM, new NodeId("optical"), ServiceFormat.OMS, "test");
188 pceOpticalNode.initSrgTps();
189 Assert.assertNull(pceOpticalNode.getRdmSrgClient("2"));
190 Assert.assertFalse(pceOpticalNode.isValid());
191 Assert.assertFalse(pceOpticalNode.checkWL(12));
192 Assert.assertTrue(pceOpticalNode.checkTP("testTP"));
195 private Map<SupportingNodeKey,SupportingNode> geSupportingNodes() {
196 Map<SupportingNodeKey,SupportingNode> supportingNodes1 = new HashMap<>();
197 SupportingNode supportingNode1 = new SupportingNodeBuilder()
198 .setNodeRef(new NodeId("node 1"))
199 .setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID))
202 .put(supportingNode1.key(),supportingNode1);
204 SupportingNode supportingNode2 = new SupportingNodeBuilder()
205 .setNodeRef(new NodeId("node 2"))
206 .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
209 .put(supportingNode2.key(),supportingNode2);
210 return supportingNodes1;
213 private NodeBuilder getNodeBuilder(Map<SupportingNodeKey,SupportingNode> supportingNodes1,
214 OpenroadmTpType openroadmTpType) {
216 TerminationPoint1Builder tp1Bldr = getTerminationPoint1Builder(openroadmTpType);
217 TerminationPointBuilder xpdrTpBldr = getTerminationPointBuilder();
218 xpdrTpBldr.addAugmentation(tp1Bldr.build());
219 xpdrTpBldr.addAugmentation(createAnotherTerminationPoint().build());
220 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 node1 = getNode1();
221 TerminationPoint xpdr = xpdrTpBldr.build();
222 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1Rev180226 =
224 .setTerminationPoint(Map.of(xpdr.key(),xpdr))
228 return new NodeBuilder()
229 .setNodeId(new NodeId("node_test"))
230 .withKey(new NodeKey(new NodeId("node 1")))
231 .addAugmentation(node1Rev180226)
232 .addAugmentation(node1)
233 .setSupportingNode(supportingNodes1);
236 private NodeBuilder getNodeBuilderEmpty(Map<SupportingNodeKey,SupportingNode> supportingNodes1,
237 OpenroadmTpType openroadmTpType) {
239 TerminationPoint1Builder tp1Bldr = getTerminationPoint1Builder(openroadmTpType);
240 TerminationPointBuilder xpdrTpBldr = getTerminationPointBuilder();
241 xpdrTpBldr.addAugmentation(tp1Bldr.build());
242 xpdrTpBldr.addAugmentation(createAnotherTerminationPoint().build());
244 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 node1 = getNode1Empty();
245 TerminationPoint xpdr = xpdrTpBldr.build();
246 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1Rev180226 =
248 .setTerminationPoint(Map.of(xpdr.key(),xpdr))
252 return new NodeBuilder()
253 .setNodeId(new NodeId("node_test"))
254 .withKey(new NodeKey(new NodeId("node 1")))
255 .addAugmentation(node1Rev180226)
256 .addAugmentation(node1)
257 .setSupportingNode(supportingNodes1);
260 private org.opendaylight
261 .yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 getNode1() {
262 return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder()
263 .setSrgAttributes(getSrgAttributes())
264 .setDegreeAttributes(getDegAttributes())
268 private org.opendaylight
269 .yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 getNode1Empty() {
270 return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder()
271 .setSrgAttributes(getEmptySrgAttributes())
272 .setDegreeAttributes(getEmptyDegAttributes())
276 private DegreeAttributes getDegAttributes() {
277 AvailableWavelengths aval = new AvailableWavelengthsBuilder().setIndex(Uint32.valueOf(20)).build();
278 return (new DegreeAttributesBuilder())
279 .setAvailableWavelengths(Map.of(aval.key(),aval))
283 private SrgAttributes getSrgAttributes() {
284 return new SrgAttributesBuilder().setAvailableWavelengths(TransactionUtils.create96AvalWaveSrg()).build();
287 private DegreeAttributes getEmptyDegAttributes() {
288 return (new DegreeAttributesBuilder())
289 .setAvailableWavelengths(Map.of())
293 private SrgAttributes getEmptySrgAttributes() {
294 return new SrgAttributesBuilder().setAvailableWavelengths(Map.of()).build();
297 private TerminationPointBuilder getTerminationPointBuilder() {
298 return new TerminationPointBuilder().setTpId(new TpId("2"));
301 private TerminationPoint1Builder getTerminationPoint1Builder(OpenroadmTpType openroadmTpType) {
303 return new TerminationPoint1Builder().setTpType(openroadmTpType);
307 private org.opendaylight.yang.gen
308 .v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder createAnotherTerminationPoint() {
309 return new org.opendaylight
310 .yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder()
311 .setTpType(OpenroadmTpType.XPONDERNETWORK)
312 .setCtpAttributes((new CtpAttributesBuilder()).setUsedWavelengths(Map.of()).build())
313 .setCpAttributes((new CpAttributesBuilder()).setUsedWavelengths(Map.of()).build())
314 .setTxTtpAttributes((new TxTtpAttributesBuilder()).setUsedWavelengths(Map.of()).build())
315 .setRxTtpAttributes((new RxTtpAttributesBuilder()).setUsedWavelengths(Map.of()).build())
316 .setPpAttributes((new PpAttributesBuilder()).setUsedWavelength(Map.of()).build())
317 .setXpdrClientAttributes((new XpdrClientAttributesBuilder()).build())
318 .setXpdrPortAttributes((new XpdrPortAttributesBuilder()).build())
319 .setXpdrNetworkAttributes(new XpdrNetworkAttributesBuilder()
320 .setTailEquipmentId("destNode" + "--" + "destTp").build());