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.assertNotNull;
27 import static org.junit.Assert.fail;
29 import java.util.ArrayList;
30 import java.util.List;
32 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
33 import org.junit.Before;
34 import org.junit.Rule;
35 import org.junit.Test;
36 import org.junit.rules.ExpectedException;
37 import org.junit.runner.RunWith;
38 import org.onap.so.adapters.requestsdb.application.TestAppender;
39 import org.onap.logging.ref.slf4j.ONAPLogConstants;
40 import org.onap.so.adapters.requestsdb.MsoRequestsDbAdapter;
41 import org.onap.so.adapters.requestsdb.RequestStatusType;
42 import org.onap.so.adapters.requestsdb.application.MSORequestDBApplication;
43 import org.onap.so.adapters.requestsdb.exceptions.MsoRequestsDbException;
44 import org.onap.so.db.request.beans.InfraActiveRequests;
45 import org.onap.so.db.request.beans.OperationStatus;
46 import org.onap.so.db.request.beans.ResourceOperationStatus;
47 import org.onap.so.db.request.data.repository.OperationStatusRepository;
48 import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
49 import org.onap.so.logger.MsoLogger;
50 import org.onap.so.requestsdb.RequestsDbConstant;
51 import org.springframework.beans.factory.annotation.Autowired;
52 import org.springframework.beans.factory.annotation.Qualifier;
53 import org.springframework.boot.web.server.LocalServerPort;
54 import org.springframework.boot.test.context.SpringBootTest;
55 import org.springframework.context.annotation.Bean;
56 import org.springframework.test.context.ActiveProfiles;
57 import org.springframework.test.context.ContextConfiguration;
58 import org.springframework.test.context.junit4.SpringRunner;
59 import ch.qos.logback.classic.spi.ILoggingEvent;
61 @RunWith(SpringRunner.class)
62 @SpringBootTest(classes = MSORequestDBApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
63 @ActiveProfiles("test")
64 public class MSORequestDBImplTest {
69 private MsoRequestsDbAdapter dbAdapter;
72 private OperationStatusRepository operationStatusRepository;
75 private ResourceOperationStatusRepository resourceOperationStatusRepo;
78 public ExpectedException thrown = ExpectedException.none();
80 public InfraActiveRequests setupTestEntities() {
81 return buildTestRequest();
86 JaxWsProxyFactoryBean jaxWsProxyFactory = new JaxWsProxyFactoryBean();
87 jaxWsProxyFactory.setServiceClass(MsoRequestsDbAdapter.class);
88 jaxWsProxyFactory.setAddress("http://localhost:" + port + "/services/RequestsDbAdapter");
89 jaxWsProxyFactory.setUsername("bpel");
90 jaxWsProxyFactory.setPassword("mso-db-1507!");
91 dbAdapter = (MsoRequestsDbAdapter) jaxWsProxyFactory.create();
94 private InfraActiveRequests buildTestRequest() {
95 InfraActiveRequests testRequest= new InfraActiveRequests();
96 testRequest.setRequestId("00032ab7-3fb3-42e5-965d-8ea592502017");
97 testRequest.setClientRequestId("00032ab7-3fb3-42e5-965d-8ea592502016");
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.setAction("deleteInstance");
107 testRequest.setAicCloudRegion("mtn6");
108 testRequest.setLastModifiedBy("BPMN");
109 testRequest.setVfModuleId("c7d527b1-7a91-49fd-b97d-1c8c0f4a7992");
110 testRequest.setVfModuleModelName("vSAMP10aDEV::base::module-0");
111 testRequest.setVnfId("b92f60c8-8de3-46c1-8dc1-e4390ac2b005");
112 testRequest.setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");
118 public void getByRequestId() throws MsoRequestsDbException {
120 InfraActiveRequests testRequest = setupTestEntities();
122 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
125 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
126 if(infraRequest ==null)
127 fail("Null infraRequest");
130 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));
135 public void getByInvalidRequestId() throws MsoRequestsDbException {
137 String requestId = "invalidRequestId";
140 dbAdapter.getInfraRequest(requestId);
141 fail("Expected MsoRequestsDbException to be thrown");
142 } catch (Exception e) {
143 assertEquals(e.getMessage(),"Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
148 public void getByClientRequestId() throws MsoRequestsDbException {
149 InfraActiveRequests testRequest = setupTestEntities();
151 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
154 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
155 if(infraRequest ==null)
156 fail("Null infraRequest");
159 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));
164 public void updateInfraRequest() throws MsoRequestsDbException {
165 InfraActiveRequests testRequest = setupTestEntities();
167 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
171 String lastModifiedBy = "UNIT TEST";
172 String statusMessage = "TESTING THE UDPATES";
173 String progress = "50";
174 String vnfOutputs = "VNF OUTPUTS";
175 String networkId = "New NetworkID";
176 String vnfId = "NEWVNFID";
177 String volumeGroupId = "NewVolumeGroupId";
178 String serviceInstanceName = "NewServiceInstanceName";
179 String configurationId = "NewConfigurationId";
180 String configurationName = "NewConfigurationName";
181 String vfModuleName = "VFModuleName";
182 RequestStatusType requestStatus = RequestStatusType.COMPLETE ;
183 String responseBody = "NewResponseBody";
184 String vfModuleId = "NEW VF MODULEID";
185 String serviceInstanceId = " new serv ind";
188 testRequest.setVolumeGroupId(volumeGroupId);
189 testRequest.setServiceInstanceName(serviceInstanceName);
190 testRequest.setConfigurationId(configurationId);
191 testRequest.setConfigurationName(configurationName);
192 testRequest.setNetworkId(networkId);
193 testRequest.setResponseBody(responseBody);
194 testRequest.setStatusMessage(statusMessage);
195 testRequest.setProgress((long) 50);
196 testRequest.setServiceInstanceId(lastModifiedBy);
197 testRequest.setLastModifiedBy(lastModifiedBy);
198 testRequest.setVfModuleId(vfModuleId);
199 testRequest.setVfModuleName(vfModuleName);
200 testRequest.setVnfId(vnfId);
201 testRequest.setServiceInstanceId(serviceInstanceId);
202 testRequest.setVfModuleName(vfModuleName);
203 testRequest.setVnfOutputs(vnfOutputs);
206 dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
222 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
224 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));
228 public void UpdateByInvalidRequestId() throws MsoRequestsDbException {
230 String requestId = "invalidRequestId";
233 dbAdapter.updateInfraRequest ( requestId,
249 fail("Expected MsoRequestsDbException to be thrown");
250 } catch (Exception e) {
251 assertEquals(e.getMessage(),"Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
257 public void updateInfraRequestNulls() throws MsoRequestsDbException {
258 InfraActiveRequests testRequest = setupTestEntities();
260 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
263 dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
264 testRequest.getLastModifiedBy(),
279 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
281 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));
285 public void getSiteStatusNotDisabled() throws MsoRequestsDbException {
288 String siteName = "siteName";
291 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
294 assertEquals(siteDisabled, true);
298 public void getSiteStatusDisabled() throws MsoRequestsDbException {
301 String siteName = "testSite";
304 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
307 assertEquals(siteDisabled, false);
311 public void updateServiceOperation() throws MsoRequestsDbException{
312 String serviceId = "serviceid";
313 String operationId = "operationid";
314 String serviceName = "servicename";
315 String operation = "newOperationType";
316 String userId = "NewUserId";
317 String result = "NewResult";
318 String operationContent = "newOperationContent";
319 String progress = "Newprogress";
320 String reason = "NewReason";
322 OperationStatus updatedOperationStatus = new OperationStatus();
326 updatedOperationStatus.setServiceId(serviceId);
327 updatedOperationStatus.setServiceName(serviceName);
328 updatedOperationStatus.setOperationId(operationId);
329 updatedOperationStatus.setOperation(operation);
330 updatedOperationStatus.setUserId(userId);
331 updatedOperationStatus.setResult(result);
332 updatedOperationStatus.setProgress(progress);
333 updatedOperationStatus.setReason(reason);
334 updatedOperationStatus.setOperationContent(operationContent);
336 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId,
337 result, operationContent, progress, reason);
338 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId,operationId);
339 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
344 public void updateServiceOperation_Not_Found() throws MsoRequestsDbException{
345 TestAppender.events.clear();
346 String serviceId = "badserviceId";
347 String operationId = "operationid";
348 String operation = "newOperationType";
349 String userId = "NewUserId";
350 String result = "NewResult";
351 String operationContent = "newOperationContent";
352 String progress = "Newprogress";
353 String reason = "NewReason";
355 OperationStatus updatedOperationStatus = new OperationStatus();
359 updatedOperationStatus.setServiceId(serviceId);
360 updatedOperationStatus.setOperationId(operationId);
361 updatedOperationStatus.setOperation(operation);
362 updatedOperationStatus.setUserId(userId);
363 updatedOperationStatus.setResult(result);
364 updatedOperationStatus.setProgress(progress);
365 updatedOperationStatus.setReason(reason);
366 updatedOperationStatus.setOperationContent(operationContent);
368 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId,
369 result, operationContent, progress, reason);
370 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId,operationId);
371 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
375 public void initResourceOperationStatus() throws MsoRequestsDbException{
376 String resourceTemplateUUIDs = "template1:template2:template3:";
377 String serviceId = "serviceId";
378 String operationId = "operationId";
379 String operationType = "operationType";
381 ResourceOperationStatus resource1 = new ResourceOperationStatus();
382 resource1.setOperationId(operationId);
383 resource1.setServiceId(serviceId);
384 resource1.setResourceTemplateUUID("template1");
385 resource1.setOperType(operationType);
386 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
387 resource1.setStatusDescription("Waiting for start");
389 ResourceOperationStatus resource2 = new ResourceOperationStatus();
390 resource2.setOperationId(operationId);
391 resource2.setServiceId(serviceId);
392 resource2.setResourceTemplateUUID("template2");
393 resource2.setOperType(operationType);
394 resource2.setStatus(RequestsDbConstant.Status.PROCESSING);
395 resource2.setStatusDescription("Waiting for start");
397 ResourceOperationStatus resource3 = new ResourceOperationStatus();
398 resource3.setOperationId(operationId);
399 resource3.setServiceId(serviceId);
400 resource3.setResourceTemplateUUID("template3");
401 resource3.setOperType(operationType);
402 resource3.setStatus(RequestsDbConstant.Status.PROCESSING);
403 resource3.setStatusDescription("Waiting for start");
405 List<ResourceOperationStatus> expectedResult = new ArrayList<ResourceOperationStatus>();
406 expectedResult.add(resource1);
407 expectedResult.add(resource2);
408 expectedResult.add(resource3);
410 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType,resourceTemplateUUIDs);
411 List<ResourceOperationStatus> testList = resourceOperationStatusRepo.findByServiceIdAndOperationId(serviceId,operationId);
412 assertThat(testList, sameBeanAs(expectedResult));
416 public void getResourceOperationStatus() throws MsoRequestsDbException{
417 String resourceTemplateUUIDs = "template1";
418 String serviceId = "serviceId";
419 String operationId = "operationId";
420 String operationType = "operationType";
422 ResourceOperationStatus resource1 = new ResourceOperationStatus();
423 resource1.setOperationId(operationId);
424 resource1.setServiceId(serviceId);
425 resource1.setResourceTemplateUUID("template1");
426 resource1.setOperType(operationType);
427 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
428 resource1.setStatusDescription("Waiting for start");
431 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType,resourceTemplateUUIDs);
433 ResourceOperationStatus actualResource = dbAdapter.getResourceOperationStatus(serviceId, operationId,"template1");
434 assertThat(actualResource, sameBeanAs(resource1));
438 public void updateResourceOperationStatus() throws MsoRequestsDbException{
439 TestAppender.events.clear();
440 String resourceTemplateUUID = "template1";
441 String serviceId = "serviceId";
442 String operationId = "operationId";
443 String operationType = "operationType";
444 String resourceInstanceID = "resourceInstanceID";
445 String jobId = "jobId";
446 String status = RequestsDbConstant.Status.FINISHED;
447 String progress = "50";
448 String errorCode = "errorCode";
449 String statusDescription = "statusDescription";
452 ResourceOperationStatus expectedResource = new ResourceOperationStatus();
453 expectedResource.setOperationId(operationId);
454 expectedResource.setServiceId(serviceId);
455 expectedResource.setResourceTemplateUUID(resourceTemplateUUID);
456 expectedResource.setOperType(operationType);
457 expectedResource.setJobId(jobId);
458 expectedResource.setErrorCode(errorCode);
459 expectedResource.setStatus(RequestsDbConstant.Status.FINISHED);
460 expectedResource.setStatusDescription(statusDescription);
461 expectedResource.setProgress(progress);
462 expectedResource.setResourceInstanceID(resourceInstanceID);
465 dbAdapter.updateResourceOperationStatus(serviceId, operationId, resourceTemplateUUID,
466 operationType, resourceInstanceID, jobId, status, progress,
467 errorCode, statusDescription);
469 ResourceOperationStatus actualResource = dbAdapter.getResourceOperationStatus(serviceId, operationId,"template1");
470 assertThat(actualResource, sameBeanAs(expectedResource));
472 for(ILoggingEvent logEvent : TestAppender.events)
473 if(logEvent.getLoggerName().equals("org.onap.so.logging.cxf.interceptor.SOAPLoggingInInterceptor") &&
474 logEvent.getMarker().getName().equals("ENTRY")
476 Map<String,String> mdc = logEvent.getMDCPropertyMap();
477 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INSTANCE_UUID));
478 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
479 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
480 assertEquals("",mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
481 assertEquals("/services/RequestsDbAdapter",mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
482 assertEquals("INPROGRESS",mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));
483 }else if(logEvent.getLoggerName().equals("org.onap.so.logging.cxf.interceptor.SOAPLoggingOutInterceptor") &&
484 logEvent.getMarker().getName().equals("EXIT")){
485 Map<String,String> mdc = logEvent.getMDCPropertyMap();
486 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
487 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
488 assertEquals(null,mdc.get(ONAPLogConstants.MDCs.RESPONSE_CODE));
489 assertEquals("",mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
490 assertEquals("/services/RequestsDbAdapter",mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
491 assertEquals("COMPLETED",mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));