Refactor SupportedIfCapability usage
[transportpce.git] / common / src / test / java / org / opendaylight / transportpce / common / mapping / PortMappingVersion121Test.java
1 /*
2  * Copyright © 2020 Orange Labs, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.transportpce.common.mapping;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
14 import static org.junit.Assert.fail;
15 import static org.mockito.Mockito.mock;
16 import static org.mockito.Mockito.when;
17
18 import java.util.ArrayList;
19 import java.util.Arrays;
20 import java.util.Collections;
21 import java.util.HashMap;
22 import java.util.List;
23 import java.util.Map;
24 import java.util.Optional;
25 import java.util.Random;
26 import java.util.concurrent.ExecutionException;
27 import org.eclipse.jdt.annotation.NonNull;
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.opendaylight.mdsal.binding.api.DataBroker;
31 import org.opendaylight.mdsal.binding.api.ReadTransaction;
32 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
33 import org.opendaylight.transportpce.common.Timeouts;
34 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
35 import org.opendaylight.transportpce.test.DataStoreContext;
36 import org.opendaylight.transportpce.test.DataStoreContextImpl;
37 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.Network;
38 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.NetworkBuilder;
39 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping;
40 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.Nodes;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.Direction;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.NodeTypes;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.Port;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.ParentCircuitPackBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.Ports;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.PortsBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.PortsKey;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.packs.CircuitPacks;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.packs.CircuitPacksBuilder;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.packs.CircuitPacksKey;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.ConnectionPorts;
52 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.ConnectionPortsBuilder;
53 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.ConnectionPortsKey;
54 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface;
55 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
56 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceKey;
57 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice;
58 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDeviceBuilder;
59 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.ConnectionMap;
60 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.ConnectionMapBuilder;
61 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.ConnectionMapKey;
62 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Degree;
63 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.DegreeBuilder;
64 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.DegreeKey;
65 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Info;
66 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.InfoBuilder;
67 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Protocols;
68 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.ProtocolsBuilder;
69 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.SharedRiskGroup;
70 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.SharedRiskGroupBuilder;
71 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.SharedRiskGroupKey;
72 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.connection.map.Destination;
73 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.connection.map.DestinationBuilder;
74 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.connection.map.DestinationKey;
75 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.connection.map.SourceBuilder;
76 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.port.Interfaces;
77 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.port.InterfacesBuilder;
78 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.port.PartnerPortBuilder;
79 import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.Protocols1Builder;
80 import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.LldpBuilder;
81 import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.PortConfig;
82 import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.PortConfigBuilder;
83 import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.PortConfigKey;
84 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
85 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
86 import org.opendaylight.yangtools.yang.binding.Augmentation;
87 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
88 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
89 import org.opendaylight.yangtools.yang.common.Uint16;
90 import org.opendaylight.yangtools.yang.common.Uint32;
91 import org.slf4j.Logger;
92 import org.slf4j.LoggerFactory;
93
94 public class PortMappingVersion121Test {
95
96     private static final Logger LOG = LoggerFactory.getLogger(PortMappingVersion121Test.class);
97     private static DataBroker dataBroker;
98     private static DeviceTransactionManager deviceTransactionManager;
99     private static PortMappingVersion121 portMappingVersion121;
100     private Random ran = new Random();
101
102     @Before
103     public void setUp() throws Exception {
104         // test createMappingData for a xpdr node with 3 network + 1 client + bidirectional & unidirectional ports
105         DataStoreContext dataStoreContext = new DataStoreContextImpl();
106         dataBroker = dataStoreContext.getDataBroker();
107         deviceTransactionManager = mock(DeviceTransactionManager.class);
108         portMappingVersion121 = new PortMappingVersion121(dataBroker, deviceTransactionManager);
109     }
110
111     @Test
112     public void createMappingDataTestRdm() {
113         // mock node info
114         final Info info = getInfo2();
115
116         List<Interfaces> interfacesList = Arrays.asList(getInterfaces("i1"), getInterfaces("i2"));
117
118         // mock 1 bidirectional port for degree
119         Ports ports = getPortsWithInterfaces(interfacesList, "p1");
120         List<Ports> portsList = Arrays.asList(ports);
121
122         // mock 2 unidirectional ports for degree
123         Ports ports2 = getPorts("p2", Port.PortQual.RoadmExternal, "c3", "p3", Direction.Rx);
124         Ports ports3 = getPorts("p3", Port.PortQual.RoadmExternal, "c3", "p2", Direction.Tx);
125         List<Ports> portsList2 = Arrays.asList(ports2, ports3);
126
127         // mock 2 unidirectional ports for degree, reverse direction
128         Ports ports22 = getPorts("p22", Port.PortQual.RoadmExternal, "c5", "p33", Direction.Tx);
129         Ports ports33 = getPorts("p33", Port.PortQual.RoadmExternal, "c5", "p22", Direction.Rx);
130         List<Ports> portsList22 = Arrays.asList(ports22, ports33);
131
132         // mock 2 unidirectional ports for srg
133         Ports ports4 = getPorts("p4", Port.PortQual.RoadmExternal, "c4", "p5", Direction.Rx);
134         Ports ports5 = getPorts("p5", Port.PortQual.RoadmExternal, "c4", "p4", Direction.Tx);
135         List<Ports> portsList4 = Arrays.asList(ports4, ports5);
136
137         // mock 2 unidirectional ports for srg, reverse direction
138         Ports ports44 = getPorts("p44", Port.PortQual.RoadmExternal, "c6", "p55", Direction.Tx);
139         Ports ports55 = getPorts("p55", Port.PortQual.RoadmExternal, "c6", "p44", Direction.Rx);
140         List<Ports> portsList44 = Arrays.asList(ports44, ports55);
141
142         // mock 6 circuit packs
143         final CircuitPacks circuitPackObject = getCircuitPacks(portsList, "c1", "pc1");
144         final CircuitPacks circuitPackObject2 = getCircuitPacks(portsList, "c2", "pc2");
145         final CircuitPacks circuitPackObject3 = getCircuitPacks(portsList2, "c3", "pc3");
146         final CircuitPacks circuitPackObject4 = getCircuitPacks(portsList4, "c4", "pc4");
147         final CircuitPacks circuitPackObject5 = getCircuitPacks(portsList22, "c5", "pc5");
148         final CircuitPacks circuitPackObject6 = getCircuitPacks(portsList44, "c6", "pc6");
149
150         // mock 6 connection ports
151         ConnectionPorts connectionPorts = getConnectionPorts("c1", "p1");
152         Map<ConnectionPortsKey, ConnectionPorts> connectionPortsMap = new HashMap<>();
153         connectionPortsMap.put(connectionPorts.key(), connectionPorts);
154
155         ConnectionPorts connectionPorts2 = getConnectionPorts("c2", "p1");
156         List<ConnectionPorts> connectionPortsList2 = new ArrayList<ConnectionPorts>();
157         connectionPortsList2.add(connectionPorts2);
158
159         ConnectionPorts connectionPorts3 = getConnectionPorts("c3", "p2");
160         ConnectionPorts connectionPorts4 = getConnectionPorts("c3", "p3");
161         Map<ConnectionPortsKey, ConnectionPorts> connectionPortsMap3 = new HashMap<>();
162         connectionPortsMap3.put(connectionPorts3.key(), connectionPorts3);
163         connectionPortsMap3.put(connectionPorts4.key(), connectionPorts4);
164
165         ConnectionPorts connectionPorts5 = getConnectionPorts("c4", "p4");
166         ConnectionPorts connectionPorts6 = getConnectionPorts("c4", "p5");
167         List<ConnectionPorts> connectionPortsList4 = new ArrayList<ConnectionPorts>();
168         connectionPortsList4.add(connectionPorts5);
169         connectionPortsList4.add(connectionPorts6);
170
171         ConnectionPorts connectionPorts33 = getConnectionPorts("c5", "p22");
172         ConnectionPorts connectionPorts44 = getConnectionPorts("c5", "p33");
173         Map<ConnectionPortsKey, ConnectionPorts> connectionPortsMap33 = new HashMap<>();
174         connectionPortsMap33.put(connectionPorts33.key(), connectionPorts33);
175         connectionPortsMap33.put(connectionPorts44.key(), connectionPorts44);
176
177         ConnectionPorts connectionPorts55 = getConnectionPorts("c6", "p44");
178         ConnectionPorts connectionPorts66 = getConnectionPorts("c6", "p55");
179         Map<ConnectionPortsKey, ConnectionPorts> connectionPortsMap44 = new HashMap<>();
180         connectionPortsMap44.put(connectionPorts55.key(), connectionPorts55);
181         connectionPortsMap44.put(connectionPorts66.key(), connectionPorts66);
182
183         // mock one degree with bidirectional port
184         org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks circuitPacks =
185                 new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksBuilder()
186                 .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
187                         .degree.CircuitPacksKey(Uint32.valueOf(1)))
188                         .setCircuitPackName("c1").build();
189         Map<
190                 org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksKey,
191                 org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks> circuitPacksMap =
192                         new HashMap<>();
193         circuitPacksMap.put(circuitPacks.key(), circuitPacks);
194
195         final Degree ordmDegreeObject = new DegreeBuilder().setDegreeNumber(Uint16.valueOf(1))
196                 .setCircuitPacks(circuitPacksMap).setConnectionPorts(connectionPortsMap).build();
197
198         // mock one srg with bidirectional port
199         org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks srgCircuitPacks =
200                 new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacksBuilder()
201                 .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
202                         .srg.CircuitPacksKey(Uint32.valueOf(2)))
203                         .setCircuitPackName("c2").build();
204         Map<
205                 org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacksKey,
206                 org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks> srgCircuitPacksList =
207                         new HashMap<>();
208         srgCircuitPacksList.put(srgCircuitPacks.key(), srgCircuitPacks);
209
210         final SharedRiskGroup ordmSrgObject = new SharedRiskGroupBuilder().setSrgNumber(Uint16.valueOf(1))
211                 .setCircuitPacks(srgCircuitPacksList).build();
212
213         // mock one degree with 2 unidirectional ports
214         org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks circuitPacks3 =
215                 new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksBuilder()
216                 .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
217                         .degree.CircuitPacksKey(Uint32.valueOf(3)))
218                         .setCircuitPackName("c3").build();
219         List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks> circuitPacksList3 =
220                 new ArrayList<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks>();
221         circuitPacksList3.add(circuitPacks3);
222
223         Map<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksKey,
224             org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks> values =
225             new HashMap<>();
226         org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksKey circuitPackKey =
227                 new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksKey(
228                         Uint32.valueOf(3));
229         values.put(circuitPackKey, circuitPacks3);
230         final Degree ordmDegreeObject3 = new DegreeBuilder().setDegreeNumber(Uint16.valueOf(2)).setCircuitPacks(values)
231                 .setConnectionPorts(connectionPortsMap3).build();
232         // mock one srg with 2 unidirectional ports
233         org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks srgCircuitPacks4 =
234                 new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacksBuilder()
235                 .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
236                         .srg.CircuitPacksKey(Uint32.valueOf(4)))
237                         .setCircuitPackName("c4").build();
238         Map<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacksKey,
239                 org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks>
240             srgCircuitPacksList4 = new HashMap<>();
241         srgCircuitPacksList4.put(srgCircuitPacks4.key(), srgCircuitPacks4);
242
243         final SharedRiskGroup ordmSrgObject4 = new SharedRiskGroupBuilder().setSrgNumber(Uint16.valueOf(2))
244                 .setCircuitPacks(srgCircuitPacksList4).build();
245
246         // mock one degree with unidirectional ports, reverse direction
247         org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks circuitPacks5 =
248                 new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksBuilder()
249                 .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
250                         .degree.CircuitPacksKey(Uint32.valueOf(5)))
251                         .setCircuitPackName("c5").build();
252         List<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks> circuitPacksList5 =
253                 new ArrayList<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacks>();
254         circuitPacksList5.add(circuitPacks5);
255         values = new HashMap<>();
256         circuitPackKey = new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.CircuitPacksKey(
257                 Uint32.valueOf(5));
258         values.put(circuitPackKey, circuitPacks5);
259         final Degree ordmDegreeObject5 = new DegreeBuilder().setDegreeNumber(Uint16.valueOf(3)).setCircuitPacks(values)
260                 .setConnectionPorts(connectionPortsMap44).build();
261
262         // mock one srg with 2 unidirectional ports, reverse direction
263         org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks srgCircuitPacks6 =
264                 new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacksBuilder()
265                 .withKey(new org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
266                         .srg.CircuitPacksKey(Uint32.valueOf(6)))
267                         .setCircuitPackName("c6").build();
268         Map<
269                 org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacksKey,
270                 org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.srg.CircuitPacks> srgCircuitPacksMap6 =
271                         new HashMap<>();
272         srgCircuitPacksMap6.put(srgCircuitPacks6.key(), srgCircuitPacks6);
273
274         final SharedRiskGroup ordmSrgObject6 = new SharedRiskGroupBuilder().setSrgNumber(Uint16.valueOf(3))
275                 .setCircuitPacks(srgCircuitPacksMap6).build();
276
277         // mock lldp configuration
278         PortConfig portConfig =
279                 new PortConfigBuilder().setIfName("i1").setAdminStatus(PortConfig.AdminStatus.Txandrx).build();
280         Map<PortConfigKey, PortConfig> portConfigMap = new HashMap<>();
281         portConfigMap.put(portConfig.key(), portConfig);
282         Augmentation<Protocols> augmentation =
283                 new Protocols1Builder().setLldp(new LldpBuilder().setPortConfig(portConfigMap).build()).build();
284         Protocols protocols = new ProtocolsBuilder().addAugmentation(augmentation).build();
285
286         // mock responses for deviceTransactionManager calls
287         InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.device
288             .rev170206.org.openroadm.device.container.org.openroadm.device.Degree> deviceIID = InstanceIdentifier
289             .create(OrgOpenroadmDevice.class)
290             .child(org.opendaylight.yang.gen.v1.http.org.openroadm.device
291                     .rev170206.org.openroadm.device.container.org.openroadm.device.Degree.class,
292                                 new DegreeKey(Uint16.valueOf(1)));
293         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, deviceIID,
294                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
295                         .thenReturn(Optional.of(ordmDegreeObject));
296
297         InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
298             .org.openroadm.device.container.org.openroadm.device.Degree> deviceIID3 = InstanceIdentifier
299             .create(OrgOpenroadmDevice.class)
300             .child(org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
301             .org.openroadm.device.container.org.openroadm.device.Degree.class,
302                                 new DegreeKey(Uint16.valueOf(2)));
303         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, deviceIID3,
304                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
305                         .thenReturn(Optional.of(ordmDegreeObject3));
306
307         InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
308             .org.openroadm.device.container.org.openroadm.device.Degree> deviceIID5 = InstanceIdentifier
309             .create(OrgOpenroadmDevice.class)
310             .child(org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206
311             .org.openroadm.device.container.org.openroadm.device.Degree.class,
312                                 new DegreeKey(Uint16.valueOf(3)));
313         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, deviceIID5,
314                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
315                         .thenReturn(Optional.of(ordmDegreeObject5));
316
317         InstanceIdentifier<Protocols> protocoliid =
318                 InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Protocols.class);
319         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, protocoliid,
320                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(protocols));
321
322         Interface interfaceObject = new InterfaceBuilder().withKey(new InterfaceKey("itf1"))
323                 .setSupportingCircuitPackName("sc1").build();
324         InstanceIdentifier<Interface> interfaceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
325                 .child(Interface.class, new InterfaceKey(portConfig.getIfName()));
326         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, interfaceIID,
327                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
328                         .thenReturn(Optional.of(interfaceObject));
329
330         InstanceIdentifier<Ports> portID = getChild("c1", "p1");
331         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID,
332                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports));
333
334         // mock 2 bidirectional port for SRG
335         Ports ports1 = getPortsWithInterfaces(interfacesList, "p2");
336         InstanceIdentifier<Ports> portID1 = getChild("c2", "p1");
337         when(deviceTransactionManager.getDataFromDevice("node",
338             LogicalDatastoreType.OPERATIONAL, portID1,
339             Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
340             .thenReturn(Optional.of(ports1));
341
342         InstanceIdentifier<Ports> portID2 = getChild("c3", "p2");
343         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID2,
344                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports2));
345
346         InstanceIdentifier<Ports> portID3 = getChild("c3", "p3");
347         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID3,
348                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports3));
349
350         InstanceIdentifier<Ports> portID22 = getChild("c5", "p22");
351         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID22,
352                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports22));
353
354         InstanceIdentifier<Ports> portID33 = getChild("c5", "p33");
355         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID33,
356                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports33));
357
358         InstanceIdentifier<Ports> portID4 = getChild("c4", "p4");
359         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID4,
360                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports4));
361
362         InstanceIdentifier<Ports> portID5 = getChild("c4", "p5");
363         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID5,
364                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports5));
365
366         InstanceIdentifier<Ports> portID44 = getChild("c6", "p44");
367         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID44,
368                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports44));
369
370         InstanceIdentifier<Ports> portID55 = getChild("c6", "p55");
371         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID55,
372                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports55));
373
374         InstanceIdentifier<Info> infoIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Info.class);
375         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, infoIID,
376                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(info));
377
378         InstanceIdentifier<CircuitPacks> circuitPacksIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
379                 .child(CircuitPacks.class, new CircuitPacksKey("c1"));
380         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID,
381                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
382                         .thenReturn(Optional.of(circuitPackObject));
383
384         InstanceIdentifier<CircuitPacks> circuitPacksIID2 = InstanceIdentifier.create(OrgOpenroadmDevice.class)
385                 .child(CircuitPacks.class, new CircuitPacksKey("c2"));
386         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID2,
387                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
388                         .thenReturn(Optional.of(circuitPackObject2));
389
390         InstanceIdentifier<CircuitPacks> circuitPacksIID3 = InstanceIdentifier.create(OrgOpenroadmDevice.class)
391                 .child(CircuitPacks.class, new CircuitPacksKey("c3"));
392         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID3,
393                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
394                         .thenReturn(Optional.of(circuitPackObject3));
395
396         InstanceIdentifier<CircuitPacks> circuitPacksIID4 = InstanceIdentifier.create(OrgOpenroadmDevice.class)
397                 .child(CircuitPacks.class, new CircuitPacksKey("c4"));
398         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID4,
399                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
400                         .thenReturn(Optional.of(circuitPackObject4));
401
402         InstanceIdentifier<CircuitPacks> circuitPacksIID5 = InstanceIdentifier.create(OrgOpenroadmDevice.class)
403                 .child(CircuitPacks.class, new CircuitPacksKey("c5"));
404         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID5,
405                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
406                         .thenReturn(Optional.of(circuitPackObject5));
407
408         InstanceIdentifier<CircuitPacks> circuitPacksIID6 = InstanceIdentifier.create(OrgOpenroadmDevice.class)
409                 .child(CircuitPacks.class, new CircuitPacksKey("c6"));
410         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID6,
411                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
412                         .thenReturn(Optional.of(circuitPackObject6));
413
414         InstanceIdentifier<SharedRiskGroup> srgIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
415                 .child(SharedRiskGroup.class, new SharedRiskGroupKey(Uint16.valueOf(1)));
416         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, srgIID,
417                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
418                         .thenReturn(Optional.of(ordmSrgObject));
419
420         InstanceIdentifier<SharedRiskGroup> srgIID4 = InstanceIdentifier.create(OrgOpenroadmDevice.class)
421                 .child(SharedRiskGroup.class, new SharedRiskGroupKey(Uint16.valueOf(2)));
422         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, srgIID4,
423                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
424                         .thenReturn(Optional.of(ordmSrgObject4));
425
426         InstanceIdentifier<SharedRiskGroup> srgIID6 = InstanceIdentifier.create(OrgOpenroadmDevice.class)
427                 .child(SharedRiskGroup.class, new SharedRiskGroupKey(Uint16.valueOf(3)));
428         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, srgIID6,
429                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
430                         .thenReturn(Optional.of(ordmSrgObject6));
431
432         // test createMappingData with a node with 3 dgree + 3 srg + bidirectional & unidirectional ports
433         assertTrue("creating mappingdata for existed node returns true",
434                 portMappingVersion121.createMappingData("node"));
435
436         // assert all portmappings have been created for the roadm node
437         ReadTransaction rr = dataBroker.newReadOnlyTransaction();
438         InstanceIdentifier<Network> mappingIID = InstanceIdentifier.create(Network.class);
439         Network network = new NetworkBuilder().build();
440         try {
441             Optional<Network> optionalNetwork = rr.read(LogicalDatastoreType.CONFIGURATION, mappingIID).get();
442             if (optionalNetwork.isPresent()) {
443                 network = optionalNetwork.get();
444             }
445
446         } catch (ExecutionException | InterruptedException e) {
447             LOG.error("Failed to read mapping.", e);
448             fail();
449
450         }
451         List<String> testMappings = Arrays.asList("SRG2-PP1-RX", "SRG3-PP1-RX", "SRG1-PP1-TXRX", "SRG3-PP1-TX",
452                 "DEG1-TTP-TXRX", "SRG2-PP1-TX", "DEG2-TTP-RX", "DEG2-TTP-TX", "DEG3-TTP-RX", "DEG3-TTP-TX");
453         List<String> mappings = new ArrayList<>();
454         List<Nodes> nodes = new ArrayList<>(network.nonnullNodes().values());
455         List<Mapping> mappingValues = new ArrayList<>(nodes.get(0).nonnullMapping().values());
456         for (int i = 0; i < testMappings.size(); i++) {
457             mappings.add(mappingValues.get(i).getLogicalConnectionPoint());
458         }
459         Collections.sort(testMappings);
460         Collections.sort(mappings);
461         assertEquals("test mapping are equals to mapping", testMappings, mappings);
462
463         // test updateMapping
464         assertTrue("update mapping for node returns true",
465                 portMappingVersion121.updateMapping("node", mappingValues.get(0)));
466
467         // test createMapping for non-existent roadm node
468         assertFalse("create non existed roadm node returns false", portMappingVersion121.createMappingData("node2"));
469
470         // test updateMapping for null roadm node
471         assertFalse("updating null roadm node returns false",
472                 portMappingVersion121.updateMapping(null, mappingValues.get(0)));
473
474     }
475
476     @Test
477     public void createMappingDataTestXpdr() {
478         // mock node info
479         final Info info = getInfo();
480
481         // mock 1 bidirectional port for network
482         Ports ports = new PortsBuilder().withKey(new PortsKey("p1")).setPortName("p1")
483                 .setPortQual(Port.PortQual.XpdrNetwork)
484                 .setPortDirection(Direction.Bidirectional).build();
485         List<Ports> portsList = new ArrayList<>();
486         portsList.add(ports);
487
488         // mock 1 bidirectional port for client
489         Ports ports11 = new PortsBuilder().withKey(new PortsKey("p11")).setPortName("p11")
490                 .setPortQual(Port.PortQual.XpdrClient)
491                 .setPortDirection(Direction.Bidirectional).build();
492         List<Ports> portsList11 = new ArrayList<>();
493         portsList11.add(ports11);
494
495         // mock 2 unidirectional ports for network
496         Ports ports2 = getPorts("p2", Port.PortQual.XpdrNetwork, "c3", "p3", Direction.Rx);
497         Ports ports3 = getPorts("p3", Port.PortQual.XpdrNetwork, "c3", "p2", Direction.Tx);
498         List<Ports> portsList2 = new ArrayList<>();
499         portsList2.add(ports2);
500         portsList2.add(ports3);
501
502         // mock 2 unidirectional ports for network, reverse direction
503         Ports ports4 = getPorts("p4", Port.PortQual.XpdrNetwork, "c4", "p5", Direction.Tx);
504         Ports ports5 = getPorts("p5", Port.PortQual.XpdrNetwork, "c4", "p4", Direction.Rx);
505         List<Ports> portsList4 = new ArrayList<>();
506         portsList4.add(ports4);
507         portsList4.add(ports5);
508
509         // mock connection map
510         Destination destination = new DestinationBuilder()
511                 .setCircuitPackName("c2").setPortName("p11").build();
512         List<Destination> destinationList = new ArrayList<>();
513         destinationList.add(destination);
514         ConnectionMap connectionMap = getConnectionMap(destinationList);
515         Map<ConnectionMapKey, ConnectionMap> connectionMapMap = new HashMap<>();
516         connectionMapMap.put(connectionMap.key(), connectionMap);
517
518         // mock reponses for deviceTransactionManager
519         InstanceIdentifier<Ports> portID = getChild("c1", "p1");
520         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID,
521                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports));
522
523         InstanceIdentifier<Ports> portID11 = getChild("c2", "p11");
524         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID11,
525                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports11));
526
527         InstanceIdentifier<Ports> portID2 = getChild("c3", "p2");
528         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID2,
529                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports2));
530
531         InstanceIdentifier<Ports> portID3 = getChild("c3", "p3");
532         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID3,
533                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports3));
534
535         InstanceIdentifier<Ports> portID4 = getChild("c4", "p4");
536         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID4,
537                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports4));
538
539         InstanceIdentifier<Ports> portID5 = getChild("c4", "p5");
540         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, portID5,
541                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(ports5));
542
543         InstanceIdentifier<Info> infoIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Info.class);
544         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, infoIID,
545                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(info));
546
547         // mock 4 circuit packs
548         CircuitPacks circuitPackObject = getCircuitPacks(portsList, "c1", "pc1");
549         CircuitPacks circuitPackObject2 = getCircuitPacks(portsList11, "c2", "pc2");
550         CircuitPacks circuitPackObject3 = getCircuitPacks(portsList2, "c3", "pc3");
551         CircuitPacks circuitPackObject4 = getCircuitPacks(portsList4, "c4", "pc4");
552
553         InstanceIdentifier<CircuitPacks> circuitPacksIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
554                 .child(CircuitPacks.class, new CircuitPacksKey("c1"));
555         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID,
556                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
557                         .thenReturn(Optional.of(circuitPackObject));
558
559         InstanceIdentifier<CircuitPacks> circuitPacksIID2 = InstanceIdentifier.create(OrgOpenroadmDevice.class)
560                 .child(CircuitPacks.class, new CircuitPacksKey("c2"));
561         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID2,
562                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
563                         .thenReturn(Optional.of(circuitPackObject2));
564
565         InstanceIdentifier<CircuitPacks> circuitPacksIID3 = InstanceIdentifier.create(OrgOpenroadmDevice.class)
566                 .child(CircuitPacks.class, new CircuitPacksKey("c3"));
567         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID3,
568                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
569                         .thenReturn(Optional.of(circuitPackObject3));
570
571         InstanceIdentifier<CircuitPacks> circuitPacksIID4 = InstanceIdentifier.create(OrgOpenroadmDevice.class)
572                 .child(CircuitPacks.class, new CircuitPacksKey("c4"));
573         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, circuitPacksIID4,
574                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT))
575                         .thenReturn(Optional.of(circuitPackObject4));
576
577         Map<CircuitPacksKey, CircuitPacks> circuitPacksMap = new HashMap<>();
578         circuitPacksMap.put(circuitPackObject.key(), circuitPackObject);
579         circuitPacksMap.put(circuitPackObject2.key(), circuitPackObject2);
580         circuitPacksMap.put(circuitPackObject3.key(), circuitPackObject3);
581         circuitPacksMap.put(circuitPackObject4.key(), circuitPackObject4);
582
583         OrgOpenroadmDevice deviceObject = new OrgOpenroadmDeviceBuilder().setCircuitPacks(circuitPacksMap)
584                 .setConnectionMap(connectionMapMap).build();
585         InstanceIdentifier<OrgOpenroadmDevice> deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class);
586         when(deviceTransactionManager.getDataFromDevice("node", LogicalDatastoreType.OPERATIONAL, deviceIID,
587                 Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT)).thenReturn(Optional.of(deviceObject));
588
589         // test createMappingData for xpdr node with 2 network + 1 client + unidirectional & bidirectional ports
590         assertTrue("returns true when create mapping ", portMappingVersion121.createMappingData("node"));
591
592         // assert all portmappings have been created for the xpdr node
593         ReadTransaction rr = dataBroker.newReadOnlyTransaction();
594         InstanceIdentifier<Network> mappingIID = InstanceIdentifier.create(Network.class);
595         Network network = new NetworkBuilder().build();
596         try {
597             Optional<Network> optionalNetwork = rr.read(LogicalDatastoreType.CONFIGURATION, mappingIID).get();
598             if (optionalNetwork.isPresent()) {
599                 network = optionalNetwork.get();
600             }
601
602         } catch (ExecutionException | InterruptedException e) {
603             LOG.error("Failed to read mapping.", e);
604             fail();
605         }
606         List<String> testMappings = new ArrayList<>(List.of("XPDR1-CLIENT1", "XPDR1-NETWORK5", "XPDR1-NETWORK4",
607             "XPDR1-NETWORK3", "XPDR1-NETWORK2", "XPDR1-NETWORK1"));
608         List<String> mappings = new ArrayList<>();
609         List<Nodes> nodes = new ArrayList<>(network.nonnullNodes().values());
610         List<Mapping> mappingValues = new ArrayList<>(nodes.get(0).nonnullMapping().values());
611         for (int i = 0; i < testMappings.size(); i++) {
612             mappings.add(mappingValues.get(i).getLogicalConnectionPoint());
613         }
614         Collections.sort(testMappings);
615         Collections.sort(mappings);
616         assertEquals("test mapping are equals to mapping", testMappings, mappings);
617     }
618
619     @NonNull
620     private KeyedInstanceIdentifier<Ports, PortsKey> getChild(String c4, String p5) {
621         return InstanceIdentifier.create(OrgOpenroadmDevice.class).child(CircuitPacks.class, new CircuitPacksKey(c4))
622                 .child(Ports.class, new PortsKey(p5));
623     }
624
625     private ConnectionMap getConnectionMap(List<Destination> destinationList) {
626         Map<DestinationKey, Destination> destinationMap = new HashMap<>();
627         for (Destination destination : destinationList) {
628             destinationMap.put(destination.key(), destination);
629         }
630         return new ConnectionMapBuilder().setConnectionMapNumber(Uint32.valueOf(1))
631                 .setSource(new SourceBuilder().setCircuitPackName("c1").setPortName("p1").build())
632                 .setDestination(destinationMap).build();
633     }
634
635     private Info getInfo() {
636         return new InfoBuilder().setNodeNumber(Uint32.valueOf(1)).setClli("clli").setNodeType(NodeTypes.Xpdr)
637                 .setModel("model").setVendor("vendor").setIpAddress(new IpAddress(new Ipv4Address("10.1.1.1")))
638                 .setMaxDegrees(Uint16.valueOf(2)).setMaxSrgs(Uint16.valueOf(2)).setNodeId("node").build();
639     }
640
641     private Ports getPorts(String p2, Port.PortQual roadmExternal, String c3, String p3, Direction rx) {
642         return new PortsBuilder().setPortName(p2).setPortQual(roadmExternal)
643                 .setPartnerPort(new PartnerPortBuilder().setCircuitPackName(c3).setPortName(p3).build())
644                 .setPortDirection(rx).build();
645     }
646
647     private ConnectionPorts getConnectionPorts(String c1, String p1) {
648         return new ConnectionPortsBuilder().setIndex(Uint32.valueOf(ran.nextInt(Integer.MAX_VALUE)))
649                 .setCircuitPackName(c1).setPortName(p1).build();
650     }
651
652     private CircuitPacks getCircuitPacks(List<Ports> portsList, String c1, String pc1) {
653         Map<PortsKey, Ports> portsMap = new HashMap<>();
654         for (Ports ports : portsList) {
655             portsMap.put(ports.key(), ports);
656         }
657         return new CircuitPacksBuilder().setCircuitPackName(c1)
658                 .setParentCircuitPack(new ParentCircuitPackBuilder().setCircuitPackName(pc1).build()).setPorts(portsMap)
659                 .build();
660     }
661
662     private Ports getPortsWithInterfaces(List<Interfaces> interfacesList, String p1) {
663         return new PortsBuilder().setPortName(p1).setPortQual(Port.PortQual.RoadmExternal)
664                 .setPortDirection(Direction.Bidirectional).setInterfaces(interfacesList).build();
665     }
666
667     private Info getInfo2() {
668         return new InfoBuilder().setNodeNumber(Uint32.valueOf(1)).setClli("clli").setNodeType(NodeTypes.Rdm)
669                 .setModel("model").setVendor("vendor").setIpAddress(new IpAddress(new Ipv4Address("10.1.1.1")))
670                 .setMaxDegrees(Uint16.valueOf(3)).setMaxSrgs(Uint16.valueOf(3)).build();
671     }
672
673     private Interfaces getInterfaces(String i1) {
674         return new InterfacesBuilder().setInterfaceName(i1).build();
675     }
676
677 }