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.Collections;
15 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.used.wavelengths.UsedWavelengthsBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributesBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributesBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CpAttributesBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CtpAttributesBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.PpAttributesBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.RxTtpAttributesBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.TxTtpAttributesBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrClientAttributesBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrNetworkAttributesBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrPortAttributesBuilder;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.pp.attributes.UsedWavelengthBuilder;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
52 import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev181130.xpdr.port.connection.attributes.WavelengthBuilder;
53 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.PathDescription;
54 import org.opendaylight.yangtools.yang.common.Uint32;
57 @RunWith(Parameterized.class)
58 public class NetworkModelWaveLengthServiceFreeTest extends AbstractTest {
59 private static final Long WAVE_LENGTH = 20L;
60 private NetworkModelWavelengthService networkModelWavelengthService;
61 private DeviceTransactionManager deviceTransactionManager;
62 private TerminationPoint1 terminationPoint1;
63 private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
64 .TerminationPoint1 terminationPoint2;
65 private PathDescription pathDescription;
67 private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 node2;
69 public NetworkModelWaveLengthServiceFreeTest(PathDescription pathDescription, TerminationPoint1 terminationPoint1,
71 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1 terminationPoint2,
72 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 node2) {
74 this.pathDescription = pathDescription;
75 this.terminationPoint1 = terminationPoint1;
76 this.terminationPoint2 = terminationPoint2;
82 @Parameterized.Parameters
83 public static Collection createParameters() {
84 List<Object[]> parameters = new ArrayList<>();
86 PathDescription pathDescription =
87 ServiceDeleteDataUtils.createTransactionPathDescription(StringConstants.TTP_TOKEN);
89 FixedFlexImpl fixedFlex = new FixedFlexImpl();
90 fixedFlex = fixedFlex.getFixedFlexWaveMapping(WAVE_LENGTH);
91 FrequencyGHz frequencyGHz = new FrequencyGHz(new BigDecimal(fixedFlex.getWavelength()));
92 FrequencyTHz frequencyTHz = new FrequencyTHz(new BigDecimal(fixedFlex.getCenterFrequency()));
94 TerminationPoint1Builder terminationPoint1Builder = new TerminationPoint1Builder()
95 .setCtpAttributes((new CtpAttributesBuilder())
97 Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
99 .setCpAttributes((new CpAttributesBuilder())
101 Collections.singletonList(
102 (new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks
103 .network.node.termination.point.cp.attributes.UsedWavelengthsBuilder())
104 .setIndex(WAVE_LENGTH)
107 .setTxTtpAttributes((new TxTtpAttributesBuilder())
109 Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
111 .setRxTtpAttributes((new RxTtpAttributesBuilder())
113 Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
115 .setPpAttributes((new PpAttributesBuilder())
117 Collections.singletonList((new UsedWavelengthBuilder()).setIndex(WAVE_LENGTH).build()))
119 .setXpdrClientAttributes((new XpdrClientAttributesBuilder())
120 .setWavelength((new WavelengthBuilder())
121 .setFrequency(frequencyTHz)
122 .setWidth(frequencyGHz)
125 .setXpdrNetworkAttributes((new XpdrNetworkAttributesBuilder())
126 .setWavelength((new WavelengthBuilder())
127 .setFrequency(frequencyTHz)
128 .setWidth(frequencyGHz)
131 .setXpdrPortAttributes((new XpdrPortAttributesBuilder())
132 .setWavelength((new WavelengthBuilder())
133 .setFrequency(frequencyTHz)
134 .setWidth(frequencyGHz)
138 Node1Builder node1Builder = new Node1Builder()
139 .setDegreeAttributes((new DegreeAttributesBuilder()).setAvailableWavelengths(new ArrayList<>()).build())
140 .setSrgAttributes((new SrgAttributesBuilder()).setAvailableWavelengths(new ArrayList<>()).build());
142 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder
143 terminationPoint2Builder =
144 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder();
146 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder node2Builder =
147 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder();
149 for (OpenroadmNodeType nodeType : Arrays.asList(OpenroadmNodeType.XPONDER, OpenroadmNodeType.DEGREE,
150 OpenroadmNodeType.SRG)) {
151 node2Builder.setNodeType(nodeType);
152 terminationPoint2Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
153 parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
154 terminationPoint2Builder.build(), node2Builder.build() });
157 for (OpenroadmTpType tpType : OpenroadmTpType.values()) {
158 node2Builder.setNodeType(OpenroadmNodeType.DEGREE);
159 node1Builder.setDegreeAttributes(null);
160 terminationPoint2Builder.setTpType(tpType);
161 parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
162 terminationPoint2Builder.build(), node2Builder.build() });
165 node2Builder.setNodeType(OpenroadmNodeType.SRG);
167 .setDegreeAttributes((new DegreeAttributesBuilder())
168 .setAvailableWavelengths(new ArrayList<>())
170 .setSrgAttributes(null);
171 terminationPoint2Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
172 parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
173 terminationPoint2Builder.build(), node2Builder.build() });
178 public void setMountPoint() {
179 MountPointServiceStub mountPointService = new MountPointServiceStub(new MountPointStub(this.getDataBroker()));
180 this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
181 networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(this.getDataBroker());
185 public void freeWavelengthsTest() throws ExecutionException, InterruptedException {
186 WaveLengthServiceUtils.putTerminationPoint1ToDatastore("node1" + StringConstants.TTP_TOKEN,
187 StringConstants.TTP_TOKEN, this.terminationPoint1, this.deviceTransactionManager);
188 WaveLengthServiceUtils.putTerminationPoint2ToDatastore("node1" + StringConstants.TTP_TOKEN,
189 StringConstants.TTP_TOKEN, this.terminationPoint2, this.deviceTransactionManager);
190 WaveLengthServiceUtils.putNode1ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node1,
191 this.deviceTransactionManager);
192 WaveLengthServiceUtils.putNode2ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node2,
193 this.deviceTransactionManager);
194 this.networkModelWavelengthService.freeWavelengths(this.pathDescription);
195 Node1 updatedNode1 = WaveLengthServiceUtils.getNode1FromDatastore("node1" + StringConstants.TTP_TOKEN,
196 this.deviceTransactionManager);
197 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 updatedNode2 =
198 WaveLengthServiceUtils.getNode2FromDatastore("node1" + StringConstants.TTP_TOKEN,
199 this.deviceTransactionManager);
200 TerminationPoint1 updatedTerminationPoint1 =
201 WaveLengthServiceUtils.getTerminationPoint1FromDatastore("node1" + StringConstants.TTP_TOKEN,
202 StringConstants.TTP_TOKEN, this.deviceTransactionManager);
203 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
204 .TerminationPoint1 updatedTerminationPoint2 = WaveLengthServiceUtils
205 .getTerminationPoint2FromDatastore("node1" + StringConstants.TTP_TOKEN, StringConstants.TTP_TOKEN,
206 this.deviceTransactionManager);
207 switch (updatedTerminationPoint2.getTpType()) {
208 //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1)
209 // updatedTerminationPoint1).getTpType()) {
213 Assert.assertNull(updatedTerminationPoint1.getCtpAttributes());
214 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
215 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
216 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
217 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
218 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
219 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
220 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
225 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
226 Assert.assertNull(updatedTerminationPoint1.getCpAttributes());
227 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
228 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
229 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
230 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
231 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
232 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
236 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
237 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
238 Assert.assertNull(updatedTerminationPoint1.getTxTtpAttributes());
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());
246 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
247 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
248 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
249 Assert.assertNull(updatedTerminationPoint1.getRxTtpAttributes());
250 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
251 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
252 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
253 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
258 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
259 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
260 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
261 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
262 Assert.assertNull(updatedTerminationPoint1.getPpAttributes());
263 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
264 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
265 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
268 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
269 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
270 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
271 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
272 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
273 Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes());
274 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
275 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
278 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
279 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
280 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
281 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
282 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
283 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
284 Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes());
285 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
288 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
289 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
290 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
291 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
292 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
293 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
294 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
295 Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes());
298 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
299 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
300 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
301 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
302 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
303 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
304 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
305 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
308 switch (updatedNode2.getNodeType()) {
309 //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1) updatedNode1)
312 Assert.assertEquals(1, updatedNode1.getDegreeAttributes().getAvailableWavelengths().size());
313 Assert.assertEquals(Uint32.valueOf(WAVE_LENGTH),
314 updatedNode1.getDegreeAttributes().getAvailableWavelengths().get(0).getIndex());
315 Assert.assertTrue(updatedNode1.getSrgAttributes().getAvailableWavelengths().isEmpty());
318 Assert.assertEquals(1, updatedNode1.getSrgAttributes().getAvailableWavelengths().size());
319 Assert.assertEquals(Uint32.valueOf(WAVE_LENGTH),
320 updatedNode1.getSrgAttributes().getAvailableWavelengths().get(0).getIndex());
321 Assert.assertTrue(updatedNode1.getDegreeAttributes().getAvailableWavelengths().isEmpty());
324 Assert.assertTrue(updatedNode1.getDegreeAttributes().getAvailableWavelengths().isEmpty());
325 Assert.assertTrue(updatedNode1.getSrgAttributes().getAvailableWavelengths().isEmpty());