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 com.google.common.collect.ImmutableList;
12 import java.util.ArrayList;
13 import java.util.Collections;
14 import java.util.List;
15 import org.junit.Before;
16 import org.junit.Test;
17 import org.opendaylight.transportpce.common.NetworkUtils;
18 import org.opendaylight.transportpce.test.AbstractTest;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1;
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.AvailableWavelengthsBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributes;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributesBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributes;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributesBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CpAttributesBuilder;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CtpAttributesBuilder;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.PpAttributesBuilder;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.RxTtpAttributesBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.TxTtpAttributesBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrClientAttributesBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrNetworkAttributesBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrPortAttributesBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat;
37 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
39 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
41 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
42 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
43 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
44 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1;
45 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder;
46 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
47 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
48 import org.opendaylight.yangtools.yang.common.Uint32;
51 public class PceOtnNodeTest extends AbstractTest {
53 private PceOtnNode pceOtnNode;
58 NodeBuilder node1Builder = getNodeBuilder(geSupportingNodes(), OpenroadmTpType.SRGTXRXPP);
59 node = node1Builder.build();
61 new PceOtnNode(node, OpenroadmNodeType.ROADM,
62 new NodeId("optical"), ServiceFormat.OMS.getName(), "test");
68 pceOtnNode.initXndrTps("mode");
71 private List<SupportingNode> geSupportingNodes() {
72 List<SupportingNode> supportingNodes1 = new ArrayList<>();
74 .add(new SupportingNodeBuilder()
75 .setNodeRef(new NodeId("node 1"))
76 .setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID))
80 .add(new SupportingNodeBuilder()
81 .setNodeRef(new NodeId("node 2"))
82 .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
84 return supportingNodes1;
87 private NodeBuilder getNodeBuilder(List<SupportingNode> supportingNodes1, OpenroadmTpType openroadmTpType) {
89 TerminationPoint1Builder tp1Bldr = getTerminationPoint1Builder(openroadmTpType);
90 TerminationPointBuilder xpdrTpBldr = getTerminationPointBuilder();
91 xpdrTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build());
92 xpdrTpBldr.addAugmentation(
93 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1.class,
94 createAnotherTerminationPoint().build());
95 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 node1 = getNode1();
96 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1Rev180226 =
98 .setTerminationPoint(ImmutableList.of(xpdrTpBldr.build()))
102 return new NodeBuilder()
103 .setNodeId(new NodeId("node_test"))
104 .withKey(new NodeKey(new NodeId("node 1")))
106 Node1.class, node1Rev180226)
108 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1.class,
110 .setSupportingNode(supportingNodes1);
113 private NodeBuilder getNodeBuilderEmpty(List<SupportingNode> supportingNodes1, OpenroadmTpType openroadmTpType) {
115 TerminationPoint1Builder tp1Bldr = getTerminationPoint1Builder(openroadmTpType);
116 TerminationPointBuilder xpdrTpBldr = getTerminationPointBuilder();
117 xpdrTpBldr.addAugmentation(TerminationPoint1.class, tp1Bldr.build());
118 xpdrTpBldr.addAugmentation(
119 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1.class,
120 createAnotherTerminationPoint().build());
122 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 node1 = getNode1Empty();
123 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 node1Rev180226 =
125 .setTerminationPoint(ImmutableList.of(xpdrTpBldr.build()))
129 return new NodeBuilder()
130 .setNodeId(new NodeId("node_test"))
131 .withKey(new NodeKey(new NodeId("node 1")))
133 Node1.class, node1Rev180226)
135 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1.class,
137 .setSupportingNode(supportingNodes1);
140 private org.opendaylight
141 .yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 getNode1() {
142 return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder()
143 .setSrgAttributes(getSrgAttributes())
144 .setDegreeAttributes(getDegAttributes())
148 private org.opendaylight
149 .yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1 getNode1Empty() {
150 return new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder()
151 .setSrgAttributes(getEmptySrgAttributes())
152 .setDegreeAttributes(getEmptyDegAttributes())
156 private DegreeAttributes getDegAttributes() {
157 return (new DegreeAttributesBuilder())
158 .setAvailableWavelengths(
159 Collections.singletonList(new AvailableWavelengthsBuilder()
165 private SrgAttributes getSrgAttributes() {
166 return new SrgAttributesBuilder().setAvailableWavelengths(create96AvalWaveSrg()).build();
169 private DegreeAttributes getEmptyDegAttributes() {
170 return (new DegreeAttributesBuilder())
171 .setAvailableWavelengths(
176 private SrgAttributes getEmptySrgAttributes() {
177 List<org.opendaylight.yang.gen
178 .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths>
179 waveList = new ArrayList<>();
180 return new SrgAttributesBuilder().setAvailableWavelengths(waveList).build();
183 private TerminationPointBuilder getTerminationPointBuilder() {
184 return new TerminationPointBuilder()
185 .setTpId(new TpId("2"));
188 private TerminationPoint1Builder getTerminationPoint1Builder(OpenroadmTpType openroadmTpType) {
190 return new TerminationPoint1Builder()
191 .setTpType(openroadmTpType);
195 private org.opendaylight.yang.gen
196 .v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder createAnotherTerminationPoint() {
197 return new org.opendaylight
198 .yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder()
199 .setTpType(OpenroadmTpType.XPONDERNETWORK)
200 .setCtpAttributes((new CtpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build())
201 .setCpAttributes((new CpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build())
202 .setTxTtpAttributes((new TxTtpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build())
203 .setRxTtpAttributes((new RxTtpAttributesBuilder()).setUsedWavelengths(new ArrayList<>()).build())
204 .setPpAttributes((new PpAttributesBuilder()).setUsedWavelength(new ArrayList<>()).build())
205 .setXpdrClientAttributes((new XpdrClientAttributesBuilder()).build())
206 .setXpdrPortAttributes((new XpdrPortAttributesBuilder()).build())
207 .setXpdrNetworkAttributes(new XpdrNetworkAttributesBuilder()
208 .setTailEquipmentId("destNode" + "--" + "destTp").build());
211 private static List<org.opendaylight.yang.gen
212 .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths> create96AvalWaveSrg() {
214 List<org.opendaylight.yang.gen
215 .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths>
216 waveList = new ArrayList<>();
218 for (int i = 1; i < 97; i++) {
219 org.opendaylight.yang.gen
220 .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder
221 avalBldr = new org.opendaylight.yang.gen
222 .v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengthsBuilder()
223 .setIndex(Uint32.valueOf(i))
224 .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes
225 .AvailableWavelengthsKey(Uint32.valueOf(i)));
226 waveList.add(avalBldr.build());