5420377c313873871290cdc5f070e66ccfd01991
[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.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;
55
56 @Ignore
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;
66     private Node1 node1;
67     private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 node2;
68
69     public NetworkModelWaveLengthServiceFreeTest(PathDescription pathDescription, TerminationPoint1 terminationPoint1,
70         Node1 node1,
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) {
73
74         this.pathDescription = pathDescription;
75         this.terminationPoint1 = terminationPoint1;
76         this.terminationPoint2 = terminationPoint2;
77         this.node1 = node1;
78         this.node2 = node2;
79
80     }
81
82     @Parameterized.Parameters
83     public static Collection createParameters() {
84         List<Object[]> parameters = new ArrayList<>();
85
86         PathDescription pathDescription =
87             ServiceDeleteDataUtils.createTransactionPathDescription(StringConstants.TTP_TOKEN);
88
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()));
93
94         TerminationPoint1Builder terminationPoint1Builder = new TerminationPoint1Builder()
95             .setCtpAttributes((new CtpAttributesBuilder())
96                 .setUsedWavelengths(
97                     Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
98                 .build())
99             .setCpAttributes((new CpAttributesBuilder())
100                 .setUsedWavelengths(
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)
105                                 .build()))
106                 .build())
107             .setTxTtpAttributes((new TxTtpAttributesBuilder())
108                 .setUsedWavelengths(
109                     Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
110                 .build())
111             .setRxTtpAttributes((new RxTtpAttributesBuilder())
112                 .setUsedWavelengths(
113                     Collections.singletonList((new UsedWavelengthsBuilder()).setIndex(WAVE_LENGTH).build()))
114                 .build())
115             .setPpAttributes((new PpAttributesBuilder())
116                 .setUsedWavelength(
117                     Collections.singletonList((new UsedWavelengthBuilder()).setIndex(WAVE_LENGTH).build()))
118                 .build())
119             .setXpdrClientAttributes((new XpdrClientAttributesBuilder())
120                 .setWavelength((new WavelengthBuilder())
121                     .setFrequency(frequencyTHz)
122                     .setWidth(frequencyGHz)
123                     .build())
124                 .build())
125             .setXpdrNetworkAttributes((new XpdrNetworkAttributesBuilder())
126                 .setWavelength((new WavelengthBuilder())
127                     .setFrequency(frequencyTHz)
128                     .setWidth(frequencyGHz)
129                     .build())
130                 .build())
131             .setXpdrPortAttributes((new XpdrPortAttributesBuilder())
132                 .setWavelength((new WavelengthBuilder())
133                     .setFrequency(frequencyTHz)
134                     .setWidth(frequencyGHz)
135                     .build())
136                 .build());
137
138         Node1Builder node1Builder = new Node1Builder()
139             .setDegreeAttributes((new DegreeAttributesBuilder()).setAvailableWavelengths(new ArrayList<>()).build())
140             .setSrgAttributes((new SrgAttributesBuilder()).setAvailableWavelengths(new ArrayList<>()).build());
141
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();
145
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();
148
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() });
155         }
156
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() });
163         }
164
165         node2Builder.setNodeType(OpenroadmNodeType.SRG);
166         node1Builder
167             .setDegreeAttributes((new DegreeAttributesBuilder())
168                 .setAvailableWavelengths(new ArrayList<>())
169                 .build())
170             .setSrgAttributes(null);
171         terminationPoint2Builder.setTpType(OpenroadmTpType.DEGREETXTTP);
172         parameters.add(new Object[] { pathDescription, terminationPoint1Builder.build(), node1Builder.build(),
173             terminationPoint2Builder.build(), node2Builder.build() });
174         return parameters;
175     }
176
177     @Before
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());
182     }
183
184     @Test
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()) {
210             case DEGREETXRXCTP:
211             case DEGREETXCTP:
212             case DEGREERXCTP:
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());
221                 break;
222             case SRGTXCP:
223             case SRGRXCP:
224             case SRGTXRXCP:
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());
233                 break;
234             case DEGREETXRXTTP:
235             case DEGREETXTTP:
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());
244                 break;
245             case DEGREERXTTP:
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());
254                 break;
255             case SRGRXPP:
256             case SRGTXPP:
257             case SRGTXRXPP:
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());
266                 break;
267             case XPONDERCLIENT:
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());
276                 break;
277             case XPONDERNETWORK:
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());
286                 break;
287             case XPONDERPORT:
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());
296                 break;
297             default:
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());
306                 break;
307         }
308         switch (updatedNode2.getNodeType()) {
309         //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1) updatedNode1)
310         //        .getNodeType()) {
311             case DEGREE:
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());
316                 break;
317             case SRG:
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());
322                 break;
323             default:
324                 Assert.assertTrue(updatedNode1.getDegreeAttributes().getAvailableWavelengths().isEmpty());
325                 Assert.assertTrue(updatedNode1.getSrgAttributes().getAvailableWavelengths().isEmpty());
326                 break;
327         }
328     }
329 }