2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.adapters.requestsdb.adapters;
23 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
24 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.fail;
27 import java.util.ArrayList;
28 import java.util.List;
29 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
30 import org.junit.Before;
31 import org.junit.Rule;
32 import org.junit.Test;
33 import org.junit.rules.ExpectedException;
34 import org.onap.so.adapters.requestsdb.MsoRequestsDbAdapter;
35 import org.onap.so.adapters.requestsdb.RequestStatusType;
36 import org.onap.so.adapters.requestsdb.RequestsAdapterBase;
37 import org.onap.so.adapters.requestsdb.application.TestAppender;
38 import org.onap.so.adapters.requestsdb.exceptions.MsoRequestsDbException;
39 import org.onap.so.db.request.beans.InfraActiveRequests;
40 import org.onap.so.db.request.beans.OperationStatus;
41 import org.onap.so.db.request.beans.ResourceOperationStatus;
42 import org.onap.so.db.request.beans.InstanceNfvoMapping;
43 import org.onap.so.db.request.data.repository.OperationStatusRepository;
44 import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
45 import org.onap.so.db.request.data.repository.InstanceNfvoMappingRepository;
46 import org.onap.so.requestsdb.RequestsDbConstant;
47 import org.springframework.beans.factory.annotation.Autowired;
48 import org.springframework.boot.web.server.LocalServerPort;
50 public class MSORequestDBImplTest extends RequestsAdapterBase {
55 private MsoRequestsDbAdapter dbAdapter;
58 private OperationStatusRepository operationStatusRepository;
61 private ResourceOperationStatusRepository resourceOperationStatusRepo;
64 private InstanceNfvoMappingRepository instanceNfvoMappingRepository;
67 public ExpectedException thrown = ExpectedException.none();
69 public InfraActiveRequests setupTestEntities() {
70 return buildTestRequest();
74 public void before() throws MsoRequestsDbException {
75 JaxWsProxyFactoryBean jaxWsProxyFactory = new JaxWsProxyFactoryBean();
76 jaxWsProxyFactory.setServiceClass(MsoRequestsDbAdapter.class);
77 jaxWsProxyFactory.setAddress("http://localhost:" + port + "/services/RequestsDbAdapter");
78 jaxWsProxyFactory.setUsername("bpel");
79 jaxWsProxyFactory.setPassword("mso-db-1507!");
80 dbAdapter = (MsoRequestsDbAdapter) jaxWsProxyFactory.create();
82 InfraActiveRequests testRequest = this.buildTestRequest();
84 dbAdapter.updateInfraRequest(testRequest.getRequestId(), testRequest.getLastModifiedBy(),
85 testRequest.getStatusMessage(), testRequest.getResponseBody(),
86 RequestStatusType.valueOf(testRequest.getRequestStatus()), testRequest.getProgress().toString(),
87 testRequest.getVnfOutputs(), testRequest.getServiceInstanceId(), testRequest.getNetworkId(),
88 testRequest.getVnfId(), testRequest.getVfModuleId(), testRequest.getVolumeGroupId(),
89 testRequest.getServiceInstanceName(), testRequest.getConfigurationId(),
90 testRequest.getConfigurationName(), testRequest.getVfModuleName());
95 private InfraActiveRequests buildTestRequest() {
96 InfraActiveRequests testRequest = new InfraActiveRequests();
97 testRequest.setRequestId("00032ab7-3fb3-42e5-965d-8ea592502017");
98 testRequest.setRequestStatus("COMPLETE");
99 testRequest.setStatusMessage("Vf Module has been deleted successfully.");
100 testRequest.setProgress((long) 100);
101 testRequest.setSource("VID");
102 testRequest.setTenantId("6accefef3cb442ff9e644d589fb04107");
103 testRequest.setServiceInstanceId("e3b5744d-2ad1-4cdd-8390-c999a38829bc");
104 testRequest.setRequestAction("deleteInstance");
105 testRequest.setRequestScope("vfModule");
106 testRequest.setCloudRegion("mtn6");
107 testRequest.setLastModifiedBy("BPMN");
108 testRequest.setVfModuleId("c7d527b1-7a91-49fd-b97d-1c8c0f4a7992");
109 testRequest.setVfModuleModelName("vSAMP10aDEV::base::module-0");
110 testRequest.setVnfId("b92f60c8-8de3-46c1-8dc1-e4390ac2b005");
111 testRequest.setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");
112 testRequest.setVolumeGroupId("volumeGroupId");
113 testRequest.setServiceInstanceName("serviceInstanceName");
114 testRequest.setConfigurationId("configurationId");
115 testRequest.setConfigurationName("configurationName");
116 testRequest.setNetworkId("networkId");
117 testRequest.setResponseBody("responseBody");
118 testRequest.setVfModuleName("vfModuleName");
119 testRequest.setVnfOutputs("vnfOutputs");
124 public void getByRequestId() throws MsoRequestsDbException {
126 InfraActiveRequests testRequest = setupTestEntities();
128 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
131 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
132 if (infraRequest == null)
133 fail("Null infraRequest");
136 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
137 .ignoring("startTime").ignoring("modifyTime"));
142 public void getByInvalidRequestId() throws MsoRequestsDbException {
144 String requestId = "invalidRequestId";
147 dbAdapter.getInfraRequest(requestId);
148 fail("Expected MsoRequestsDbException to be thrown");
149 } catch (Exception e) {
150 assertEquals(e.getMessage(), "Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
155 public void updateInfraRequest() throws MsoRequestsDbException {
156 InfraActiveRequests testRequest = setupTestEntities();
158 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
162 String lastModifiedBy = "UNIT TEST";
163 String statusMessage = "TESTING THE UDPATES";
164 String progress = "50";
165 String vnfOutputs = "VNF OUTPUTS";
166 String networkId = "New NetworkID";
167 String vnfId = "NEWVNFID";
168 String volumeGroupId = "NewVolumeGroupId";
169 String serviceInstanceName = "NewServiceInstanceName";
170 String configurationId = "NewConfigurationId";
171 String configurationName = "NewConfigurationName";
172 String vfModuleName = "VFModuleName";
173 RequestStatusType requestStatus = RequestStatusType.COMPLETE;
174 String responseBody = "NewResponseBody";
175 String vfModuleId = "NEW VF MODULEID";
176 String serviceInstanceId = " new serv ind";
179 testRequest.setVolumeGroupId(volumeGroupId);
180 testRequest.setServiceInstanceName(serviceInstanceName);
181 testRequest.setConfigurationId(configurationId);
182 testRequest.setConfigurationName(configurationName);
183 testRequest.setNetworkId(networkId);
184 testRequest.setResponseBody(responseBody);
185 testRequest.setStatusMessage(statusMessage);
186 testRequest.setProgress((long) 50);
187 testRequest.setServiceInstanceId(lastModifiedBy);
188 testRequest.setLastModifiedBy(lastModifiedBy);
189 testRequest.setVfModuleId(vfModuleId);
190 testRequest.setVfModuleName(vfModuleName);
191 testRequest.setVnfId(vnfId);
192 testRequest.setServiceInstanceId(serviceInstanceId);
193 testRequest.setVfModuleName(vfModuleName);
194 testRequest.setVnfOutputs(vnfOutputs);
197 dbAdapter.updateInfraRequest(testRequest.getRequestId(), lastModifiedBy, statusMessage, responseBody,
198 requestStatus, progress, vnfOutputs, serviceInstanceId, networkId, vnfId, vfModuleId, volumeGroupId,
199 serviceInstanceName, configurationId, configurationName, vfModuleName);
200 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
202 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
203 .ignoring("startTime").ignoring("modifyTime"));
209 public void UpdateByInvalidRequestId() throws MsoRequestsDbException {
211 String requestId = "invalidRequestId";
214 dbAdapter.updateInfraRequest(requestId, null, null, null, null, null, null, null, null, null, null, null,
215 null, null, null, null);
216 fail("Expected MsoRequestsDbException to be thrown");
217 } catch (Exception e) {
218 assertEquals(e.getMessage(), "Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
224 public void updateInfraRequestNulls() throws MsoRequestsDbException {
225 InfraActiveRequests testRequest = setupTestEntities();
227 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
230 dbAdapter.updateInfraRequest(testRequest.getRequestId(), testRequest.getLastModifiedBy(), null, null, null,
231 null, null, null, null, null, null, null, null, null, null, null);
232 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
234 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
235 .ignoring("startTime").ignoring("modifyTime"));
239 public void getSiteStatusNotDisabled() throws MsoRequestsDbException {
242 String siteName = "siteName";
245 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
248 assertEquals(siteDisabled, true);
252 public void getSiteStatusDisabled() throws MsoRequestsDbException {
255 String siteName = "testSite";
258 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
261 assertEquals(siteDisabled, false);
265 public void setInstanceNfvoMappingRepository() throws MsoRequestsDbException {
266 InstanceNfvoMapping instanceNfvoMapping = new InstanceNfvoMapping();
267 String instanceId = "9b9f02c0-298b-458a-bc9c-be3692e4f354";
268 String nfvoName = "testNFVO";
269 String endpoint = "http://127.0.0.1:80/";
270 String username = "admin";
271 String password = "admin";
272 String apiRoot = "v1";
274 instanceNfvoMapping.setApiRoot(apiRoot);
275 instanceNfvoMapping.setEndpoint(endpoint);
276 instanceNfvoMapping.setInstanceId(instanceId);
277 instanceNfvoMapping.setNfvoName(nfvoName);
278 instanceNfvoMapping.setUsername(username);
279 instanceNfvoMapping.setPassword(password);
281 dbAdapter.setInstanceNfvoMappingRepository(instanceId, nfvoName, endpoint, username, password, apiRoot);
282 InstanceNfvoMapping dbInstNfvoMap = dbAdapter.getInstanceNfvoMapping(instanceId);
283 assertThat(dbInstNfvoMap, sameBeanAs(instanceNfvoMapping));
288 public void updateServiceOperation() throws MsoRequestsDbException {
289 String serviceId = "serviceid";
290 String operationId = "operationid";
291 String serviceName = "servicename";
292 String operation = "newOperationType";
293 String userId = "NewUserId";
294 String result = "NewResult";
295 String operationContent = "newOperationContent";
296 String progress = "Newprogress";
297 String reason = "NewReason";
299 OperationStatus updatedOperationStatus = new OperationStatus();
303 updatedOperationStatus.setServiceId(serviceId);
304 updatedOperationStatus.setServiceName(serviceName);
305 updatedOperationStatus.setOperationId(operationId);
306 updatedOperationStatus.setOperation(operation);
307 updatedOperationStatus.setUserId(userId);
308 updatedOperationStatus.setResult(result);
309 updatedOperationStatus.setProgress(progress);
310 updatedOperationStatus.setReason(reason);
311 updatedOperationStatus.setOperationContent(operationContent);
313 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
315 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
316 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
321 public void updateServiceOperation_Not_Found() throws MsoRequestsDbException {
322 TestAppender.events.clear();
323 String serviceId = "badserviceId";
324 String operationId = "operationid";
325 String operation = "newOperationType";
326 String userId = "NewUserId";
327 String result = "NewResult";
328 String operationContent = "newOperationContent";
329 String progress = "Newprogress";
330 String reason = "NewReason";
332 OperationStatus updatedOperationStatus = new OperationStatus();
336 updatedOperationStatus.setServiceId(serviceId);
337 updatedOperationStatus.setOperationId(operationId);
338 updatedOperationStatus.setOperation(operation);
339 updatedOperationStatus.setUserId(userId);
340 updatedOperationStatus.setResult(result);
341 updatedOperationStatus.setProgress(progress);
342 updatedOperationStatus.setReason(reason);
343 updatedOperationStatus.setOperationContent(operationContent);
345 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
347 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
348 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
352 public void initResourceOperationStatus() throws MsoRequestsDbException {
353 String resourceTemplateUUIDs = "template1:template2:template3:";
354 String serviceId = "serviceId";
355 String operationId = "operationId";
356 String operationType = "operationType";
358 ResourceOperationStatus resource1 = new ResourceOperationStatus();
359 resource1.setOperationId(operationId);
360 resource1.setServiceId(serviceId);
361 resource1.setResourceTemplateUUID("template1");
362 resource1.setOperType(operationType);
363 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
364 resource1.setStatusDescription("Waiting for start");
366 ResourceOperationStatus resource2 = new ResourceOperationStatus();
367 resource2.setOperationId(operationId);
368 resource2.setServiceId(serviceId);
369 resource2.setResourceTemplateUUID("template2");
370 resource2.setOperType(operationType);
371 resource2.setStatus(RequestsDbConstant.Status.PROCESSING);
372 resource2.setStatusDescription("Waiting for start");
374 ResourceOperationStatus resource3 = new ResourceOperationStatus();
375 resource3.setOperationId(operationId);
376 resource3.setServiceId(serviceId);
377 resource3.setResourceTemplateUUID("template3");
378 resource3.setOperType(operationType);
379 resource3.setStatus(RequestsDbConstant.Status.PROCESSING);
380 resource3.setStatusDescription("Waiting for start");
382 List<ResourceOperationStatus> expectedResult = new ArrayList<ResourceOperationStatus>();
383 expectedResult.add(resource1);
384 expectedResult.add(resource2);
385 expectedResult.add(resource3);
387 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
388 List<ResourceOperationStatus> testList =
389 resourceOperationStatusRepo.findByServiceIdAndOperationId(serviceId, operationId);
390 assertThat(testList, sameBeanAs(expectedResult));
394 public void getResourceOperationStatus() throws MsoRequestsDbException {
395 String resourceTemplateUUIDs = "template1";
396 String serviceId = "serviceId";
397 String operationId = "operationId";
398 String operationType = "operationType";
400 ResourceOperationStatus resource1 = new ResourceOperationStatus();
401 resource1.setOperationId(operationId);
402 resource1.setServiceId(serviceId);
403 resource1.setResourceTemplateUUID("template1");
404 resource1.setOperType(operationType);
405 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
406 resource1.setStatusDescription("Waiting for start");
409 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
411 ResourceOperationStatus actualResource =
412 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
413 assertThat(actualResource, sameBeanAs(resource1));
417 public void updateResourceOperationStatus() throws MsoRequestsDbException {
418 TestAppender.events.clear();
419 String resourceTemplateUUID = "template1";
420 String serviceId = "serviceId";
421 String operationId = "operationId";
422 String operationType = "operationType";
423 String resourceInstanceID = "resourceInstanceID";
424 String jobId = "jobId";
425 String status = RequestsDbConstant.Status.FINISHED;
426 String progress = "50";
427 String errorCode = "errorCode";
428 String statusDescription = "statusDescription";
431 ResourceOperationStatus expectedResource = new ResourceOperationStatus();
432 expectedResource.setOperationId(operationId);
433 expectedResource.setServiceId(serviceId);
434 expectedResource.setResourceTemplateUUID(resourceTemplateUUID);
435 expectedResource.setOperType(operationType);
436 expectedResource.setJobId(jobId);
437 expectedResource.setErrorCode(errorCode);
438 expectedResource.setStatus(RequestsDbConstant.Status.FINISHED);
439 expectedResource.setStatusDescription(statusDescription);
440 expectedResource.setProgress(progress);
441 expectedResource.setResourceInstanceID(resourceInstanceID);
444 dbAdapter.updateResourceOperationStatus(serviceId, operationId, resourceTemplateUUID, operationType,
445 resourceInstanceID, jobId, status, progress, errorCode, statusDescription);
447 ResourceOperationStatus actualResource =
448 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
449 assertThat(actualResource, sameBeanAs(expectedResource));