Increase ServiceHandler Junit coverage
[transportpce.git] / servicehandler / src / test / java / org / opendaylight / transportpce / servicehandler / service / ServiceDataStoreOperationsImplTest.java
1 /*
2  * Copyright © 2018 Orange, 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.servicehandler.service;
9
10 import java.util.Optional;
11
12 import org.junit.Assert;
13 import org.junit.Before;
14 import org.junit.Test;
15 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
16 import org.opendaylight.transportpce.common.OperationResult;
17 import org.opendaylight.transportpce.common.ResponseCodes;
18 import org.opendaylight.transportpce.servicehandler.ServiceInput;
19 import org.opendaylight.transportpce.servicehandler.utils.ServiceDataUtils;
20 import org.opendaylight.transportpce.test.AbstractTest;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestOutput;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestOutputBuilder;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.configuration.response.common.ConfigurationResponseCommon;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.configuration.response.common.ConfigurationResponseCommonBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.State;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInput;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.TempServiceCreateInput;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.list.Services;
29 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.AToZDirectionBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev171017.path.description.ZToADirectionBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.response.parameters.sp.ResponseParameters;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.response.parameters.sp.ResponseParametersBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev171016.response.parameters.sp.response.parameters.PathDescriptionBuilder;
34
35
36 public class ServiceDataStoreOperationsImplTest extends AbstractTest {
37
38     private ServiceDataStoreOperationsImpl serviceDataStoreOperations;
39
40     @Before
41     public void init() {
42         DataBroker dataBroker = this.getNewDataBroker();
43         this.serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(dataBroker);
44     }
45
46     @Test
47     public void modifyIfServiceNotPresent() {
48         OperationResult result =
49                 this.serviceDataStoreOperations.modifyService("service 1", State.InService, State.InService);
50         Assert.assertFalse(result.isSuccess());
51         Assert.assertEquals("Service " + "service 1" + " is not present!", result.getResultMessage());
52     }
53
54     @Test
55     public void writeOrModifyOrDeleteServiceListNotPresentWithNoWriteChoice() {
56
57         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
58         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
59                 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
60                 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
61         PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
62                 .setConfigurationResponseCommon(configurationResponseCommon).build();
63         String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("serviceCreateInput",
64             createInput, pathComputationRequestOutput, 3);
65
66         Assert.assertEquals("Service is not present ! ", result);
67     }
68
69     @Test
70     public void writeOrModifyOrDeleteServiceListNotPresentWithWriteChoice() {
71
72         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
73         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
74                 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
75                 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
76         PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
77                 .setConfigurationResponseCommon(configurationResponseCommon).build();
78         String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("service 1",
79             createInput, pathComputationRequestOutput, 2);
80
81         Assert.assertNull(result);
82     }
83
84     @Test
85     public void writeOrModifyOrDeleteServiceListPresentWithModifyChoice() {
86         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
87         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
88                 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
89                 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
90         PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
91                 .setConfigurationResponseCommon(configurationResponseCommon).build();
92         OperationResult createOutput = this.serviceDataStoreOperations.createService(createInput);
93         String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("service 1",
94             createInput, pathComputationRequestOutput, 0);
95         Assert.assertNull(result);
96     }
97
98     @Test
99     public void writeOrModifyOrDeleteServiceListPresentWithDeleteChoice() {
100         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
101         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
102                 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
103                 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
104         PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
105                 .setConfigurationResponseCommon(configurationResponseCommon).build();
106         OperationResult createOutput = this.serviceDataStoreOperations.createService(createInput);
107         String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("service 1",
108             createInput, pathComputationRequestOutput, 1);
109         Assert.assertNull(result);
110     }
111
112     @Test
113     public void writeOrModifyOrDeleteServiceListPresentWithNoValidChoice() {
114         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
115         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
116                 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
117                 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
118         PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
119                 .setConfigurationResponseCommon(configurationResponseCommon).build();
120         OperationResult createOutput = this.serviceDataStoreOperations.createService(createInput);
121         String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("service 1",
122             createInput, pathComputationRequestOutput, 2);
123         Assert.assertNull(result);
124
125     }
126
127     @Test
128     public void getServiceFromEmptyDataStoreShouldBeEmpty() {
129         Optional<Services> optService = this.serviceDataStoreOperations.getService("service 1");
130         Assert.assertFalse(optService.isPresent());
131     }
132
133     @Test
134     public void createServiceShouldBeSuccessForValidInput() {
135         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
136         OperationResult result = this.serviceDataStoreOperations.createService(createInput);
137         Assert.assertTrue(result.isSuccess());
138     }
139
140     @Test
141     public void getServiceShouldReturnTheCorrectServiceForTheCreatedService() {
142         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
143         this.serviceDataStoreOperations.createService(createInput);
144
145         Optional<Services> optService = this.serviceDataStoreOperations.getService(createInput.getServiceName());
146         Assert.assertTrue(optService.isPresent());
147         Assert.assertEquals(createInput.getServiceName(), optService.get().getServiceName());
148     }
149
150     @Test
151     public void deleteServiceShouldBeSuccessfulForDeletingService() {
152         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
153         this.serviceDataStoreOperations.createService(createInput);
154         OperationResult result = this.serviceDataStoreOperations.deleteService(createInput.getServiceName());
155         Assert.assertTrue(result.isSuccess());
156     }
157
158 //    @Test
159 //    public void deleteServiceShouldBeFailedIfServiceDoNotExists() {
160 //        OperationResult result = this.serviceDataStoreOperations.deleteService("Any service");
161 //        Assert.assertFalse(result.isSuccess());
162 //    }
163
164     @Test
165     public void modifyServiceIsSuccessfulForPresentService() {
166         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
167         this.serviceDataStoreOperations.createService(createInput);
168         OperationResult result = this.serviceDataStoreOperations.modifyService(createInput.getServiceName(),
169             State.InService, State.InService);
170         Assert.assertTrue(result.isSuccess());
171     }
172
173     @Test
174     public void getTempServiceFromEmptyDataStoreShouldBeEmpty() {
175         Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.temp.service.list
176                 .Services> optService = this.serviceDataStoreOperations.getTempService("service 1");
177         Assert.assertFalse(optService.isPresent());
178     }
179
180     @Test
181     public void createTempServiceShouldBeSuccessForValidInput() {
182         TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput();
183         OperationResult result = this.serviceDataStoreOperations.createTempService(createInput);
184         Assert.assertTrue(result.isSuccess());
185     }
186
187     @Test
188     public void getTempServiceShouldReturnTheCorrectTempServiceForTheCreatedService() {
189         TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput();
190         this.serviceDataStoreOperations.createTempService(createInput);
191
192         Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.temp.service.list
193                 .Services> optService = this.serviceDataStoreOperations.getTempService(createInput.getCommonId());
194         Assert.assertTrue(optService.isPresent());
195         Assert.assertEquals(createInput.getCommonId(), optService.get().getCommonId());
196     }
197
198     @Test
199     public void deleteTempServiceShouldBeSuccessfulForDeletingTempService() {
200         TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput();
201         this.serviceDataStoreOperations.createTempService(createInput);
202         OperationResult result = this.serviceDataStoreOperations.deleteTempService(createInput.getCommonId());
203         Assert.assertTrue(result.isSuccess());
204     }
205
206     @Test
207     public void modifyTempServiceIsSuccessfulForPresentTempService() {
208         TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput();
209         this.serviceDataStoreOperations.createTempService(createInput);
210         OperationResult result = this.serviceDataStoreOperations.modifyTempService(createInput.getCommonId(),
211             State.InService, State.InService);
212         Assert.assertTrue(result.isSuccess());
213     }
214
215     @Test
216     public void createServicePathShouldBeSuccessfulForValidInput() {
217         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
218         this.serviceDataStoreOperations.createService(createInput);
219         ServiceInput serviceInput = new ServiceInput(createInput);
220         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
221                 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
222                 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
223         ResponseParameters responseParameters = new ResponseParametersBuilder()
224             .setPathDescription(new PathDescriptionBuilder()
225                 .setAToZDirection(new AToZDirectionBuilder().setAToZWavelengthNumber(1L).setRate(1L).build())
226                 .setZToADirection(new ZToADirectionBuilder().setZToAWavelengthNumber(1L).setRate(1L).build()).build())
227             .build();
228         PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
229             .setConfigurationResponseCommon(configurationResponseCommon).setResponseParameters(responseParameters)
230             .build();
231         OperationResult result =
232             this.serviceDataStoreOperations.createServicePath(serviceInput, pathComputationRequestOutput);
233         Assert.assertTrue(result.isSuccess());
234     }
235
236     @Test
237     public void createServicePathShouldFailForInvalidInput() {
238         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
239         this.serviceDataStoreOperations.createService(createInput);
240         ServiceInput serviceInput = new ServiceInput(createInput);
241         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
242             .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
243             .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
244         ResponseParameters responseParameters = new ResponseParametersBuilder().build();
245         PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
246             .setConfigurationResponseCommon(configurationResponseCommon).setResponseParameters(responseParameters)
247             .build();
248         OperationResult result =
249             this.serviceDataStoreOperations.createServicePath(serviceInput, pathComputationRequestOutput);
250         Assert.assertFalse(result.isSuccess());
251     }
252
253     @Test
254     public void deleteServicePathShouldBeSuccessForDeletingServicePath() {
255         ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
256         this.serviceDataStoreOperations.createService(createInput);
257         ServiceInput serviceInput = new ServiceInput(createInput);
258         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
259             .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
260             .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
261         ResponseParameters responseParameters = new ResponseParametersBuilder()
262             .setPathDescription(new PathDescriptionBuilder()
263                 .setAToZDirection(new AToZDirectionBuilder().setAToZWavelengthNumber(1L).setRate(1L).build())
264                 .setZToADirection(new ZToADirectionBuilder().setZToAWavelengthNumber(1L).setRate(1L).build()).build())
265             .build();
266         PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
267             .setConfigurationResponseCommon(configurationResponseCommon).setResponseParameters(responseParameters)
268             .build();
269         this.serviceDataStoreOperations.createServicePath(serviceInput, pathComputationRequestOutput);
270
271         OperationResult result = this.serviceDataStoreOperations.deleteServicePath(serviceInput.getServiceName());
272         Assert.assertTrue(result.isSuccess());
273     }
274 }