fix deprecated openroadm interfaces/objects
[transportpce.git] / renderer / src / test / java / org / opendaylight / transportpce / renderer / NetworkModelWaveLengthServiceFreeTest.java
1 /*
2  * Copyright © 2018 Orange Systems, 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 package org.opendaylight.transportpce.renderer;
9
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;
53
54
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;
64     private Node1 node1;
65     private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 node2;
66
67     public NetworkModelWaveLengthServiceFreeTest(PathDescription pathDescription, TerminationPoint1 terminationPoint1,
68         Node1 node1,
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) {
71
72         this.pathDescription = pathDescription;
73         this.terminationPoint1 = terminationPoint1;
74         this.terminationPoint2 = terminationPoint2;
75         this.node1 = node1;
76         this.node2 = node2;
77
78     }
79
80     @Parameterized.Parameters
81     public static Collection createParameters() {
82         List<Object[]> parameters = new ArrayList<>();
83
84         PathDescription pathDescription =
85             ServiceDeleteDataUtils.createTransactionPathDescription(StringConstants.TTP_TOKEN);
86
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()));
91
92         TerminationPoint1Builder terminationPoint1Builder = new TerminationPoint1Builder()
93             .setCtpAttributes((new CtpAttributesBuilder())
94                 .setUsedWavelengths(
95                     Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
96                 .build())
97             .setCpAttributes((new CpAttributesBuilder())
98                 .setUsedWavelengths(
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)
103                                 .build()))
104                 .build())
105             .setTxTtpAttributes((new TxTtpAttributesBuilder())
106                 .setUsedWavelengths(
107                     Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
108                 .build())
109             .setRxTtpAttributes((new RxTtpAttributesBuilder())
110                 .setUsedWavelengths(
111                     Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
112                 .build())
113             .setPpAttributes((new PpAttributesBuilder())
114                 .setUsedWavelength(
115                     Collections.singletonList((new UsedWavelengthBuilder()).setIndex(WAVE_LENGTH).build()))
116                 .build())
117             .setXpdrClientAttributes((new XpdrClientAttributesBuilder())
118                 .setWavelength((new WavelengthBuilder())
119                     .setFrequency(frequencyTHz)
120                     .setWidth(frequencyGHz)
121                     .build())
122                 .build())
123             .setXpdrNetworkAttributes((new XpdrNetworkAttributesBuilder())
124                 .setWavelength((new WavelengthBuilder())
125                     .setFrequency(frequencyTHz)
126                     .setWidth(frequencyGHz)
127                     .build())
128                 .build())
129             .setXpdrPortAttributes((new XpdrPortAttributesBuilder())
130                 .setWavelength((new WavelengthBuilder())
131                     .setFrequency(frequencyTHz)
132                     .setWidth(frequencyGHz)
133                     .build())
134                 .build());
135
136         Node1Builder node1Builder = new Node1Builder()
137             .setDegreeAttributes((new DegreeAttributesBuilder()).setAvailableWavelengths(new ArrayList<>()).build())
138             .setSrgAttributes((new SrgAttributesBuilder()).setAvailableWavelengths(new ArrayList<>()).build());
139
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();
143
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();
146
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() });
153         }
154
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() });
161         }
162
163         node2Builder.setNodeType(OpenroadmNodeType.SRG);
164         node1Builder
165             .setDegreeAttributes((new DegreeAttributesBuilder())
166                 .setAvailableWavelengths(new ArrayList<>())
167                 .build())
168             .setSrgAttributes(null);
169         terminationPoint2Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
170         parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
171             terminationPoint2Builder.build(), node2Builder.build() });
172         return parameters;
173     }
174
175     @Before
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());
180     }
181
182     @Test
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()) {
208             case DEGREETXRXCTP:
209             case DEGREETXCTP:
210             case DEGREERXCTP:
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());
219                 break;
220             case SRGTXCP:
221             case SRGRXCP:
222             case SRGTXRXCP:
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());
231                 break;
232             case DEGREETXRXTTP:
233             case DEGREETXTTP:
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());
242                 break;
243             case DEGREERXTTP:
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());
252                 break;
253             case SRGRXPP:
254             case SRGTXPP:
255             case SRGTXRXPP:
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());
264                 break;
265             case XPONDERCLIENT:
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());
274                 break;
275             case XPONDERNETWORK:
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());
284                 break;
285             case XPONDERPORT:
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());
294                 break;
295             default:
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());
304                 break;
305         }
306         switch (updatedNode2.getNodeType()) {
307         //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1) updatedNode1)
308         //        .getNodeType()) {
309             case DEGREE:
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());
314                 break;
315             case SRG:
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());
320                 break;
321             default:
322                 Assert.assertTrue(updatedNode1.getDegreeAttributes().getAvailableWavelengths().isEmpty());
323                 Assert.assertTrue(updatedNode1.getSrgAttributes().getAvailableWavelengths().isEmpty());
324                 break;
325         }
326     }
327 }