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.HashMap;
15 import java.util.List;
17 import java.util.concurrent.ExecutionException;
18 import org.junit.Assert;
19 import org.junit.Before;
20 import org.junit.Ignore;
21 import org.junit.Test;
22 import org.junit.runner.RunWith;
23 import org.junit.runners.Parameterized;
24 import org.opendaylight.transportpce.common.StringConstants;
25 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
26 import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
27 import org.opendaylight.transportpce.common.fixedflex.FixedGridConstant;
28 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
29 import org.opendaylight.transportpce.renderer.stub.MountPointServiceStub;
30 import org.opendaylight.transportpce.renderer.stub.MountPointStub;
31 import org.opendaylight.transportpce.renderer.utils.ServiceDeleteDataUtils;
32 import org.opendaylight.transportpce.renderer.utils.WaveLengthServiceUtils;
33 import org.opendaylight.transportpce.test.AbstractTest;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyTHz;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1Builder;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.TerminationPoint1;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.TerminationPoint1Builder;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.DegreeAttributesBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.SrgAttributesBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.CpAttributesBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.CtpAttributesBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.PpAttributesBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.RxTtpAttributesBuilder;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.TxTtpAttributesBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.XpdrClientAttributesBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.XpdrNetworkAttributesBuilder;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.XpdrPortAttributesBuilder;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmNodeType;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmTpType;
52 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.available.freq.map.AvailFreqMaps;
53 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.available.freq.map.AvailFreqMapsBuilder;
54 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.available.freq.map.AvailFreqMapsKey;
55 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.path.PathDescription;
56 import org.opendaylight.yangtools.yang.common.Uint16;
59 @RunWith(Parameterized.class)
60 public class NetworkModelWaveLengthServiceUseTest extends AbstractTest {
62 private NetworkModelWavelengthService networkModelWavelengthService;
63 private DeviceTransactionManager deviceTransactionManager;
65 private TerminationPoint1 terminationPoint1;
66 private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1 terminatPoint2;
67 private PathDescription pathDescription;
69 private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1 node2;
72 public void setMountPoint() {
73 MountPointServiceStub mountPointService = new MountPointServiceStub(new MountPointStub(this.getDataBroker()));
74 this.deviceTransactionManager = new DeviceTransactionManagerImpl(mountPointService, 3000);
75 networkModelWavelengthService = new NetworkModelWavelengthServiceImpl(this.getDataBroker());
78 public NetworkModelWaveLengthServiceUseTest(PathDescription pathDescription, TerminationPoint1 terminationPoint1,
80 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1 terminationPoint2,
81 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1 node2) {
82 this.pathDescription = pathDescription;
83 this.terminationPoint1 = terminationPoint1;
84 this.terminatPoint2 = terminationPoint2;
89 @Parameterized.Parameters
90 public static Collection createParameters() {
91 List<Object[]> parameters = new ArrayList<>();
93 PathDescription pathDescription =
94 ServiceDeleteDataUtils.createTransactionPathDescription(StringConstants.TTP_TOKEN);
96 TerminationPoint1Builder terminationPoint1Builder = new TerminationPoint1Builder()
97 .setCtpAttributes((new CtpAttributesBuilder()).setAvailFreqMaps(Map.of()).build())
98 .setCpAttributes((new CpAttributesBuilder()).setAvailFreqMaps(Map.of()).build())
99 .setTxTtpAttributes((new TxTtpAttributesBuilder()).setUsedWavelengths(Map.of()).build())
100 .setRxTtpAttributes((new RxTtpAttributesBuilder()).setUsedWavelengths(Map.of()).build())
101 .setPpAttributes((new PpAttributesBuilder()).setUsedWavelength(Map.of()).build())
102 .setXpdrClientAttributes((new XpdrClientAttributesBuilder()).build())
103 .setXpdrNetworkAttributes((new XpdrNetworkAttributesBuilder()).build())
104 .setXpdrPortAttributes((new XpdrPortAttributesBuilder()).build());
106 byte[] byteArray = new byte[FixedGridConstant.NB_CHANNELS * FixedGridConstant.EFFECTIVE_BITS];
107 Arrays.fill(byteArray, (byte) GridConstant.USED_SLOT_VALUE);
108 for (int i = 152;i <= 159;i++) {
109 byteArray[i] = (byte) GridConstant.AVAILABLE_SLOT_VALUE;
111 Map<AvailFreqMapsKey, AvailFreqMaps> waveMap = new HashMap<>();
112 AvailFreqMaps availFreqMaps = new AvailFreqMapsBuilder().setMapName(GridConstant.C_BAND)
113 .setFreqMapGranularity(new FrequencyGHz(BigDecimal.valueOf(FixedGridConstant.GRANULARITY)))
114 .setStartEdgeFreq(new FrequencyTHz(BigDecimal.valueOf(FixedGridConstant.START_EDGE_FREQUENCY)))
115 .setEffectiveBits(Uint16.valueOf(FixedGridConstant.EFFECTIVE_BITS))
116 .setFreqMap(byteArray)
118 waveMap.put(availFreqMaps.key(), availFreqMaps);
119 Node1Builder node1Builder = new Node1Builder()
120 .setDegreeAttributes((new DegreeAttributesBuilder())
121 .setAvailFreqMaps(waveMap)
123 .setSrgAttributes((new SrgAttributesBuilder())
124 .setAvailFreqMaps(waveMap)
127 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1Builder
128 terminationPoint2Builder =
129 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1Builder();
131 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1Builder node2Builder =
132 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1Builder();
134 for (OpenroadmNodeType nodeType : Arrays
135 .asList(OpenroadmNodeType.XPONDER, OpenroadmNodeType.DEGREE, OpenroadmNodeType.SRG)) {
136 node2Builder.setNodeType(nodeType);
137 terminationPoint2Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
138 parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
139 terminationPoint2Builder.build(), node2Builder.build() });
142 for (OpenroadmTpType tpType : OpenroadmTpType.values()) {
143 node2Builder.setNodeType(OpenroadmNodeType.DEGREE);
144 terminationPoint2Builder.setTpType(tpType);
145 parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
146 terminationPoint2Builder.build(), node2Builder.build() });
153 public void freeWavelengthsTest() throws ExecutionException, InterruptedException {
154 WaveLengthServiceUtils.putTerminationPoint1ToDatastore("node1" + StringConstants.TTP_TOKEN,
155 StringConstants.TTP_TOKEN, this.terminationPoint1, this.deviceTransactionManager);
156 WaveLengthServiceUtils.putTerminationPoint2ToDatastore("node1" + StringConstants.TTP_TOKEN,
157 StringConstants.TTP_TOKEN, this.terminatPoint2, this.deviceTransactionManager);
158 WaveLengthServiceUtils.putNode1ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node1,
159 this.deviceTransactionManager);
160 WaveLengthServiceUtils.putNode2ToDatastore("node1" + StringConstants.TTP_TOKEN, this.node2,
161 this.deviceTransactionManager);
162 this.networkModelWavelengthService.useWavelengths(this.pathDescription);
163 Node1 updatedNode1 = WaveLengthServiceUtils.getNode1FromDatastore("node1" + StringConstants.TTP_TOKEN,
164 this.deviceTransactionManager);
165 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1 updatedNode2 =
166 WaveLengthServiceUtils.getNode2FromDatastore("node1" + StringConstants.TTP_TOKEN,
167 this.deviceTransactionManager);
168 TerminationPoint1 updatedTerminationPoint1 = WaveLengthServiceUtils
169 .getTerminationPoint1FromDatastore("node1" + StringConstants.TTP_TOKEN, StringConstants.TTP_TOKEN,
170 this.deviceTransactionManager);
171 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529
172 .TerminationPoint1 updatedTerminationPoint2 = WaveLengthServiceUtils
173 .getTerminationPoint2FromDatastore("node1" + StringConstants.TTP_TOKEN, StringConstants.TTP_TOKEN,
174 this.deviceTransactionManager);
176 switch (updatedTerminationPoint2.getTpType()) {
177 //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1)
178 // updatedTerminationPoint1).getTpType()) {
182 Assert.assertFalse(updatedTerminationPoint1.getCtpAttributes().getAvailFreqMaps().isEmpty());
183 Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getAvailFreqMaps().isEmpty());
184 Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
185 Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
186 Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
187 Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
188 Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
189 Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
194 Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getAvailFreqMaps().isEmpty());
195 Assert.assertFalse(updatedTerminationPoint1.getCpAttributes().getAvailFreqMaps().isEmpty());
196 Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
197 Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
198 Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
199 Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
200 Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
201 Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
205 Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getAvailFreqMaps().isEmpty());
206 Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getAvailFreqMaps().isEmpty());
207 Assert.assertFalse(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
208 Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
209 Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
210 Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
211 Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
212 Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
215 Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getAvailFreqMaps().isEmpty());
216 Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getAvailFreqMaps().isEmpty());
217 Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
218 Assert.assertFalse(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
219 Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
220 Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
221 Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
222 Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
227 Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getAvailFreqMaps().isEmpty());
228 Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getAvailFreqMaps().isEmpty());
229 Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
230 Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
231 Assert.assertFalse(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
232 Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
233 Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
234 Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
237 Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getAvailFreqMaps().isEmpty());
238 Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getAvailFreqMaps().isEmpty());
239 Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
240 Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
241 Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
242 Assert.assertNotNull(updatedTerminationPoint1.getXpdrClientAttributes());
243 Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
244 Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
247 Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getAvailFreqMaps().isEmpty());
248 Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getAvailFreqMaps().isEmpty());
249 Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
250 Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
251 Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
252 Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
253 Assert.assertNotNull(updatedTerminationPoint1.getXpdrNetworkAttributes());
254 Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
257 Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getAvailFreqMaps().isEmpty());
258 Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getAvailFreqMaps().isEmpty());
259 Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
260 Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
261 Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
262 Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
263 Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
264 Assert.assertNotNull(updatedTerminationPoint1.getXpdrPortAttributes());
267 Assert.assertTrue(updatedTerminationPoint1.getCtpAttributes().getAvailFreqMaps().isEmpty());
268 Assert.assertTrue(updatedTerminationPoint1.getCpAttributes().getAvailFreqMaps().isEmpty());
269 Assert.assertTrue(updatedTerminationPoint1.getTxTtpAttributes().getUsedWavelengths().isEmpty());
270 Assert.assertTrue(updatedTerminationPoint1.getRxTtpAttributes().getUsedWavelengths().isEmpty());
271 Assert.assertTrue(updatedTerminationPoint1.getPpAttributes().getUsedWavelength().isEmpty());
272 Assert.assertNull(updatedTerminationPoint1.getXpdrClientAttributes().getWavelength());
273 Assert.assertNull(updatedTerminationPoint1.getXpdrNetworkAttributes().getWavelength());
274 Assert.assertNull(updatedTerminationPoint1.getXpdrPortAttributes().getWavelength());
277 switch (updatedNode2.getNodeType()) {
279 Assert.assertNull(updatedNode1.getDegreeAttributes());
280 Assert.assertFalse(updatedNode1.getSrgAttributes().getAvailFreqMaps().isEmpty());
283 Assert.assertNull(updatedNode1.getSrgAttributes());
284 Assert.assertFalse(updatedNode1.getDegreeAttributes().getAvailFreqMaps().isEmpty());
287 Assert.assertFalse(updatedNode1.getDegreeAttributes().getAvailFreqMaps().isEmpty());
288 Assert.assertFalse(updatedNode1.getSrgAttributes().getAvailFreqMaps().isEmpty());