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