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;
28 import java.util.ArrayList;
29 import java.util.List;
31 import org.junit.Rule;
32 import org.junit.Test;
33 import org.junit.rules.ExpectedException;
34 import org.junit.runner.RunWith;
35 import org.onap.so.adapters.requestsdb.MsoRequestsDbAdapter;
36 import org.onap.so.adapters.requestsdb.RequestStatusType;
37 import org.onap.so.adapters.requestsdb.application.MSORequestDBApplication;
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.data.repository.OperationStatusRepository;
43 import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
44 import org.onap.so.requestsdb.RequestsDbConstant;
45 import org.springframework.beans.factory.annotation.Autowired;
46 import org.springframework.boot.context.embedded.LocalServerPort;
47 import org.springframework.boot.test.context.SpringBootTest;
48 import org.springframework.test.context.ActiveProfiles;
49 import org.springframework.test.context.junit4.SpringRunner;
51 @RunWith(SpringRunner.class)
52 @SpringBootTest(classes = MSORequestDBApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
53 @ActiveProfiles("test")
54 public class MSORequestDBImplTest {
60 private MsoRequestsDbAdapter dbAdapter;
63 private OperationStatusRepository operationStatusRepository;
66 private ResourceOperationStatusRepository resourceOperationStatusRepo;
69 public ExpectedException thrown = ExpectedException.none();
71 public InfraActiveRequests setupTestEntities() {
72 return buildTestRequest();
75 private InfraActiveRequests buildTestRequest() {
76 InfraActiveRequests testRequest= new InfraActiveRequests();
77 testRequest.setRequestId("00032ab7-3fb3-42e5-965d-8ea592502017");
78 testRequest.setClientRequestId("00032ab7-3fb3-42e5-965d-8ea592502016");
79 testRequest.setRequestStatus("COMPLETE");
80 testRequest.setStatusMessage("Vf Module has been deleted successfully.");
81 testRequest.setProgress((long) 100);
82 testRequest.setSource("VID");
83 testRequest.setTenantId("6accefef3cb442ff9e644d589fb04107");
84 testRequest.setServiceInstanceId("e3b5744d-2ad1-4cdd-8390-c999a38829bc");
85 testRequest.setRequestAction("deleteInstance");
86 testRequest.setRequestScope("vfModule");
87 testRequest.setAction("deleteInstance");
88 testRequest.setAicCloudRegion("mtn6");
89 testRequest.setLastModifiedBy("BPMN");
90 testRequest.setVfModuleId("c7d527b1-7a91-49fd-b97d-1c8c0f4a7992");
91 testRequest.setVfModuleModelName("vSAMP10aDEV::base::module-0");
92 testRequest.setVnfId("b92f60c8-8de3-46c1-8dc1-e4390ac2b005");
101 public void getByRequestId() throws MsoRequestsDbException {
102 InfraActiveRequests testRequest = setupTestEntities();
104 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
107 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
108 if(infraRequest ==null)
109 fail("Null infraRequest");
112 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));
117 public void getByInvalidRequestId() throws MsoRequestsDbException {
119 String requestId = "invalidRequestId";
122 dbAdapter.getInfraRequest(requestId);
123 fail("Expected MsoRequestsDbException to be thrown");
124 } catch (MsoRequestsDbException e) {
125 assertEquals(e.getMessage(),"Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
126 } catch (Exception e) {
127 fail("Expected MsoRequestsDbException to be thrown, unknown exception thrown");
132 public void getByClientRequestId() throws MsoRequestsDbException {
133 InfraActiveRequests testRequest = setupTestEntities();
135 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
138 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
139 if(infraRequest ==null)
140 fail("Null infraRequest");
143 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));
148 public void updateInfraRequest() throws MsoRequestsDbException {
149 InfraActiveRequests testRequest = setupTestEntities();
151 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
155 String lastModifiedBy = "UNIT TEST";
156 String statusMessage = "TESTING THE UDPATES";
157 String progress = "50";
158 String vnfOutputs = "VNF OUTPUTS";
159 String networkId = "New NetworkID";
160 String vnfId = "NEWVNFID";
161 String volumeGroupId = "NewVolumeGroupId";
162 String serviceInstanceName = "NewServiceInstanceName";
163 String configurationId = "NewConfigurationId";
164 String configurationName = "NewConfigurationName";
165 String vfModuleName = "VFModuleName";
166 RequestStatusType requestStatus = RequestStatusType.COMPLETE ;
167 String responseBody = "NewResponseBody";
168 String vfModuleId = "NEW VF MODULEID";
169 String serviceInstanceId = " new serv ind";
172 testRequest.setVolumeGroupId(volumeGroupId);
173 testRequest.setServiceInstanceName(serviceInstanceName);
174 testRequest.setConfigurationId(configurationId);
175 testRequest.setConfigurationName(configurationName);
176 testRequest.setNetworkId(networkId);
177 testRequest.setResponseBody(responseBody);
178 testRequest.setStatusMessage(statusMessage);
179 testRequest.setProgress((long) 50);
180 testRequest.setServiceInstanceId(lastModifiedBy);
181 testRequest.setLastModifiedBy(lastModifiedBy);
182 testRequest.setVfModuleId(vfModuleId);
183 testRequest.setVfModuleName(vfModuleName);
184 testRequest.setVnfId(vnfId);
185 testRequest.setServiceInstanceId(serviceInstanceId);
186 testRequest.setVfModuleName(vfModuleName);
187 testRequest.setVnfOutputs(vnfOutputs);
190 dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
206 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
208 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));
212 public void UpdateByInvalidRequestId() throws MsoRequestsDbException {
214 String requestId = "invalidRequestId";
217 dbAdapter.updateInfraRequest ( requestId,
233 fail("Expected MsoRequestsDbException to be thrown");
234 } catch (MsoRequestsDbException e) {
235 assertEquals(e.getMessage(),"Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
236 } catch (Exception e) {
237 fail("Expected MsoRequestsDbException to be thrown, unknown exception thrown");
243 public void updateInfraRequestNulls() throws MsoRequestsDbException {
244 InfraActiveRequests testRequest = setupTestEntities();
246 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
249 dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
250 testRequest.getLastModifiedBy(),
265 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
267 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));
271 public void getSiteStatusNotDisabled() throws MsoRequestsDbException {
274 String siteName = "siteName";
277 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
280 assertEquals(siteDisabled, true);
284 public void getSiteStatusDisabled() throws MsoRequestsDbException {
287 String siteName = "testSite";
290 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
293 assertEquals(siteDisabled, false);
297 public void updateServiceOperation() throws MsoRequestsDbException{
298 String serviceId = "serviceid";
299 String operationId = "operationid";
300 String serviceName = "servicename";
301 String operation = "newOperationType";
302 String userId = "NewUserId";
303 String result = "NewResult";
304 String operationContent = "newOperationContent";
305 String progress = "Newprogress";
306 String reason = "NewReason";
308 OperationStatus updatedOperationStatus = new OperationStatus();
312 updatedOperationStatus.setServiceId(serviceId);
313 updatedOperationStatus.setServiceName(serviceName);
314 updatedOperationStatus.setOperationId(operationId);
315 updatedOperationStatus.setOperation(operation);
316 updatedOperationStatus.setUserId(userId);
317 updatedOperationStatus.setResult(result);
318 updatedOperationStatus.setProgress(progress);
319 updatedOperationStatus.setReason(reason);
320 updatedOperationStatus.setOperationContent(operationContent);
322 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId,
323 result, operationContent, progress, reason);
324 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId,operationId);
325 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
330 public void updateServiceOperation_Not_Found() throws MsoRequestsDbException{
331 String serviceId = "badserviceId";
332 String operationId = "operationid";
333 String operation = "newOperationType";
334 String userId = "NewUserId";
335 String result = "NewResult";
336 String operationContent = "newOperationContent";
337 String progress = "Newprogress";
338 String reason = "NewReason";
340 OperationStatus updatedOperationStatus = new OperationStatus();
344 updatedOperationStatus.setServiceId(serviceId);
345 updatedOperationStatus.setOperationId(operationId);
346 updatedOperationStatus.setOperation(operation);
347 updatedOperationStatus.setUserId(userId);
348 updatedOperationStatus.setResult(result);
349 updatedOperationStatus.setProgress(progress);
350 updatedOperationStatus.setReason(reason);
351 updatedOperationStatus.setOperationContent(operationContent);
353 thrown.expect(MsoRequestsDbException.class);
354 thrown.expectMessage("Unable to retrieve OperationStatus Object ServiceId: " + serviceId + " operationId: " + operationId);
356 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId,
357 result, operationContent, progress, reason);
362 public void initResourceOperationStatus() throws MsoRequestsDbException{
363 String resourceTemplateUUIDs = "template1:template2:template3:";
364 String serviceId = "serviceId";
365 String operationId = "operationId";
366 String operationType = "operationType";
368 ResourceOperationStatus resource1 = new ResourceOperationStatus();
369 resource1.setOperationId(operationId);
370 resource1.setServiceId(serviceId);
371 resource1.setResourceTemplateUUID("template1");
372 resource1.setOperType(operationType);
373 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
374 resource1.setStatusDescription("Waiting for start");
376 ResourceOperationStatus resource2 = new ResourceOperationStatus();
377 resource2.setOperationId(operationId);
378 resource2.setServiceId(serviceId);
379 resource2.setResourceTemplateUUID("template2");
380 resource2.setOperType(operationType);
381 resource2.setStatus(RequestsDbConstant.Status.PROCESSING);
382 resource2.setStatusDescription("Waiting for start");
384 ResourceOperationStatus resource3 = new ResourceOperationStatus();
385 resource3.setOperationId(operationId);
386 resource3.setServiceId(serviceId);
387 resource3.setResourceTemplateUUID("template3");
388 resource3.setOperType(operationType);
389 resource3.setStatus(RequestsDbConstant.Status.PROCESSING);
390 resource3.setStatusDescription("Waiting for start");
392 List<ResourceOperationStatus> expectedResult = new ArrayList<ResourceOperationStatus>();
393 expectedResult.add(resource1);
394 expectedResult.add(resource2);
395 expectedResult.add(resource3);
397 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType,resourceTemplateUUIDs);
398 List<ResourceOperationStatus> testList = resourceOperationStatusRepo.findByServiceIdAndOperationId(serviceId,operationId);
399 assertThat(testList, sameBeanAs(expectedResult));
403 public void getResourceOperationStatus() throws MsoRequestsDbException{
404 String resourceTemplateUUIDs = "template1";
405 String serviceId = "serviceId";
406 String operationId = "operationId";
407 String operationType = "operationType";
409 ResourceOperationStatus resource1 = new ResourceOperationStatus();
410 resource1.setOperationId(operationId);
411 resource1.setServiceId(serviceId);
412 resource1.setResourceTemplateUUID("template1");
413 resource1.setOperType(operationType);
414 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
415 resource1.setStatusDescription("Waiting for start");
418 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType,resourceTemplateUUIDs);
420 ResourceOperationStatus actualResource = dbAdapter.getResourceOperationStatus(serviceId, operationId,"template1");
421 assertThat(actualResource, sameBeanAs(resource1));
425 public void updateResourceOperationStatus() throws MsoRequestsDbException{
426 String resourceTemplateUUID = "template1";
427 String serviceId = "serviceId";
428 String operationId = "operationId";
429 String operationType = "operationType";
430 String resourceInstanceID = "resourceInstanceID";
431 String jobId = "jobId";
432 String status = RequestsDbConstant.Status.FINISHED;
433 String progress = "50";
434 String errorCode = "errorCode";
435 String statusDescription = "statusDescription";
438 ResourceOperationStatus expectedResource = new ResourceOperationStatus();
439 expectedResource.setOperationId(operationId);
440 expectedResource.setServiceId(serviceId);
441 expectedResource.setResourceTemplateUUID(resourceTemplateUUID);
442 expectedResource.setOperType(operationType);
443 expectedResource.setJobId(jobId);
444 expectedResource.setErrorCode(errorCode);
445 expectedResource.setStatus(RequestsDbConstant.Status.FINISHED);
446 expectedResource.setStatusDescription(statusDescription);
447 expectedResource.setProgress(progress);
448 expectedResource.setResourceInstanceID(resourceInstanceID);
451 dbAdapter.updateResourceOperationStatus(serviceId, operationId, resourceTemplateUUID,
452 operationType, resourceInstanceID, jobId, status, progress,
453 errorCode, statusDescription);
455 ResourceOperationStatus actualResource = dbAdapter.getResourceOperationStatus(serviceId, operationId,"template1");
456 assertThat(actualResource, sameBeanAs(expectedResource));