592f98944eb07ebf1ca93a1c93fe68faaaf51d6d
[transportpce.git] / renderer / src / test / java / org / opendaylight / transportpce / renderer / provisiondevice / RendererServiceOperationsImplTest.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.provisiondevice;
9
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.Ignore;
16 import org.junit.Test;
17 import org.mockito.Mockito;
18 import org.opendaylight.mdsal.binding.api.MountPoint;
19 import org.opendaylight.mdsal.binding.api.MountPointService;
20 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
21 import org.opendaylight.transportpce.common.ResponseCodes;
22 import org.opendaylight.transportpce.common.StringConstants;
23 import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
24 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl;
25 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl121;
26 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl221;
27 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl710;
28 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
29 import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
30 import org.opendaylight.transportpce.common.mapping.MappingUtils;
31 import org.opendaylight.transportpce.common.mapping.MappingUtilsImpl;
32 import org.opendaylight.transportpce.common.mapping.PortMapping;
33 import org.opendaylight.transportpce.common.mapping.PortMappingImpl;
34 import org.opendaylight.transportpce.common.mapping.PortMappingVersion121;
35 import org.opendaylight.transportpce.common.mapping.PortMappingVersion221;
36 import org.opendaylight.transportpce.common.mapping.PortMappingVersion710;
37 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
38 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
39 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl;
40 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl121;
41 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl221;
42 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl710;
43 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface121;
44 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface221;
45 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface710;
46 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
47 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmOtnInterface221;
48 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmOtnInterface710;
49 import org.opendaylight.transportpce.renderer.stub.OlmServiceStub;
50 import org.opendaylight.transportpce.renderer.utils.MountPointUtils;
51 import org.opendaylight.transportpce.renderer.utils.NotificationPublishServiceMock;
52 import org.opendaylight.transportpce.renderer.utils.ServiceDataUtils;
53 import org.opendaylight.transportpce.test.AbstractTest;
54 import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
55 import org.opendaylight.transportpce.test.stub.MountPointStub;
56 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathOutputBuilder;
57 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInput;
58 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmInputBuilder;
59 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmOutput;
60 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.GetPmOutputBuilder;
61 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService;
62 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.get.pm.output.Measurements;
63 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.get.pm.output.MeasurementsBuilder;
64 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestInput;
65 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.ServiceImplementationRequestOutput;
66 import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev161014.PmGranularity;
67 import org.opendaylight.yang.gen.v1.http.org.openroadm.resource.types.rev161014.ResourceTypeEnum;
68 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev210618.olm.get.pm.input.ResourceIdentifierBuilder;
69 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
70
71 @Ignore
72 public class RendererServiceOperationsImplTest extends AbstractTest {
73
74     private MountPointService mountPointService;
75     private DeviceTransactionManager deviceTransactionManager;
76     private RendererServiceOperationsImpl rendererServiceOperations;
77     private OpenRoadmInterfaces openRoadmInterfaces;
78     private DeviceRendererService deviceRenderer;
79     private OtnDeviceRendererService otnDeviceRendererService;
80     private PortMapping portMapping;
81     private OpenRoadmInterfaceFactory openRoadmInterfaceFactory;
82     private CrossConnect crossConnect;
83     private TransportpceOlmService olmService;
84     private MappingUtils mappingUtils;
85     private OpenRoadmInterfacesImpl121 openRoadmInterfacesImpl121;
86     private OpenRoadmInterfacesImpl221 openRoadmInterfacesImpl221;
87     private OpenRoadmInterfacesImpl710 openRoadmInterfacesImpl710;
88     private PortMappingVersion710 portMappingVersion710;
89     private PortMappingVersion221 portMappingVersion22;
90     private PortMappingVersion121 portMappingVersion121;
91     private CrossConnectImpl121 crossConnectImpl121;
92     private CrossConnectImpl221 crossConnectImpl221;
93     private CrossConnectImpl710 crossConnectImpl710;
94
95     private void setMountPoint(MountPoint mountPoint) {
96         this.mountPointService = new MountPointServiceStub(mountPoint);
97         this.deviceTransactionManager = new DeviceTransactionManagerImpl(this.mountPointService, 3000);
98         this.openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(deviceTransactionManager);
99         this.openRoadmInterfacesImpl221 = new OpenRoadmInterfacesImpl221(deviceTransactionManager);
100         this.openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(deviceTransactionManager);
101         this.mappingUtils = new MappingUtilsImpl(getDataBroker());
102         this.openRoadmInterfaces = new OpenRoadmInterfacesImpl(deviceTransactionManager, mappingUtils,
103             openRoadmInterfacesImpl121, openRoadmInterfacesImpl221, openRoadmInterfacesImpl710);
104         this.openRoadmInterfaces = Mockito.spy(this.openRoadmInterfaces);
105         this.portMappingVersion22 =
106             new PortMappingVersion221(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
107         this.portMappingVersion121 =
108             new PortMappingVersion121(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
109         this.portMappingVersion710 =
110             new PortMappingVersion710(getDataBroker(), deviceTransactionManager, this.openRoadmInterfaces);
111         this.portMapping = new PortMappingImpl(getDataBroker(), this.portMappingVersion710, this.portMappingVersion22,
112             this.portMappingVersion121);
113         OpenRoadmInterface121 openRoadmInterface121 = new OpenRoadmInterface121(portMapping,openRoadmInterfaces);
114         OpenRoadmInterface221 openRoadmInterface221 = new OpenRoadmInterface221(portMapping,openRoadmInterfaces);
115         OpenRoadmInterface710 openRoadmInterface710 = new OpenRoadmInterface710(portMapping,openRoadmInterfaces);
116         OpenRoadmOtnInterface221 openRoadmOTNInterface221 = new OpenRoadmOtnInterface221(portMapping,
117             openRoadmInterfaces);
118         OpenRoadmOtnInterface710 openRoadmOtnInterface710 = new OpenRoadmOtnInterface710(portMapping,
119             openRoadmInterfaces);
120         this.openRoadmInterfaceFactory = new OpenRoadmInterfaceFactory(this.mappingUtils,openRoadmInterface121,
121             openRoadmInterface221, openRoadmInterface710, openRoadmOTNInterface221, openRoadmOtnInterface710);
122         this.crossConnectImpl121 = new CrossConnectImpl121(deviceTransactionManager);
123         this.crossConnectImpl221 = new CrossConnectImpl221(deviceTransactionManager);
124         this.crossConnect = new CrossConnectImpl(deviceTransactionManager, this.mappingUtils, this.crossConnectImpl121,
125             this.crossConnectImpl221, this.crossConnectImpl710);
126     }
127
128     @Before
129     public void setUp() throws OpenRoadmInterfaceException {
130         setMountPoint(new MountPointStub(getDataBroker()));
131         this.olmService = new OlmServiceStub();
132         this.deviceRenderer = new DeviceRendererServiceImpl(getDataBroker(), this.deviceTransactionManager,
133             openRoadmInterfaceFactory, openRoadmInterfaces, crossConnect, portMapping, null);
134         this.otnDeviceRendererService = new OtnDeviceRendererServiceImpl(openRoadmInterfaceFactory, this.crossConnect,
135             openRoadmInterfaces, this.deviceTransactionManager, null);
136         Mockito.doNothing().when(this.openRoadmInterfaces).postEquipmentState(Mockito.anyString(),
137             Mockito.anyString(), Mockito.anyBoolean());
138         NotificationPublishService notificationPublishService = new NotificationPublishServiceMock();
139         this.olmService = Mockito.spy(this.olmService);
140         this.deviceRenderer = Mockito.spy(this.deviceRenderer);
141         this.rendererServiceOperations =  new RendererServiceOperationsImpl(this.deviceRenderer,
142             this.otnDeviceRendererService, this.olmService, getDataBroker(), notificationPublishService, null);
143
144         ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
145             .setSuccess(true);
146         Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
147             Mockito.any());
148     }
149
150     @Test
151     public void serviceImplementationTerminationPointAsResourceTtp() throws InterruptedException, ExecutionException {
152
153         ServiceImplementationRequestInput input = ServiceDataUtils
154             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.TTP_TOKEN);
155         writePortMapping(input, StringConstants.TTP_TOKEN);
156         ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
157             .setSuccess(true);
158         Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
159             Mockito.any());
160         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
161         Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
162
163     }
164
165     @Test
166     public void serviceImplementationTerminationPointAsResourceTtp2() throws InterruptedException, ExecutionException {
167
168         ServiceImplementationRequestInput input = ServiceDataUtils
169             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.TTP_TOKEN);
170         writePortMapping(input, StringConstants.TTP_TOKEN);
171         ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
172             .setSuccess(true);
173         Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
174             Mockito.any());
175         Mockito.doReturn(RpcResultBuilder.failed().buildFuture()).when(this.olmService)
176             .servicePowerSetup(Mockito.any());
177         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
178         Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
179
180     }
181
182     @Test
183     public void serviceImplementationTerminationPointAsResourcePp() throws InterruptedException, ExecutionException {
184
185         ServiceImplementationRequestInput input = ServiceDataUtils
186             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.PP_TOKEN);
187         writePortMapping(input, StringConstants.PP_TOKEN);
188         ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
189             .setSuccess(true);
190         Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
191             Mockito.any());
192         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
193         Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
194
195     }
196
197     @Test
198     public void serviceImplementationTerminationPointAsResourceNetwork()
199         throws InterruptedException, ExecutionException {
200
201         ServiceImplementationRequestInput input = ServiceDataUtils
202             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
203         writePortMapping(input, StringConstants.NETWORK_TOKEN);
204         ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
205             .setSuccess(true);
206         Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
207             Mockito.any());
208         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
209         Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
210
211     }
212
213     @Test
214     public void serviceImplementationTerminationPointAsResourceClient()
215         throws InterruptedException, ExecutionException {
216
217         ServiceImplementationRequestInput input = ServiceDataUtils
218      //       .buildServiceImplementationRequestInputTerminationPointResource(OpenRoadmInterfacesImpl.CLIENT_TOKEN);
219             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.CLIENT_TOKEN);
220      //   writePortMapping(input, OpenRoadmInterfacesImpl.CLIENT_TOKEN);
221         writePortMapping(input, StringConstants.CLIENT_TOKEN);
222         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
223         Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
224     }
225
226     @Test
227     public void serviceImplementationTerminationPointAsResourceNoMapping()
228         throws InterruptedException, ExecutionException {
229
230         String[] interfaceTokens = {
231             StringConstants.NETWORK_TOKEN,
232             StringConstants.CLIENT_TOKEN,
233             StringConstants.TTP_TOKEN,
234             StringConstants.PP_TOKEN
235         };
236
237         ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("failed")
238             .setSuccess(false);
239         Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
240             Mockito.any());
241
242         for (String tpToken : interfaceTokens) {
243             ServiceImplementationRequestInput input = ServiceDataUtils
244                 .buildServiceImplementationRequestInputTerminationPointResource(tpToken);
245             ServiceImplementationRequestOutput result =
246                 this.rendererServiceOperations.serviceImplementation(input).get();
247             Assert.assertEquals(ResponseCodes.RESPONSE_FAILED,
248                 result.getConfigurationResponseCommon().getResponseCode());
249         }
250     }
251
252     private void writePortMapping(ServiceImplementationRequestInput input, String tpToken) {
253         MountPointUtils.writeMapping(
254             input.getServiceAEnd().getNodeId(),
255             input.getServiceAEnd().getNodeId() + "-" + tpToken,
256             this.deviceTransactionManager
257         );
258         MountPointUtils.writeMapping(
259             input.getServiceZEnd().getNodeId(),
260             input.getServiceZEnd().getNodeId() + "-"
261                 + input.getServiceAEnd().getNodeId() + "-" + tpToken,
262             this.deviceTransactionManager
263         );
264         MountPointUtils.writeMapping(
265             input.getServiceAEnd().getNodeId(),
266             input.getServiceAEnd().getNodeId() + "-"
267                 + input.getServiceZEnd().getNodeId() + "-" + tpToken,
268             this.deviceTransactionManager
269         );
270         MountPointUtils.writeMapping(
271             input.getServiceZEnd().getNodeId(),
272             input.getServiceZEnd().getNodeId() + "-" + tpToken,
273             this.deviceTransactionManager
274         );
275     }
276
277     @Test
278     public void serviceImplementationRollbackAllNecessary() throws InterruptedException, ExecutionException {
279
280         ServiceImplementationRequestInput input = ServiceDataUtils
281             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
282         writePortMapping(input, StringConstants.NETWORK_TOKEN);
283         Mockito.doReturn(RpcResultBuilder.failed().buildFuture()).when(this.olmService)
284             .servicePowerSetup(Mockito.any());
285         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
286         Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
287
288     }
289
290     private GetPmInput createGetPmInput(String nodeId, String tp) {
291         GetPmInputBuilder getPmIpBldr = new GetPmInputBuilder();
292         getPmIpBldr.setNodeId(nodeId);
293         getPmIpBldr.setGranularity(PmGranularity._15min);
294         ResourceIdentifierBuilder rsrcBldr = new ResourceIdentifierBuilder();
295         rsrcBldr.setResourceName(tp + "-OTU");
296         getPmIpBldr.setResourceIdentifier(rsrcBldr.build());
297         getPmIpBldr.setResourceType(ResourceTypeEnum.Interface);
298         return getPmIpBldr.build();
299     }
300
301     @Test
302     public void serviceImplementationServiceInActive() throws InterruptedException, ExecutionException {
303
304         ServiceImplementationRequestInput input = ServiceDataUtils
305             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
306         writePortMapping(input, StringConstants.NETWORK_TOKEN);
307         Measurements measurements = new MeasurementsBuilder().setPmparameterName("FECUncorrectableBlocks")
308             .setPmparameterValue("1").build();
309         List<Measurements> measurementsList = new ArrayList<Measurements>();
310         measurementsList.add(measurements);
311         GetPmOutput getPmOutput = new GetPmOutputBuilder()
312             .setNodeId("node1").setMeasurements(measurementsList).build();
313         Mockito.doReturn(RpcResultBuilder.success(getPmOutput).buildFuture()).when(this.olmService)
314             .getPm(Mockito.any());
315         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
316         Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
317
318     }
319
320     @Test
321     public void serviceImplementationServiceInActive2() throws InterruptedException, ExecutionException {
322
323         ServiceImplementationRequestInput input = ServiceDataUtils
324             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
325         writePortMapping(input, StringConstants.NETWORK_TOKEN);
326         Measurements measurements = new MeasurementsBuilder().setPmparameterName("FECUncorrectableBlocks")
327             .setPmparameterValue("1").build();
328         List<Measurements> measurementsList = new ArrayList<Measurements>();
329         measurementsList.add(measurements);
330         GetPmOutput getPmOutput = new GetPmOutputBuilder()
331             .setNodeId("node1").setMeasurements(measurementsList).build();
332         GetPmOutput getPmOutput2 = new GetPmOutputBuilder()
333             .setNodeId("node1").setMeasurements(new ArrayList<>()).build();
334
335         Mockito.when(this.olmService.getPm(Mockito.any()))
336             .thenReturn(RpcResultBuilder.success(getPmOutput).buildFuture());
337         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
338         Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
339
340     }
341
342     @Test
343     public void serviceImplementationServiceInActive3() throws InterruptedException, ExecutionException {
344
345         ServiceImplementationRequestInput input = ServiceDataUtils
346             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
347         writePortMapping(input, StringConstants.NETWORK_TOKEN);
348         Measurements measurements = new MeasurementsBuilder().setPmparameterName("FECUncorrectableBlocks")
349             .setPmparameterValue("1").build();
350         List<Measurements> measurementsList = new ArrayList<Measurements>();
351         measurementsList.add(measurements);
352         GetPmOutput getPmOutput = new GetPmOutputBuilder()
353             .setNodeId("node1").setMeasurements(measurementsList).build();
354         GetPmOutput getPmOutput2 = new GetPmOutputBuilder()
355             .setNodeId("node1").setMeasurements(new ArrayList<>()).build();
356
357         GetPmInput getPmInputZ = createGetPmInput("XPONDER-2-3",
358             StringConstants.NETWORK_TOKEN);
359         GetPmInput getPmInputA = createGetPmInput("XPONDER-1-2",
360             StringConstants.NETWORK_TOKEN);
361
362         Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputZ)))
363             .thenReturn(RpcResultBuilder.success(getPmOutput2).buildFuture());
364         Mockito.when(this.olmService.getPm(Mockito.eq(getPmInputA)))
365             .thenReturn(RpcResultBuilder.success(getPmOutput).buildFuture());
366         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
367         Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
368
369     }
370
371     @Test
372     public void serviceImplementationServiceActive() throws InterruptedException, ExecutionException {
373
374         ServiceImplementationRequestInput input = ServiceDataUtils
375             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
376         writePortMapping(input, StringConstants.NETWORK_TOKEN);
377         GetPmOutput getPmOutput = new GetPmOutputBuilder()
378             .setNodeId("node1").setMeasurements(new ArrayList<>()).build();
379         GetPmOutput getPmOutput1 = null;
380         Mockito.when(this.olmService.getPm(Mockito.any())).thenReturn(RpcResultBuilder.success(getPmOutput1)
381             .buildFuture());
382         ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
383             .setSuccess(true);
384         Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
385             Mockito.any());
386         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
387         Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
388
389     }
390
391     @Test
392     public void serviceImplementationServiceActive2() throws InterruptedException, ExecutionException {
393
394         ServiceImplementationRequestInput input = ServiceDataUtils
395             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
396         writePortMapping(input, StringConstants.NETWORK_TOKEN);
397         GetPmOutput getPmOutput = new GetPmOutputBuilder().setMeasurements(new ArrayList<>()).build();
398         Mockito.when(this.olmService.getPm(Mockito.any())).thenReturn(RpcResultBuilder.success(getPmOutput)
399             .buildFuture());
400         ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
401             .setSuccess(true);
402         Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
403             Mockito.any());
404         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
405         Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
406
407     }
408
409     @Test
410     public void serviceImplementationServiceInActive4() throws InterruptedException, ExecutionException {
411
412         ServiceImplementationRequestInput input = ServiceDataUtils
413             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
414         writePortMapping(input, StringConstants.NETWORK_TOKEN);
415         Measurements measurements = new MeasurementsBuilder().setPmparameterName("preFECCorrectedErrors")
416             .setPmparameterValue("1").build();
417         List<Measurements> measurementsList = new ArrayList<Measurements>();
418         measurementsList.add(measurements);
419         GetPmOutput getPmOutput = new GetPmOutputBuilder()
420             .setNodeId("node1").setMeasurements(measurementsList).build();
421
422         Mockito.doReturn(RpcResultBuilder.success(getPmOutput).buildFuture()).when(this.olmService)
423             .getPm(Mockito.any());
424         ServicePathOutputBuilder mockOutputBuilder = new ServicePathOutputBuilder().setResult("success")
425             .setSuccess(true);
426         Mockito.doReturn(mockOutputBuilder.build()).when(this.deviceRenderer).setupServicePath(Mockito.any(),
427             Mockito.any());
428         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
429         Assert.assertEquals(ResponseCodes.RESPONSE_OK, result.getConfigurationResponseCommon().getResponseCode());
430
431     }
432
433     @Test
434     public void serviceImplementationServiceInActive5() throws InterruptedException, ExecutionException {
435
436         ServiceImplementationRequestInput input = ServiceDataUtils
437             .buildServiceImplementationRequestInputTerminationPointResource(StringConstants.NETWORK_TOKEN);
438         writePortMapping(input, StringConstants.NETWORK_TOKEN);
439         Measurements measurements = new MeasurementsBuilder().setPmparameterName("preFECCorrectedErrors")
440             .setPmparameterValue("112000000000d").build();
441         List<Measurements> measurementsList = new ArrayList<Measurements>();
442         measurementsList.add(measurements);
443         GetPmOutput getPmOutput = new GetPmOutputBuilder()
444             .setNodeId("node1").setMeasurements(measurementsList).build();
445
446         Mockito.doReturn(RpcResultBuilder.success(getPmOutput).buildFuture()).when(this.olmService)
447             .getPm(Mockito.any());
448         ServiceImplementationRequestOutput result = this.rendererServiceOperations.serviceImplementation(input).get();
449         Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
450
451     }
452 }