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