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;
33 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
34 import org.junit.Before;
35 import org.junit.Rule;
36 import org.junit.Test;
37 import org.junit.rules.ExpectedException;
38 import org.onap.logging.ref.slf4j.ONAPLogConstants;
39 import org.onap.so.adapters.requestsdb.MsoRequestsDbAdapter;
40 import org.onap.so.adapters.requestsdb.RequestStatusType;
41 import org.onap.so.adapters.requestsdb.RequestsAdapterBase;
42 import org.onap.so.adapters.requestsdb.application.TestAppender;
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.requestsdb.RequestsDbConstant;
50 import org.springframework.beans.factory.annotation.Autowired;
51 import org.springframework.boot.web.server.LocalServerPort;
53 import ch.qos.logback.classic.spi.ILoggingEvent;
55 public class MSORequestDBImplTest extends RequestsAdapterBase {
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();
76 public void before() throws MsoRequestsDbException{
77 JaxWsProxyFactoryBean jaxWsProxyFactory = new JaxWsProxyFactoryBean();
78 jaxWsProxyFactory.setServiceClass(MsoRequestsDbAdapter.class);
79 jaxWsProxyFactory.setAddress("http://localhost:" + port + "/services/RequestsDbAdapter");
80 jaxWsProxyFactory.setUsername("bpel");
81 jaxWsProxyFactory.setPassword("mso-db-1507!");
82 dbAdapter = (MsoRequestsDbAdapter) jaxWsProxyFactory.create();
84 InfraActiveRequests testRequest = this.buildTestRequest();
86 dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
87 testRequest.getLastModifiedBy(),
88 testRequest.getStatusMessage(),
89 testRequest.getResponseBody(),
90 RequestStatusType.valueOf(testRequest.getRequestStatus()),
91 testRequest.getProgress().toString(),
92 testRequest.getVnfOutputs(),
93 testRequest.getServiceInstanceId(),
94 testRequest.getNetworkId(),
95 testRequest.getVnfId(),
96 testRequest.getVfModuleId(),
97 testRequest.getVolumeGroupId(),
98 testRequest.getServiceInstanceName(),
99 testRequest.getConfigurationId(),
100 testRequest.getConfigurationName(),
101 testRequest.getVfModuleName());
106 private InfraActiveRequests buildTestRequest() {
107 InfraActiveRequests testRequest= new InfraActiveRequests();
108 testRequest.setRequestId("00032ab7-3fb3-42e5-965d-8ea592502017");
109 testRequest.setClientRequestId("00032ab7-3fb3-42e5-965d-8ea592502016");
110 testRequest.setRequestStatus("COMPLETE");
111 testRequest.setStatusMessage("Vf Module has been deleted successfully.");
112 testRequest.setProgress((long) 100);
113 testRequest.setSource("VID");
114 testRequest.setTenantId("6accefef3cb442ff9e644d589fb04107");
115 testRequest.setServiceInstanceId("e3b5744d-2ad1-4cdd-8390-c999a38829bc");
116 testRequest.setRequestAction("deleteInstance");
117 testRequest.setRequestScope("vfModule");
118 testRequest.setAction("deleteInstance");
119 testRequest.setAicCloudRegion("mtn6");
120 testRequest.setLastModifiedBy("BPMN");
121 testRequest.setVfModuleId("c7d527b1-7a91-49fd-b97d-1c8c0f4a7992");
122 testRequest.setVfModuleModelName("vSAMP10aDEV::base::module-0");
123 testRequest.setVnfId("b92f60c8-8de3-46c1-8dc1-e4390ac2b005");
124 testRequest.setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");
125 testRequest.setVolumeGroupId("volumeGroupId");
126 testRequest.setServiceInstanceName("serviceInstanceName");
127 testRequest.setConfigurationId("configurationId");
128 testRequest.setConfigurationName("configurationName");
129 testRequest.setNetworkId("networkId");
130 testRequest.setResponseBody("responseBody");
131 testRequest.setVfModuleName("vfModuleName");
132 testRequest.setVnfOutputs("vnfOutputs");
137 public void getByRequestId() throws MsoRequestsDbException {
139 InfraActiveRequests testRequest = setupTestEntities();
141 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
144 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
145 if(infraRequest ==null)
146 fail("Null infraRequest");
149 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));
154 public void getByInvalidRequestId() throws MsoRequestsDbException {
156 String requestId = "invalidRequestId";
159 dbAdapter.getInfraRequest(requestId);
160 fail("Expected MsoRequestsDbException to be thrown");
161 } catch (Exception e) {
162 assertEquals(e.getMessage(),"Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
167 public void getByClientRequestId() throws MsoRequestsDbException {
168 InfraActiveRequests testRequest = setupTestEntities();
170 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
173 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
174 if(infraRequest ==null)
175 fail("Null infraRequest");
178 assertEquals(clientRequestId, infraRequest.getClientRequestId());
183 public void updateInfraRequest() throws MsoRequestsDbException {
184 InfraActiveRequests testRequest = setupTestEntities();
186 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
190 String lastModifiedBy = "UNIT TEST";
191 String statusMessage = "TESTING THE UDPATES";
192 String progress = "50";
193 String vnfOutputs = "VNF OUTPUTS";
194 String networkId = "New NetworkID";
195 String vnfId = "NEWVNFID";
196 String volumeGroupId = "NewVolumeGroupId";
197 String serviceInstanceName = "NewServiceInstanceName";
198 String configurationId = "NewConfigurationId";
199 String configurationName = "NewConfigurationName";
200 String vfModuleName = "VFModuleName";
201 RequestStatusType requestStatus = RequestStatusType.COMPLETE ;
202 String responseBody = "NewResponseBody";
203 String vfModuleId = "NEW VF MODULEID";
204 String serviceInstanceId = " new serv ind";
207 testRequest.setVolumeGroupId(volumeGroupId);
208 testRequest.setServiceInstanceName(serviceInstanceName);
209 testRequest.setConfigurationId(configurationId);
210 testRequest.setConfigurationName(configurationName);
211 testRequest.setNetworkId(networkId);
212 testRequest.setResponseBody(responseBody);
213 testRequest.setStatusMessage(statusMessage);
214 testRequest.setProgress((long) 50);
215 testRequest.setServiceInstanceId(lastModifiedBy);
216 testRequest.setLastModifiedBy(lastModifiedBy);
217 testRequest.setVfModuleId(vfModuleId);
218 testRequest.setVfModuleName(vfModuleName);
219 testRequest.setVnfId(vnfId);
220 testRequest.setServiceInstanceId(serviceInstanceId);
221 testRequest.setVfModuleName(vfModuleName);
222 testRequest.setVnfOutputs(vnfOutputs);
225 dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
241 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
243 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));
249 public void UpdateByInvalidRequestId() throws MsoRequestsDbException {
251 String requestId = "invalidRequestId";
254 dbAdapter.updateInfraRequest ( requestId,
270 fail("Expected MsoRequestsDbException to be thrown");
271 } catch (Exception e) {
272 assertEquals(e.getMessage(),"Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
278 public void updateInfraRequestNulls() throws MsoRequestsDbException {
279 InfraActiveRequests testRequest = setupTestEntities();
281 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
284 dbAdapter.updateInfraRequest ( testRequest.getRequestId(),
285 testRequest.getLastModifiedBy(),
300 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
302 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime").ignoring("startTime").ignoring("modifyTime"));
306 public void getSiteStatusNotDisabled() throws MsoRequestsDbException {
309 String siteName = "siteName";
312 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
315 assertEquals(siteDisabled, true);
319 public void getSiteStatusDisabled() throws MsoRequestsDbException {
322 String siteName = "testSite";
325 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
328 assertEquals(siteDisabled, false);
332 public void updateServiceOperation() throws MsoRequestsDbException{
333 String serviceId = "serviceid";
334 String operationId = "operationid";
335 String serviceName = "servicename";
336 String operation = "newOperationType";
337 String userId = "NewUserId";
338 String result = "NewResult";
339 String operationContent = "newOperationContent";
340 String progress = "Newprogress";
341 String reason = "NewReason";
343 OperationStatus updatedOperationStatus = new OperationStatus();
347 updatedOperationStatus.setServiceId(serviceId);
348 updatedOperationStatus.setServiceName(serviceName);
349 updatedOperationStatus.setOperationId(operationId);
350 updatedOperationStatus.setOperation(operation);
351 updatedOperationStatus.setUserId(userId);
352 updatedOperationStatus.setResult(result);
353 updatedOperationStatus.setProgress(progress);
354 updatedOperationStatus.setReason(reason);
355 updatedOperationStatus.setOperationContent(operationContent);
357 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId,
358 result, operationContent, progress, reason);
359 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId,operationId);
360 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
365 public void updateServiceOperation_Not_Found() throws MsoRequestsDbException{
366 TestAppender.events.clear();
367 String serviceId = "badserviceId";
368 String operationId = "operationid";
369 String operation = "newOperationType";
370 String userId = "NewUserId";
371 String result = "NewResult";
372 String operationContent = "newOperationContent";
373 String progress = "Newprogress";
374 String reason = "NewReason";
376 OperationStatus updatedOperationStatus = new OperationStatus();
380 updatedOperationStatus.setServiceId(serviceId);
381 updatedOperationStatus.setOperationId(operationId);
382 updatedOperationStatus.setOperation(operation);
383 updatedOperationStatus.setUserId(userId);
384 updatedOperationStatus.setResult(result);
385 updatedOperationStatus.setProgress(progress);
386 updatedOperationStatus.setReason(reason);
387 updatedOperationStatus.setOperationContent(operationContent);
389 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId,
390 result, operationContent, progress, reason);
391 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId,operationId);
392 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
396 public void initResourceOperationStatus() throws MsoRequestsDbException{
397 String resourceTemplateUUIDs = "template1:template2:template3:";
398 String serviceId = "serviceId";
399 String operationId = "operationId";
400 String operationType = "operationType";
402 ResourceOperationStatus resource1 = new ResourceOperationStatus();
403 resource1.setOperationId(operationId);
404 resource1.setServiceId(serviceId);
405 resource1.setResourceTemplateUUID("template1");
406 resource1.setOperType(operationType);
407 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
408 resource1.setStatusDescription("Waiting for start");
410 ResourceOperationStatus resource2 = new ResourceOperationStatus();
411 resource2.setOperationId(operationId);
412 resource2.setServiceId(serviceId);
413 resource2.setResourceTemplateUUID("template2");
414 resource2.setOperType(operationType);
415 resource2.setStatus(RequestsDbConstant.Status.PROCESSING);
416 resource2.setStatusDescription("Waiting for start");
418 ResourceOperationStatus resource3 = new ResourceOperationStatus();
419 resource3.setOperationId(operationId);
420 resource3.setServiceId(serviceId);
421 resource3.setResourceTemplateUUID("template3");
422 resource3.setOperType(operationType);
423 resource3.setStatus(RequestsDbConstant.Status.PROCESSING);
424 resource3.setStatusDescription("Waiting for start");
426 List<ResourceOperationStatus> expectedResult = new ArrayList<ResourceOperationStatus>();
427 expectedResult.add(resource1);
428 expectedResult.add(resource2);
429 expectedResult.add(resource3);
431 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType,resourceTemplateUUIDs);
432 List<ResourceOperationStatus> testList = resourceOperationStatusRepo.findByServiceIdAndOperationId(serviceId,operationId);
433 assertThat(testList, sameBeanAs(expectedResult));
437 public void getResourceOperationStatus() throws MsoRequestsDbException{
438 String resourceTemplateUUIDs = "template1";
439 String serviceId = "serviceId";
440 String operationId = "operationId";
441 String operationType = "operationType";
443 ResourceOperationStatus resource1 = new ResourceOperationStatus();
444 resource1.setOperationId(operationId);
445 resource1.setServiceId(serviceId);
446 resource1.setResourceTemplateUUID("template1");
447 resource1.setOperType(operationType);
448 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
449 resource1.setStatusDescription("Waiting for start");
452 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType,resourceTemplateUUIDs);
454 ResourceOperationStatus actualResource = dbAdapter.getResourceOperationStatus(serviceId, operationId,"template1");
455 assertThat(actualResource, sameBeanAs(resource1));
459 public void updateResourceOperationStatus() throws MsoRequestsDbException{
460 TestAppender.events.clear();
461 String resourceTemplateUUID = "template1";
462 String serviceId = "serviceId";
463 String operationId = "operationId";
464 String operationType = "operationType";
465 String resourceInstanceID = "resourceInstanceID";
466 String jobId = "jobId";
467 String status = RequestsDbConstant.Status.FINISHED;
468 String progress = "50";
469 String errorCode = "errorCode";
470 String statusDescription = "statusDescription";
473 ResourceOperationStatus expectedResource = new ResourceOperationStatus();
474 expectedResource.setOperationId(operationId);
475 expectedResource.setServiceId(serviceId);
476 expectedResource.setResourceTemplateUUID(resourceTemplateUUID);
477 expectedResource.setOperType(operationType);
478 expectedResource.setJobId(jobId);
479 expectedResource.setErrorCode(errorCode);
480 expectedResource.setStatus(RequestsDbConstant.Status.FINISHED);
481 expectedResource.setStatusDescription(statusDescription);
482 expectedResource.setProgress(progress);
483 expectedResource.setResourceInstanceID(resourceInstanceID);
486 dbAdapter.updateResourceOperationStatus(serviceId, operationId, resourceTemplateUUID,
487 operationType, resourceInstanceID, jobId, status, progress,
488 errorCode, statusDescription);
490 ResourceOperationStatus actualResource = dbAdapter.getResourceOperationStatus(serviceId, operationId,"template1");
491 assertThat(actualResource, sameBeanAs(expectedResource));
493 for(ILoggingEvent logEvent : TestAppender.events)
494 if(logEvent.getLoggerName().equals("org.onap.so.logging.cxf.interceptor.SOAPLoggingInInterceptor") &&
495 logEvent.getMarker().getName().equals("ENTRY")
497 Map<String,String> mdc = logEvent.getMDCPropertyMap();
498 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INSTANCE_UUID));
499 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
500 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
501 assertEquals("",mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
502 assertEquals("/services/RequestsDbAdapter",mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
503 assertEquals("INPROGRESS",mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));
504 }else if(logEvent.getLoggerName().equals("org.onap.so.logging.cxf.interceptor.SOAPLoggingOutInterceptor") &&
505 logEvent.getMarker().getName().equals("EXIT")){
506 Map<String,String> mdc = logEvent.getMDCPropertyMap();
507 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
508 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
509 assertEquals(null,mdc.get(ONAPLogConstants.MDCs.RESPONSE_CODE));
510 assertEquals("",mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
511 assertEquals("/services/RequestsDbAdapter",mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
512 assertEquals("COMPLETED",mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));