2 * Copyright © 2018 Orange, Inc. and others. All rights reserved.
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
8 package org.opendaylight.transportpce.servicehandler.service;
10 import static org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperationsImpl.LogMessages;
12 import java.util.Optional;
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.opendaylight.mdsal.binding.api.DataBroker;
17 import org.opendaylight.transportpce.common.OperationResult;
18 import org.opendaylight.transportpce.common.ResponseCodes;
19 import org.opendaylight.transportpce.servicehandler.ServiceInput;
20 import org.opendaylight.transportpce.servicehandler.utils.ServiceDataUtils;
21 import org.opendaylight.transportpce.test.AbstractTest;
22 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutput;
23 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutputBuilder;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.configuration.response.common.ConfigurationResponseCommon;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev190531.configuration.response.common.ConfigurationResponseCommonBuilder;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInput;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.TempServiceCreateInput;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
31 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.AToZDirectionBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev200629.path.description.ZToADirectionBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParameters;
34 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.ResponseParametersBuilder;
35 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.response.parameters.sp.response.parameters.PathDescriptionBuilder;
37 //writeOrModifyOrDeleteServiceList deprecated method should not raise warnings in tests
38 @SuppressWarnings("deprecation")
39 public class ServiceDataStoreOperationsImplTest extends AbstractTest {
41 private ServiceDataStoreOperationsImpl serviceDataStoreOperations;
45 DataBroker dataBroker = this.getNewDataBroker();
46 this.serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(dataBroker);
50 public void modifyIfServiceNotPresent() {
51 OperationResult result =
52 this.serviceDataStoreOperations.modifyService("service 1", State.InService, AdminStates.InService);
53 Assert.assertFalse(result.isSuccess());
54 Assert.assertEquals(LogMessages.SERVICE_NOT_FOUND, result.getResultMessage());
58 public void writeOrModifyOrDeleteServiceListNotPresentWithNoWriteChoice() {
60 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
61 ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
62 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
63 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
64 PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
65 .setConfigurationResponseCommon(configurationResponseCommon).build();
66 String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("serviceCreateInput",
67 createInput, pathComputationRequestOutput, 3);
69 Assert.assertEquals(LogMessages.SERVICE_NOT_FOUND, result);
73 public void writeOrModifyOrDeleteServiceListNotPresentWithWriteChoice() {
75 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
76 ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
77 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
78 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
79 PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
80 .setConfigurationResponseCommon(configurationResponseCommon).build();
81 String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("service 1",
82 createInput, pathComputationRequestOutput, 2);
84 Assert.assertNull(result);
88 public void writeOrModifyOrDeleteServiceListPresentWithModifyChoice() {
89 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
90 ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
91 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
92 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
93 PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
94 .setConfigurationResponseCommon(configurationResponseCommon).build();
95 OperationResult createOutput = this.serviceDataStoreOperations.createService(createInput);
96 String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("service 1",
97 createInput, pathComputationRequestOutput, 0);
98 Assert.assertNull(result);
102 public void writeOrModifyOrDeleteServiceListPresentWithDeleteChoice() {
103 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
105 ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
106 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
107 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
108 PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
109 .setConfigurationResponseCommon(configurationResponseCommon).build();
110 OperationResult createOutput = this.serviceDataStoreOperations.createService(createInput);
111 String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("service 1",
112 createInput, pathComputationRequestOutput, 1);
113 Assert.assertNull(result);
117 public void writeOrModifyOrDeleteServiceListPresentWithNoValidChoice() {
118 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
119 ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
120 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
121 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
122 PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
123 .setConfigurationResponseCommon(configurationResponseCommon).build();
124 OperationResult createOutput = this.serviceDataStoreOperations.createService(createInput);
125 String result = serviceDataStoreOperations.writeOrModifyOrDeleteServiceList("service 1",
126 createInput, pathComputationRequestOutput, 2);
127 Assert.assertNull(result);
132 public void getServiceFromEmptyDataStoreShouldBeEmpty() {
133 Optional<Services> optService = this.serviceDataStoreOperations.getService("service 1");
134 Assert.assertFalse(optService.isPresent());
138 public void createServiceShouldBeSuccessForValidInput() {
139 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
140 OperationResult result = this.serviceDataStoreOperations.createService(createInput);
141 Assert.assertTrue(result.isSuccess());
145 public void getServiceShouldReturnTheCorrectServiceForTheCreatedService() {
146 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
147 this.serviceDataStoreOperations.createService(createInput);
149 Optional<Services> optService = this.serviceDataStoreOperations.getService(createInput.getServiceName());
150 Assert.assertTrue(optService.isPresent());
151 Assert.assertEquals(createInput.getServiceName(), optService.get().getServiceName());
155 public void deleteServiceShouldBeSuccessfulForDeletingService() {
156 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
157 this.serviceDataStoreOperations.createService(createInput);
158 OperationResult result = this.serviceDataStoreOperations.deleteService(createInput.getServiceName());
159 Assert.assertTrue(result.isSuccess());
163 // public void deleteServiceShouldBeFailedIfServiceDoNotExists() {
164 // OperationResult result = this.serviceDataStoreOperations.deleteService("Any service");
165 // Assert.assertFalse(result.isSuccess());
169 public void modifyServiceIsSuccessfulForPresentService() {
170 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
171 this.serviceDataStoreOperations.createService(createInput);
172 OperationResult result = this.serviceDataStoreOperations.modifyService(createInput.getServiceName(),
173 State.InService, AdminStates.InService);
174 Assert.assertTrue(result.isSuccess());
178 public void getTempServiceFromEmptyDataStoreShouldBeEmpty() {
179 Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
180 .Services> optService = this.serviceDataStoreOperations.getTempService("service 1");
181 Assert.assertFalse(optService.isPresent());
185 public void createTempServiceShouldBeSuccessForValidInput() {
186 TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput();
187 OperationResult result = this.serviceDataStoreOperations.createTempService(createInput);
188 Assert.assertTrue(result.isSuccess());
192 public void getTempServiceShouldReturnTheCorrectTempServiceForTheCreatedService() {
193 TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput();
194 this.serviceDataStoreOperations.createTempService(createInput);
196 Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
197 .Services> optService = this.serviceDataStoreOperations.getTempService(createInput.getCommonId());
198 Assert.assertTrue(optService.isPresent());
199 Assert.assertEquals(createInput.getCommonId(), optService.get().getCommonId());
203 public void deleteTempServiceShouldBeSuccessfulForDeletingTempService() {
204 TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput();
205 this.serviceDataStoreOperations.createTempService(createInput);
206 OperationResult result = this.serviceDataStoreOperations.deleteTempService(createInput.getCommonId());
207 Assert.assertTrue(result.isSuccess());
211 public void modifyTempServiceIsSuccessfulForPresentTempService() {
212 TempServiceCreateInput createInput = ServiceDataUtils.buildTempServiceCreateInput();
213 this.serviceDataStoreOperations.createTempService(createInput);
214 OperationResult result = this.serviceDataStoreOperations.modifyTempService(
215 createInput.getCommonId(), State.InService, AdminStates.InService);
216 Assert.assertTrue(result.isSuccess());
220 public void createServicePathShouldBeSuccessfulForValidInput() {
221 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
222 this.serviceDataStoreOperations.createService(createInput);
223 ServiceInput serviceInput = new ServiceInput(createInput);
224 ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
225 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
226 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
227 ResponseParameters responseParameters = new ResponseParametersBuilder()
228 .setPathDescription(new PathDescriptionBuilder()
229 .setAToZDirection(new AToZDirectionBuilder().setAToZWavelengthNumber(1L).setRate(1L).build())
230 .setZToADirection(new ZToADirectionBuilder().setZToAWavelengthNumber(1L).setRate(1L).build()).build())
232 PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
233 .setConfigurationResponseCommon(configurationResponseCommon).setResponseParameters(responseParameters)
235 OperationResult result =
236 this.serviceDataStoreOperations.createServicePath(serviceInput, pathComputationRequestOutput);
237 Assert.assertTrue(result.isSuccess());
241 public void createServicePathShouldFailForInvalidInput() {
242 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
243 this.serviceDataStoreOperations.createService(createInput);
244 ServiceInput serviceInput = new ServiceInput(createInput);
245 ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
246 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
247 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
248 ResponseParameters responseParameters = new ResponseParametersBuilder().build();
249 PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
250 .setConfigurationResponseCommon(configurationResponseCommon).setResponseParameters(responseParameters)
252 OperationResult result =
253 this.serviceDataStoreOperations.createServicePath(serviceInput, pathComputationRequestOutput);
254 Assert.assertFalse(result.isSuccess());
258 public void deleteServicePathShouldBeSuccessForDeletingServicePath() {
259 ServiceCreateInput createInput = ServiceDataUtils.buildServiceCreateInput();
260 this.serviceDataStoreOperations.createService(createInput);
261 ServiceInput serviceInput = new ServiceInput(createInput);
262 ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
263 .setRequestId("request 1").setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO)
264 .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
265 ResponseParameters responseParameters = new ResponseParametersBuilder()
266 .setPathDescription(new PathDescriptionBuilder()
267 .setAToZDirection(new AToZDirectionBuilder().setAToZWavelengthNumber(1L).setRate(1L).build())
268 .setZToADirection(new ZToADirectionBuilder().setZToAWavelengthNumber(1L).setRate(1L).build()).build())
270 PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder()
271 .setConfigurationResponseCommon(configurationResponseCommon).setResponseParameters(responseParameters)
273 this.serviceDataStoreOperations.createServicePath(serviceInput, pathComputationRequestOutput);
275 OperationResult result = this.serviceDataStoreOperations.deleteServicePath(serviceInput.getServiceName());
276 Assert.assertTrue(result.isSuccess());