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