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.provisiondevice;
10 import java.util.ArrayList;
11 import java.util.List;
12 import java.util.concurrent.ExecutionException;
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.mockito.Mockito;
17 import org.opendaylight.mdsal.binding.api.MountPoint;
18 import org.opendaylight.mdsal.binding.api.MountPointService;
19 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
20 import org.opendaylight.transportpce.common.ResponseCodes;
21 import org.opendaylight.transportpce.common.StringConstants;
22 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
23 import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
24 import org.opendaylight.transportpce.common.mapping.MappingUtils;
25 import org.opendaylight.transportpce.common.mapping.MappingUtilsImpl;
26 import org.opendaylight.transportpce.common.mapping.PortMapping;
27 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
28 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
29 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl;
30 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl121;
31 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl221;
32 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl710;
33 import org.opendaylight.transportpce.renderer.stub.OlmServiceStub;
34 import org.opendaylight.transportpce.renderer.utils.NotificationPublishServiceMock;
35 import org.opendaylight.transportpce.renderer.utils.ServiceDataUtils;
36 import org.opendaylight.transportpce.test.AbstractTest;
37 import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
38 import org.opendaylight.transportpce.test.stub.MountPointStub;
39 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.ServicePathOutputBuilder;
40 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInput;
41 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInputBuilder;
42 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmOutput;
43 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmOutputBuilder;
44 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService;
45 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.get.pm.output.Measurements;
46 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.get.pm.output.MeasurementsBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
48 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestOutput;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
51 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210930.olm.get.pm.input.ResourceIdentifierBuilder;
52 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
54 public class RendererServiceOperationsImplTest extends AbstractTest {
56 private MountPointService mountPointService;
57 private DeviceTransactionManager deviceTransactionManager;
58 private final DeviceRendererService deviceRenderer = Mockito.mock(DeviceRendererService.class);
59 private final OtnDeviceRendererService otnDeviceRendererService = Mockito.mock(OtnDeviceRendererService.class);
60 private final PortMapping portMapping = Mockito.mock(PortMapping.class);
61 private RendererServiceOperationsImpl rendererServiceOperations;
62 private OpenRoadmInterfaces openRoadmInterfaces;
63 private TransportpceOlmService olmService;
64 private MappingUtils mappingUtils;
65 private OpenRoadmInterfacesImpl121 openRoadmInterfacesImpl121;
66 private OpenRoadmInterfacesImpl221 openRoadmInterfacesImpl221;
67 private OpenRoadmInterfacesImpl710 openRoadmInterfacesImpl710;
69 private void setMountPoint(MountPoint mountPoint) {
70 this.mountPointService = new MountPointServiceStub(mountPoint);
71 this.deviceTransactionManager = new DeviceTransactionManagerImpl(this.mountPointService, 3000);
72 this.mappingUtils = new MappingUtilsImpl(getDataBroker());
73 this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(deviceTransactionManager, mappingUtils,
74 openRoadmInterfacesImpl121, openRoadmInterfacesImpl221, openRoadmInterfacesImpl710);
75 this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
79 public void setUp() throws OpenRoadmInterfaceException {
80 setMountPoint(new MountPointStub(getDataBroker()));
81 this.olmService = new OlmServiceStub();
82 Mockito.doNothing().when(this.openRoadmInterfaces).postEquipmentState(Mockito.anyString(),
83 Mockito.anyString(), Mockito.anyBoolean());
84 NotificationPublishService notificationPublishService = new NotificationPublishServiceMock();
85 this.olmService = Mockito.spy(this.olmService);
86 this.rendererServiceOperations = new RendererServiceOperationsImpl(deviceRenderer,
87 otnDeviceRendererService, this.olmService, getDataBroker(), notificationPublishService, portMapping);
91 public void serviceImplementationTerminationPointAsResourceTtp() throws InterruptedException, ExecutionException {
93 ServiceImplementationRequestInput input = ServiceDataUtils
94 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.TTP_TOKEN);
95 ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
97 Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
99 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
100 Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
105 public void serviceImplementationTerminationPointAsResourceTtp2() throws InterruptedException, ExecutionException {
107 ServiceImplementationRequestInput input = ServiceDataUtils
108 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.TTP_TOKEN);
109 ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
111 Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
113 Mockito.doReturn(RpcResultBuilder.failed().buildFuture()).when(this.olmService)
114 .servicePowerSetup(Mockito.any());
115 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
116 Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
121 public void serviceImplementationTerminationPointAsResourcePp() throws InterruptedException, ExecutionException {
123 ServiceImplementationRequestInput input = ServiceDataUtils
124 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.PP_TOKEN);
125 ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
127 Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
129 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
130 Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
135 public void serviceImplementationTerminationPointAsResourceNetwork()
136 throws InterruptedException, ExecutionException {
138 ServiceImplementationRequestInput input = ServiceDataUtils
139 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
140 ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
142 Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
144 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
145 Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
150 public void serviceImplementationTerminationPointAsResourceClient()
151 throws InterruptedException, ExecutionException {
153 ServiceImplementationRequestInput input = ServiceDataUtils
154 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.CLIENT_TOKEN);
155 ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
157 Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
159 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
160 Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
164 public void serviceImplementationTerminationPointAsResourceNoMapping()
165 throws InterruptedException, ExecutionException {
167 String[] interfaceTokens = {
168 StringConstants.NETWORK_TOKEN,
169 StringConstants.CLIENT_TOKEN,
170 StringConstants.TTP_TOKEN,
171 StringConstants.PP_TOKEN
174 ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("failed")
176 Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
179 for (String tpToken : interfaceTokens) {
180 ServiceImplementationRequestInput input = ServiceDataUtils
181 .buildServiceImplementationRequestInputTerminationPointResource(tpToken);
182 ServiceImplementationRequestOutput result =
183 this.rendererServiceOperations.serviceImplementation(input).get();
184 Assert.assertEquals(ResponseCodes.RESPONSE_FAILED,
185 result.getConfigurationResponseCommon().getResponseCode());
190 public void serviceImplementationRollbackAllNecessary() throws InterruptedException, ExecutionException {
192 ServiceImplementationRequestInput input = ServiceDataUtils
193 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
194 // writePortMapping(input, StringConstants.NETWORK_TOKEN);
195 Mockito.doReturn(RpcResultBuilder.failed().buildFuture()).when(this.olmService)
196 .servicePowerSetup(Mockito.any());
197 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
198 Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
202 private GetPmInput createGetPmInput(String nodeId, String tp) {
203 GetPmInputBuilder getPmIpBldr = new GetPmInputBuilder();
204 getPmIpBldr.setNodeId(nodeId);
205 getPmIpBldr.setGranularity(PmGranularity._15min);
206 ResourceIdentifierBuilder rsrcBldr = new ResourceIdentifierBuilder();
207 rsrcBldr.setResourceName(tp + "-OTU");
208 getPmIpBldr.setResourceIdentifier(rsrcBldr.build());
209 getPmIpBldr.setResourceType(ResourceTypeEnum.Interface);
210 return getPmIpBldr.build();
214 public void serviceImplementationServiceInActive() throws InterruptedException, ExecutionException {
216 ServiceImplementationRequestInput input = ServiceDataUtils
217 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
218 Measurements measurements = new MeasurementsBuilder().setPmparameterName("FECUncorrectableBlocks")
219 .setPmparameterValue("1").build();
220 List<Measurements> measurementsList = new ArrayList<Measurements>();
221 measurementsList.add(measurements);
222 GetPmOutput getPmOutput = new GetPmOutputBuilder()
223 .setNodeId("node1").setMeasurements(measurementsList).build();
224 Mockito.doReturn(RpcResultBuilder.success(getPmOutput).buildFuture()).when(this.olmService)
225 .getPm(Mockito.any());
226 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
227 Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
232 public void serviceImplementationServiceInActive2() throws InterruptedException, ExecutionException {
234 ServiceImplementationRequestInput input = ServiceDataUtils
235 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
236 Measurements measurements = new MeasurementsBuilder().setPmparameterName("FECUncorrectableBlocks")
237 .setPmparameterValue("1").build();
238 List<Measurements> measurementsList = new ArrayList<Measurements>();
239 measurementsList.add(measurements);
240 GetPmOutput getPmOutput = new GetPmOutputBuilder()
241 .setNodeId("node1").setMeasurements(measurementsList).build();
243 Mockito.when(this.olmService.getPm(Mockito.any()))
244 .thenReturn(RpcResultBuilder.success(getPmOutput).buildFuture());
245 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
246 Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
251 public void serviceImplementationServiceInActive3() throws InterruptedException, ExecutionException {
253 Measurements measurements = new MeasurementsBuilder().setPmparameterName("FECUncorrectableBlocks")
254 .setPmparameterValue("1").build();
255 List<Measurements> measurementsList = new ArrayList<Measurements>();
256 measurementsList.add(measurements);
257 GetPmOutput getPmOutput = new GetPmOutputBuilder()
258 .setNodeId("node1").setMeasurements(measurementsList).build();
259 GetPmOutput getPmOutput2 = new GetPmOutputBuilder()
260 .setNodeId("node1").setMeasurements(new ArrayList<>()).build();
262 GetPmInput getPmInputZ = createGetPmInput("XPONDER-2-3",
263 StringConstants.NETWORK_TOKEN);
264 GetPmInput getPmInputA = createGetPmInput("XPONDER-1-2",
265 StringConstants.NETWORK_TOKEN);
267 Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputZ)))
268 .thenReturn(RpcResultBuilder.success(getPmOutput2).buildFuture());
269 Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputA)))
270 .thenReturn(RpcResultBuilder.success(getPmOutput).buildFuture());
271 ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
273 Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
275 ServiceImplementationRequestInput input = ServiceDataUtils
276 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
277 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
278 Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
283 public void serviceImplementationServiceActive() throws InterruptedException, ExecutionException {
285 ServiceImplementationRequestInput input = ServiceDataUtils
286 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
287 GetPmOutput getPmOutput1 = null;
288 Mockito.when(this.olmService.getPm(Mockito.any())).thenReturn(RpcResultBuilder.success(getPmOutput1)
290 ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
292 Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
294 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
295 Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
300 public void serviceImplementationServiceActive2() throws InterruptedException, ExecutionException {
302 ServiceImplementationRequestInput input = ServiceDataUtils
303 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
304 GetPmOutput getPmOutput = new GetPmOutputBuilder().setMeasurements(new ArrayList<>()).build();
305 Mockito.when(this.olmService.getPm(Mockito.any())).thenReturn(RpcResultBuilder.success(getPmOutput)
307 ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
309 Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
311 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
312 Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
317 public void serviceImplementationServiceInActive4() throws InterruptedException, ExecutionException {
319 Measurements measurements = new MeasurementsBuilder().setPmparameterName("preFECCorrectedErrors")
320 .setPmparameterValue("1").build();
321 List<Measurements> measurementsList = new ArrayList<Measurements>();
322 measurementsList.add(measurements);
323 GetPmOutput getPmOutput = new GetPmOutputBuilder()
324 .setNodeId("node1").setMeasurements(measurementsList).build();
326 Mockito.doReturn(RpcResultBuilder.success(getPmOutput).buildFuture()).when(this.olmService)
327 .getPm(Mockito.any());
328 ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
330 Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
332 ServiceImplementationRequestInput input = ServiceDataUtils
333 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
334 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
335 Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
340 public void serviceImplementationServiceInActive5() throws InterruptedException, ExecutionException {
342 ServiceImplementationRequestInput input = ServiceDataUtils
343 .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
344 Measurements measurements = new MeasurementsBuilder().setPmparameterName("preFECCorrectedErrors")
345 .setPmparameterValue("112000000000d").build();
346 List<Measurements> measurementsList = new ArrayList<Measurements>();
347 measurementsList.add(measurements);
348 GetPmOutput getPmOutput = new GetPmOutputBuilder()
349 .setNodeId("node1").setMeasurements(measurementsList).build();
351 Mockito.doReturn(RpcResultBuilder.success(getPmOutput).buildFuture()).when(this.olmService)
352 .getPm(Mockito.any());
353 ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
354 Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());