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