dad4b2cd7a2f91de6fec9552d2f046d6af329e22
[transportpce.git] / renderer / src / test / java / org / opendaylight / transportpce / renderer / NetworkModelWaveLengthServiceUseTest.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.HashMap;
15 import java.util.List;
16 import java.util.Map;
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;
57
58 @Ignore
59 @RunWith(Parameterized.class)
60 public class NetworkModelWaveLengthServiceUseTest extends AbstractTest {
61
62     private NetworkModelWavelengthService networkModelWavelengthService;
63     private DeviceTransactionManager deviceTransactionManager;
64
65     private TerminationPoint1 terminationPoint1;
66     private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1 terminatPoint2;
67     private PathDescription pathDescription;
68     private Node1 node1;
69     private org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.Node1 node2;
70
71     @Before
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());
76     }
77
78     public NetworkModelWaveLengthServiceUseTest(PathDescription pathDescription, TerminationPoint1 terminationPoint1,
79         Node1 node1,
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;
85         this.node1 = node1;
86         this.node2 = node2;
87     }
88
89     @Parameterized.Parameters
90     public static Collection createParameters() {
91         List<Object[]> parameters = new ArrayList<>();
92
93         PathDescription pathDescription =
94             ServiceDeleteDataUtils.createTransactionPathDescription(StringConstants.TTP_TOKEN);
95
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());
105
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;
110         }
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)
117                 .build();
118         waveMap.put(availFreqMaps.key(), availFreqMaps);
119         Node1Builder node1Builder = new Node1Builder()
120             .setDegreeAttributes((new DegreeAttributesBuilder())
121                 .setAvailFreqMaps(waveMap)
122                 .build())
123             .setSrgAttributes((new SrgAttributesBuilder())
124                     .setAvailFreqMaps(waveMap)
125                 .build());
126
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();
130
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();
133
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() });
140         }
141
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() });
147         }
148
149         return parameters;
150     }
151
152     @Test
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);
175
176         switch (updatedTerminationPoint2.getTpType()) {
177         //switch (((org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1)
178         //        updatedTerminationPoint1).getTpType()) {
179             case DEGREETXRXCTP:
180             case DEGREETXCTP:
181             case DEGREERXCTP:
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());
190                 break;
191             case SRGTXCP:
192             case SRGRXCP:
193             case SRGTXRXCP:
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());
202                 break;
203             case DEGREETXRXTTP:
204             case DEGREETXTTP:
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());
213                 break;
214             case DEGREERXTTP:
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());
223                 break;
224             case SRGRXPP:
225             case SRGTXPP:
226             case SRGTXRXPP:
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());
235                 break;
236             case XPONDERCLIENT:
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());
245                 break;
246             case XPONDERNETWORK:
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());
255                 break;
256             case XPONDERPORT:
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());
265                 break;
266             default:
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());
275                 break;
276         }
277         switch (updatedNode2.getNodeType()) {
278             case DEGREE:
279                 Assert.assertNull(updatedNode1.getDegreeAttributes());
280                 Assert.assertFalse(updatedNode1.getSrgAttributes().getAvailFreqMaps().isEmpty());
281                 break;
282             case SRG:
283                 Assert.assertNull(updatedNode1.getSrgAttributes());
284                 Assert.assertFalse(updatedNode1.getDegreeAttributes().getAvailFreqMaps().isEmpty());
285                 break;
286             default:
287                 Assert.assertFalse(updatedNode1.getDegreeAttributes().getAvailFreqMaps().isEmpty());
288                 Assert.assertFalse(updatedNode1.getSrgAttributes().getAvailFreqMaps().isEmpty());
289                 break;
290         }
291
292     }
293 }