2 * Copyright © 2018 Orange Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.transportpce.renderer;
10 import java.math.BigDecimal;
11 import java.util.ArrayList;
12 import java.util.Arrays;
13 import java.util.Collection;
14 import java.util.List;
16 import java.util.concurrent.ExecutionException;
17 import org.junit.Assert;
18 import org.junit.Before;
19 import org.junit.Ignore;
20 import org.junit.Test;
21 import org.junit.runner.RunWith;
22 import org.junit.runners.Parameterized;
23 import org.opendaylight.transportpce.common.StringConstants;
24 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
25 import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
26 import org.opendaylight.transportpce.common.fixedflex.FixedFlexImpl;
27 import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub;
28 import org.opendaylight.transportpce.renderer.stub.MountPointStub;
29 import org.opendaylight.transportpce.renderer.utils.ServiceDeleteDataUtils;
30 import org.opendaylight.transportpce.renderer.utils.WaveLengthServiceUtils;
31 import org.opendaylight.transportpce.test.AbstractTest;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev181130.FrequencyGHz;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev181130.FrequencyTHz;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node.attributes.AvailableWavelengths;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.used.wavelengths.UsedWavelengths;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.used.wavelengths.UsedWavelengthsBuilder;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.used.wavelengths.UsedWavelengthsKey;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributesBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributesBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CpAttributesBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CtpAttributesBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.PpAttributesBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.RxTtpAttributesBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.TxTtpAttributesBuilder;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrClientAttributesBuilder;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrNetworkAttributesBuilder;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrPortAttributesBuilder;
52 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.pp.attributes.UsedWavelength;
53 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.pp.attributes.UsedWavelengthBuilder;
54 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
55 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
56 import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev181130.xpdr.port.connection.attributes.WavelengthBuilder;
57 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.PathDescription;
58 import org.opendaylight.yangtools.yang.common.Uint32;
61 @RunWith(Parameterized.class)
62 public class NetworkModelWaveLengthServiceFreeTest extends AbstractTest {
63 private static final Uint32 UI32_WAVE_LENGTH = Uint32.valueOf(20);
64 private static final long WAVE_LENGTH = 20L;
65 private NetworkModelWavelengthService networkModelWavelengthService;
66 private DeviceTransactionManager deviceTransactionManager;
67 private TerminationPoint1 terminationPoint1;
68 private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
69 .TerminationPoint1 terminationPoint2;
70 private PathDescription pathDescription;
72 private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 node2;
74 public NetworkModelWaveLengthServiceFreeTest(PathDescription pathDescription, TerminationPoint1 terminationPoint1,
76 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1 terminationPoint2,
77 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 node2) {
79 this.pathDescription = pathDescription;
80 this.terminationPoint1 = terminationPoint1;
81 this.terminationPoint2 = terminationPoint2;
87 @Parameterized.Parameters
88 public static Collection createParameters() {
89 List<Object[]> parameters = new ArrayList<>();
91 PathDescription pathDescription =
92 ServiceDeleteDataUtils.createTransactionPathDescription(StringConstants.TTP_TOKEN);
94 FixedFlexImpl fixedFlex = new FixedFlexImpl();
95 fixedFlex = fixedFlex.getFixedFlexWaveMapping(WAVE_LENGTH);
96 FrequencyGHz frequencyGHz = new FrequencyGHz(new BigDecimal(fixedFlex.getWavelength()));
97 FrequencyTHz frequencyTHz = new FrequencyTHz(new BigDecimal(fixedFlex.getCenterFrequency()));
99 UsedWavelength usedWaveLength = (new UsedWavelengthBuilder()).setIndex(UI32_WAVE_LENGTH).build();
100 UsedWavelengths usedWaveLengthDegree = (new UsedWavelengthsBuilder()).setIndex(UI32_WAVE_LENGTH).build();
101 Map<UsedWavelengthsKey, UsedWavelengths> usedWaveLengthDegreeMap =
102 Map.of(usedWaveLengthDegree.key(),usedWaveLengthDegree);
103 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130
104 .networks.network.node.termination.point.cp.attributes.UsedWavelengths usedWaveLentgthCp =
105 (new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks
106 .network.node.termination.point.cp.attributes.UsedWavelengthsBuilder())
107 .setIndex(UI32_WAVE_LENGTH)
109 TerminationPoint1Builder terminationPoint1Builder = new TerminationPoint1Builder()
110 .setCtpAttributes((new CtpAttributesBuilder())
112 usedWaveLengthDegreeMap)
114 .setCpAttributes((new CpAttributesBuilder())
116 Map.of(usedWaveLentgthCp.key(),
119 .setTxTtpAttributes((new TxTtpAttributesBuilder())
121 usedWaveLengthDegreeMap)
123 .setRxTtpAttributes((new RxTtpAttributesBuilder())
125 usedWaveLengthDegreeMap)
127 .setPpAttributes((new PpAttributesBuilder())
128 .setUsedWavelength(Map.of(usedWaveLength.key(),usedWaveLength))
130 .setXpdrClientAttributes((new XpdrClientAttributesBuilder())
131 .setWavelength((new WavelengthBuilder())
132 .setFrequency(frequencyTHz)
133 .setWidth(frequencyGHz)
136 .setXpdrNetworkAttributes((new XpdrNetworkAttributesBuilder())
137 .setWavelength((new WavelengthBuilder())
138 .setFrequency(frequencyTHz)
139 .setWidth(frequencyGHz)
142 .setXpdrPortAttributes((new XpdrPortAttributesBuilder())
143 .setWavelength((new WavelengthBuilder())
144 .setFrequency(frequencyTHz)
145 .setWidth(frequencyGHz)
149 Node1Builder node1Builder = new Node1Builder()
150 .setDegreeAttributes((new DegreeAttributesBuilder()).setAvailableWavelengths(Map.of()).build())
151 .setSrgAttributes((new SrgAttributesBuilder()).setAvailableWavelengths(Map.of()).build());
153 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder
154 terminationPoint2Builder =
155 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder();
157 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder node2Builder =
158 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder();
160 for (OpenroadmNodeType nodeType : Arrays.asList(OpenroadmNodeType.XPONDER, OpenroadmNodeType.DEGREE,
161 OpenroadmNodeType.SRG)) {
162 node2Builder.setNodeType(nodeType);
163 terminationPoint2Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
164 parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
165 terminationPoint2Builder.build(), node2Builder.build() });
168 for (OpenroadmTpType tpType : OpenroadmTpType.values()) {
169 node2Builder.setNodeType(OpenroadmNodeType.DEGREE);
170 node1Builder.setDegreeAttributes(null);
171 terminationPoint2Builder.setTpType(tpType);
172 parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
173 terminationPoint2Builder.build(), node2Builder.build() });
176 node2Builder.setNodeType(OpenroadmNodeType.SRG);
178 .setDegreeAttributes((new DegreeAttributesBuilder())
179 .setAvailableWavelengths(Map.of())
181 .setSrgAttributes(null);
182 terminationPoint2Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
183 parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
184 terminationPoint2Builder.build(), node2Builder.build() });
189 public void setMountPoint() {
190 MountPointServiceStub mountPointService = new MountPointServiceStub(new MountPointStub(this.getDataBroker()));
191 this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
192 networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(this.getDataBroker());
196 public void freeWavelengthsTest() throws ExecutionException, InterruptedException {
197 WaveLengthServiceUtils.putTerminationPoint1ToDatastore("node1" + StringConstants.TTP_TOKEN,
198 StringConstants.TTP_TOKEN, this.terminationPoint1, this.deviceTransactionManager);
199 WaveLengthServiceUtils.putTerminationPoint2ToDatastore("node1" + StringConstants.TTP_TOKEN,
200 StringConstants.TTP_TOKEN, this.terminationPoint2, this.deviceTransactionManager);
201 WaveLengthServiceUtils.putNode1ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node1,
202 this.deviceTransactionManager);
203 WaveLengthServiceUtils.putNode2ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node2,
204 this.deviceTransactionManager);
205 this.networkModelWavelengthService.freeWavelengths(this.pathDescription);
206 Node1 updatedNode1 = WaveLengthServiceUtils.getNode1FromDatastore("node1" + StringConstants.TTP_TOKEN,
207 this.deviceTransactionManager);
208 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 updatedNode2 =
209 WaveLengthServiceUtils.getNode2FromDatastore("node1" + StringConstants.TTP_TOKEN,
210 this.deviceTransactionManager);
211 TerminationPoint1 updatedTerminationPoint1 =
212 WaveLengthServiceUtils.getTerminationPoint1FromDatastore("node1" + StringConstants.TTP_TOKEN,
213 StringConstants.TTP_TOKEN, this.deviceTransactionManager);
214 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
215 .TerminationPoint1 updatedTerminationPoint2 = WaveLengthServiceUtils
216 .getTerminationPoint2FromDatastore("node1" + StringConstants.TTP_TOKEN, StringConstants.TTP_TOKEN,
217 this.deviceTransactionManager);
218 switch (updatedTerminationPoint2.getTpType()) {
219 //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1)
220 // updatedTerminationPoint1).getTpType()) {
224 Assert.assertNull(updatedTerminationPoint1.getCtpAttributes());
225 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
226 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
227 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
228 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
229 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
230 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
231 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
236 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
237 Assert.assertNull(updatedTerminationPoint1.getCpAttributes());
238 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
239 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
240 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
241 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
242 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
243 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
247 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
248 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
249 Assert.assertNull(updatedTerminationPoint1.getTxTtpAttributes());
250 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
251 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
252 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
253 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
254 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
257 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
258 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
259 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
260 Assert.assertNull(updatedTerminationPoint1.getRxTtpAttributes());
261 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
262 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
263 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
264 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
269 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
270 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
271 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
272 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
273 Assert.assertNull(updatedTerminationPoint1.getPpAttributes());
274 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
275 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
276 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
279 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
280 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
281 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
282 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
283 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
284 Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes());
285 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
286 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
289 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
290 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
291 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
292 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
293 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
294 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
295 Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes());
296 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
299 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
300 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
301 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
302 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
303 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
304 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
305 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
306 Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes());
309 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
310 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
311 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
312 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
313 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
314 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
315 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
316 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
319 List<AvailableWavelengths> availableWavelengths = new ArrayList<>(updatedNode1
320 .getDegreeAttributes().nonnullAvailableWavelengths().values());
321 List<org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes.AvailableWavelengths>
322 availableWavelengths4srg =
323 new ArrayList<>(updatedNode1.getSrgAttributes().getAvailableWavelengths().values());
324 switch (updatedNode2.getNodeType()) {
325 //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1) updatedNode1)
328 Assert.assertEquals(1, availableWavelengths.size());
329 Assert.assertEquals(UI32_WAVE_LENGTH,
330 availableWavelengths.get(0).getIndex());
331 Assert.assertTrue(availableWavelengths4srg.isEmpty());
334 Assert.assertEquals(1, availableWavelengths4srg.size());
335 Assert.assertEquals(UI32_WAVE_LENGTH,
336 availableWavelengths4srg.get(0).getIndex());
337 Assert.assertTrue(availableWavelengths.isEmpty());
340 Assert.assertTrue(availableWavelengths.isEmpty());
341 Assert.assertTrue(availableWavelengths4srg.isEmpty());