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.Test;
20 import org.junit.runner.RunWith;
21 import org.junit.runners.Parameterized;
22 import org.opendaylight.transportpce.common.StringConstants;
23 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
24 import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
25 import org.opendaylight.transportpce.common.fixedflex.FixedFlexImpl;
26 import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub;
27 import org.opendaylight.transportpce.renderer.stub.MountPointStub;
28 import org.opendaylight.transportpce.renderer.utils.ServiceDeleteDataUtils;
29 import org.opendaylight.transportpce.renderer.utils.WaveLengthServiceUtils;
30 import org.opendaylight.transportpce.test.AbstractTest;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev181130.FrequencyGHz;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev181130.FrequencyTHz;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.used.wavelengths.UsedWavelengthsBuilder;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1Builder;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1Builder;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.DegreeAttributesBuilder;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.SrgAttributesBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CpAttributesBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.CtpAttributesBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.PpAttributesBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.RxTtpAttributesBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.TxTtpAttributesBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrClientAttributesBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrNetworkAttributesBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.XpdrPortAttributesBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.pp.attributes.UsedWavelengthBuilder;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev181130.xpdr.port.connection.attributes.WavelengthBuilder;
52 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.PathDescription;
55 @RunWith(Parameterized.class)
56 public class NetworkModelWaveLengthServiceFreeTest extends AbstractTest {
57 private static final Long WAVE_LENGTH = 20L;
58 private NetworkModelWavelengthService networkModelWavelengthService;
59 private DeviceTransactionManager deviceTransactionManager;
60 private TerminationPoint1 terminationPoint1;
61 private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
62 .TerminationPoint1 terminationPoint2;
63 private PathDescription pathDescription;
65 private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 node2;
67 public NetworkModelWaveLengthServiceFreeTest(PathDescription pathDescription, TerminationPoint1 terminationPoint1,
69 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1 terminationPoint2,
70 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 node2) {
72 this.pathDescription = pathDescription;
73 this.terminationPoint1 = terminationPoint1;
74 this.terminationPoint2 = terminationPoint2;
80 @Parameterized.Parameters
81 public static Collection createParameters() {
82 List<Object[]> parameters = new ArrayList<>();
84 PathDescription pathDescription =
85 ServiceDeleteDataUtils.createTransactionPathDescription(StringConstants.TTP_TOKEN);
87 FixedFlexImpl fixedFlex = new FixedFlexImpl();
88 fixedFlex = fixedFlex.getFixedFlexWaveMapping(WAVE_LENGTH);
89 FrequencyGHz frequencyGHz = new FrequencyGHz(new BigDecimal(fixedFlex.getWavelength()));
90 FrequencyTHz frequencyTHz = new FrequencyTHz(new BigDecimal(fixedFlex.getCenterFrequency()));
92 TerminationPoint1Builder terminationPoint1Builder = new TerminationPoint1Builder()
93 .setCtpAttributes((new CtpAttributesBuilder())
95 Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
97 .setCpAttributes((new CpAttributesBuilder())
99 Collections.singletonList(
100 (new org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks
101 .network.node.termination.point.cp.attributes.UsedWavelengthsBuilder())
102 .setIndex(WAVE_LENGTH)
105 .setTxTtpAttributes((new TxTtpAttributesBuilder())
107 Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
109 .setRxTtpAttributes((new RxTtpAttributesBuilder())
111 Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
113 .setPpAttributes((new PpAttributesBuilder())
115 Collections.singletonList((new UsedWavelengthBuilder()).setIndex(WAVE_LENGTH).build()))
117 .setXpdrClientAttributes((new XpdrClientAttributesBuilder())
118 .setWavelength((new WavelengthBuilder())
119 .setFrequency(frequencyTHz)
120 .setWidth(frequencyGHz)
123 .setXpdrNetworkAttributes((new XpdrNetworkAttributesBuilder())
124 .setWavelength((new WavelengthBuilder())
125 .setFrequency(frequencyTHz)
126 .setWidth(frequencyGHz)
129 .setXpdrPortAttributes((new XpdrPortAttributesBuilder())
130 .setWavelength((new WavelengthBuilder())
131 .setFrequency(frequencyTHz)
132 .setWidth(frequencyGHz)
136 Node1Builder node1Builder = new Node1Builder()
137 .setDegreeAttributes((new DegreeAttributesBuilder()).setAvailableWavelengths(new ArrayList<>()).build())
138 .setSrgAttributes((new SrgAttributesBuilder()).setAvailableWavelengths(new ArrayList<>()).build());
140 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder
141 terminationPoint2Builder =
142 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1Builder();
144 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder node2Builder =
145 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder();
147 for (OpenroadmNodeType nodeType : Arrays.asList(OpenroadmNodeType.XPONDER, OpenroadmNodeType.DEGREE,
148 OpenroadmNodeType.SRG)) {
149 node2Builder.setNodeType(nodeType);
150 terminationPoint2Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
151 parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
152 terminationPoint2Builder.build(), node2Builder.build() });
155 for (OpenroadmTpType tpType : OpenroadmTpType.values()) {
156 node2Builder.setNodeType(OpenroadmNodeType.DEGREE);
157 node1Builder.setDegreeAttributes(null);
158 terminationPoint2Builder.setTpType(tpType);
159 parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
160 terminationPoint2Builder.build(), node2Builder.build() });
163 node2Builder.setNodeType(OpenroadmNodeType.SRG);
165 .setDegreeAttributes((new DegreeAttributesBuilder())
166 .setAvailableWavelengths(new ArrayList<>())
168 .setSrgAttributes(null);
169 terminationPoint2Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
170 parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
171 terminationPoint2Builder.build(), node2Builder.build() });
176 public void setMountPoint() {
177 MountPointServiceStub mountPointService = new MountPointServiceStub(new MountPointStub(this.getDataBroker()));
178 this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
179 networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(this.getDataBroker());
183 public void freeWavelengthsTest() throws ExecutionException, InterruptedException {
184 WaveLengthServiceUtils.putTerminationPoint1ToDatastore("node1" + StringConstants.TTP_TOKEN,
185 StringConstants.TTP_TOKEN, this.terminationPoint1, this.deviceTransactionManager);
186 WaveLengthServiceUtils.putTerminationPoint2ToDatastore("node1" + StringConstants.TTP_TOKEN,
187 StringConstants.TTP_TOKEN, this.terminationPoint2, this.deviceTransactionManager);
188 WaveLengthServiceUtils.putNode1ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node1,
189 this.deviceTransactionManager);
190 WaveLengthServiceUtils.putNode2ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node2,
191 this.deviceTransactionManager);
192 this.networkModelWavelengthService.freeWavelengths(this.pathDescription);
193 Node1 updatedNode1 = WaveLengthServiceUtils.getNode1FromDatastore("node1" + StringConstants.TTP_TOKEN,
194 this.deviceTransactionManager);
195 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 updatedNode2 =
196 WaveLengthServiceUtils.getNode2FromDatastore("node1" + StringConstants.TTP_TOKEN,
197 this.deviceTransactionManager);
198 TerminationPoint1 updatedTerminationPoint1 =
199 WaveLengthServiceUtils.getTerminationPoint1FromDatastore("node1" + StringConstants.TTP_TOKEN,
200 StringConstants.TTP_TOKEN, this.deviceTransactionManager);
201 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
202 .TerminationPoint1 updatedTerminationPoint2 = WaveLengthServiceUtils
203 .getTerminationPoint2FromDatastore("node1" + StringConstants.TTP_TOKEN, StringConstants.TTP_TOKEN,
204 this.deviceTransactionManager);
205 switch (updatedTerminationPoint2.getTpType()) {
206 //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1)
207 // updatedTerminationPoint1).getTpType()) {
211 Assert.assertNull(updatedTerminationPoint1.getCtpAttributes());
212 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
213 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
214 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
215 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
216 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
217 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
218 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
223 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
224 Assert.assertNull(updatedTerminationPoint1.getCpAttributes());
225 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
226 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
227 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
228 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
229 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
230 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
234 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
235 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
236 Assert.assertNull(updatedTerminationPoint1.getTxTtpAttributes());
237 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
238 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
239 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
240 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
241 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
244 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
245 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
246 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
247 Assert.assertNull(updatedTerminationPoint1.getRxTtpAttributes());
248 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
249 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
250 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
251 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
256 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
257 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
258 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
259 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
260 Assert.assertNull(updatedTerminationPoint1.getPpAttributes());
261 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
262 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
263 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
266 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
267 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
268 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
269 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
270 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
271 Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes());
272 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
273 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
276 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
277 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
278 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
279 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
280 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
281 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
282 Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes());
283 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
286 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
287 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
288 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
289 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
290 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
291 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
292 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
293 Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes());
296 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getUsedWavelengths().isEmpty());
297 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getUsedWavelengths().isEmpty());
298 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
299 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
300 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
301 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
302 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
303 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
306 switch (updatedNode2.getNodeType()) {
307 //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1) updatedNode1)
310 Assert.assertEquals(1, updatedNode1.getDegreeAttributes().getAvailableWavelengths().size());
311 Assert.assertEquals(WAVE_LENGTH,
312 updatedNode1.getDegreeAttributes().getAvailableWavelengths().get(0).getIndex());
313 Assert.assertTrue(updatedNode1.getSrgAttributes().getAvailableWavelengths().isEmpty());
316 Assert.assertEquals(1, updatedNode1.getSrgAttributes().getAvailableWavelengths().size());
317 Assert.assertEquals(WAVE_LENGTH,
318 updatedNode1.getSrgAttributes().getAvailableWavelengths().get(0).getIndex());
319 Assert.assertTrue(updatedNode1.getDegreeAttributes().getAvailableWavelengths().isEmpty());
322 Assert.assertTrue(updatedNode1.getDegreeAttributes().getAvailableWavelengths().isEmpty());
323 Assert.assertTrue(updatedNode1.getSrgAttributes().getAvailableWavelengths().isEmpty());