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