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;
28 import java.util.ArrayList;
29 import java.util.List;
31 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
32 import org.junit.Before;
33 import org.junit.Rule;
34 import org.junit.Test;
35 import org.junit.rules.ExpectedException;
36 import org.onap.logging.ref.slf4j.ONAPLogConstants;
37 import org.onap.so.adapters.requestsdb.MsoRequestsDbAdapter;
38 import org.onap.so.adapters.requestsdb.RequestStatusType;
39 import org.onap.so.adapters.requestsdb.RequestsAdapterBase;
40 import org.onap.so.adapters.requestsdb.application.TestAppender;
41 import org.onap.so.adapters.requestsdb.exceptions.MsoRequestsDbException;
42 import org.onap.so.db.request.beans.InfraActiveRequests;
43 import org.onap.so.db.request.beans.OperationStatus;
44 import org.onap.so.db.request.beans.ResourceOperationStatus;
45 import org.onap.so.db.request.data.repository.OperationStatusRepository;
46 import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
47 import org.onap.so.requestsdb.RequestsDbConstant;
48 import org.springframework.beans.factory.annotation.Autowired;
49 import org.springframework.boot.web.server.LocalServerPort;
50 import ch.qos.logback.classic.spi.ILoggingEvent;
52 public class MSORequestDBImplTest extends RequestsAdapterBase {
57 private MsoRequestsDbAdapter dbAdapter;
60 private OperationStatusRepository operationStatusRepository;
63 private ResourceOperationStatusRepository resourceOperationStatusRepo;
66 public ExpectedException thrown = ExpectedException.none();
68 public InfraActiveRequests setupTestEntities() {
69 return buildTestRequest();
73 public void before() throws MsoRequestsDbException {
74 JaxWsProxyFactoryBean jaxWsProxyFactory = new JaxWsProxyFactoryBean();
75 jaxWsProxyFactory.setServiceClass(MsoRequestsDbAdapter.class);
76 jaxWsProxyFactory.setAddress("http://localhost:" + port + "/services/RequestsDbAdapter");
77 jaxWsProxyFactory.setUsername("bpel");
78 jaxWsProxyFactory.setPassword("mso-db-1507!");
79 dbAdapter = (MsoRequestsDbAdapter) jaxWsProxyFactory.create();
81 InfraActiveRequests testRequest = this.buildTestRequest();
83 dbAdapter.updateInfraRequest(testRequest.getRequestId(), testRequest.getLastModifiedBy(),
84 testRequest.getStatusMessage(), testRequest.getResponseBody(),
85 RequestStatusType.valueOf(testRequest.getRequestStatus()), testRequest.getProgress().toString(),
86 testRequest.getVnfOutputs(), testRequest.getServiceInstanceId(), testRequest.getNetworkId(),
87 testRequest.getVnfId(), testRequest.getVfModuleId(), testRequest.getVolumeGroupId(),
88 testRequest.getServiceInstanceName(), testRequest.getConfigurationId(),
89 testRequest.getConfigurationName(), testRequest.getVfModuleName());
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");
113 testRequest.setVolumeGroupId("volumeGroupId");
114 testRequest.setServiceInstanceName("serviceInstanceName");
115 testRequest.setConfigurationId("configurationId");
116 testRequest.setConfigurationName("configurationName");
117 testRequest.setNetworkId("networkId");
118 testRequest.setResponseBody("responseBody");
119 testRequest.setVfModuleName("vfModuleName");
120 testRequest.setVnfOutputs("vnfOutputs");
125 public void getByRequestId() throws MsoRequestsDbException {
127 InfraActiveRequests testRequest = setupTestEntities();
129 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
132 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
133 if (infraRequest == null)
134 fail("Null infraRequest");
137 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
138 .ignoring("startTime").ignoring("modifyTime"));
143 public void getByInvalidRequestId() throws MsoRequestsDbException {
145 String requestId = "invalidRequestId";
148 dbAdapter.getInfraRequest(requestId);
149 fail("Expected MsoRequestsDbException to be thrown");
150 } catch (Exception e) {
151 assertEquals(e.getMessage(), "Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
156 public void getByClientRequestId() throws MsoRequestsDbException {
157 InfraActiveRequests testRequest = setupTestEntities();
159 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
162 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
163 if (infraRequest == null)
164 fail("Null infraRequest");
167 assertEquals(clientRequestId, infraRequest.getClientRequestId());
172 public void updateInfraRequest() throws MsoRequestsDbException {
173 InfraActiveRequests testRequest = setupTestEntities();
175 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
179 String lastModifiedBy = "UNIT TEST";
180 String statusMessage = "TESTING THE UDPATES";
181 String progress = "50";
182 String vnfOutputs = "VNF OUTPUTS";
183 String networkId = "New NetworkID";
184 String vnfId = "NEWVNFID";
185 String volumeGroupId = "NewVolumeGroupId";
186 String serviceInstanceName = "NewServiceInstanceName";
187 String configurationId = "NewConfigurationId";
188 String configurationName = "NewConfigurationName";
189 String vfModuleName = "VFModuleName";
190 RequestStatusType requestStatus = RequestStatusType.COMPLETE;
191 String responseBody = "NewResponseBody";
192 String vfModuleId = "NEW VF MODULEID";
193 String serviceInstanceId = " new serv ind";
196 testRequest.setVolumeGroupId(volumeGroupId);
197 testRequest.setServiceInstanceName(serviceInstanceName);
198 testRequest.setConfigurationId(configurationId);
199 testRequest.setConfigurationName(configurationName);
200 testRequest.setNetworkId(networkId);
201 testRequest.setResponseBody(responseBody);
202 testRequest.setStatusMessage(statusMessage);
203 testRequest.setProgress((long) 50);
204 testRequest.setServiceInstanceId(lastModifiedBy);
205 testRequest.setLastModifiedBy(lastModifiedBy);
206 testRequest.setVfModuleId(vfModuleId);
207 testRequest.setVfModuleName(vfModuleName);
208 testRequest.setVnfId(vnfId);
209 testRequest.setServiceInstanceId(serviceInstanceId);
210 testRequest.setVfModuleName(vfModuleName);
211 testRequest.setVnfOutputs(vnfOutputs);
214 dbAdapter.updateInfraRequest(testRequest.getRequestId(), lastModifiedBy, statusMessage, responseBody,
215 requestStatus, progress, vnfOutputs, serviceInstanceId, networkId, vnfId, vfModuleId, volumeGroupId,
216 serviceInstanceName, configurationId, configurationName, vfModuleName);
217 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
219 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
220 .ignoring("startTime").ignoring("modifyTime"));
226 public void UpdateByInvalidRequestId() throws MsoRequestsDbException {
228 String requestId = "invalidRequestId";
231 dbAdapter.updateInfraRequest(requestId, null, null, null, null, null, null, null, null, null, null, null,
232 null, null, null, null);
233 fail("Expected MsoRequestsDbException to be thrown");
234 } catch (Exception e) {
235 assertEquals(e.getMessage(), "Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
241 public void updateInfraRequestNulls() throws MsoRequestsDbException {
242 InfraActiveRequests testRequest = setupTestEntities();
244 String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
247 dbAdapter.updateInfraRequest(testRequest.getRequestId(), testRequest.getLastModifiedBy(), null, null, null,
248 null, null, null, null, null, null, null, null, null, null, null);
249 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
251 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
252 .ignoring("startTime").ignoring("modifyTime"));
256 public void getSiteStatusNotDisabled() throws MsoRequestsDbException {
259 String siteName = "siteName";
262 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
265 assertEquals(siteDisabled, true);
269 public void getSiteStatusDisabled() throws MsoRequestsDbException {
272 String siteName = "testSite";
275 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
278 assertEquals(siteDisabled, false);
282 public void updateServiceOperation() throws MsoRequestsDbException {
283 String serviceId = "serviceid";
284 String operationId = "operationid";
285 String serviceName = "servicename";
286 String operation = "newOperationType";
287 String userId = "NewUserId";
288 String result = "NewResult";
289 String operationContent = "newOperationContent";
290 String progress = "Newprogress";
291 String reason = "NewReason";
293 OperationStatus updatedOperationStatus = new OperationStatus();
297 updatedOperationStatus.setServiceId(serviceId);
298 updatedOperationStatus.setServiceName(serviceName);
299 updatedOperationStatus.setOperationId(operationId);
300 updatedOperationStatus.setOperation(operation);
301 updatedOperationStatus.setUserId(userId);
302 updatedOperationStatus.setResult(result);
303 updatedOperationStatus.setProgress(progress);
304 updatedOperationStatus.setReason(reason);
305 updatedOperationStatus.setOperationContent(operationContent);
307 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
309 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
310 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
315 public void updateServiceOperation_Not_Found() throws MsoRequestsDbException {
316 TestAppender.events.clear();
317 String serviceId = "badserviceId";
318 String operationId = "operationid";
319 String operation = "newOperationType";
320 String userId = "NewUserId";
321 String result = "NewResult";
322 String operationContent = "newOperationContent";
323 String progress = "Newprogress";
324 String reason = "NewReason";
326 OperationStatus updatedOperationStatus = new OperationStatus();
330 updatedOperationStatus.setServiceId(serviceId);
331 updatedOperationStatus.setOperationId(operationId);
332 updatedOperationStatus.setOperation(operation);
333 updatedOperationStatus.setUserId(userId);
334 updatedOperationStatus.setResult(result);
335 updatedOperationStatus.setProgress(progress);
336 updatedOperationStatus.setReason(reason);
337 updatedOperationStatus.setOperationContent(operationContent);
339 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
341 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
342 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
346 public void initResourceOperationStatus() throws MsoRequestsDbException {
347 String resourceTemplateUUIDs = "template1:template2:template3:";
348 String serviceId = "serviceId";
349 String operationId = "operationId";
350 String operationType = "operationType";
352 ResourceOperationStatus resource1 = new ResourceOperationStatus();
353 resource1.setOperationId(operationId);
354 resource1.setServiceId(serviceId);
355 resource1.setResourceTemplateUUID("template1");
356 resource1.setOperType(operationType);
357 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
358 resource1.setStatusDescription("Waiting for start");
360 ResourceOperationStatus resource2 = new ResourceOperationStatus();
361 resource2.setOperationId(operationId);
362 resource2.setServiceId(serviceId);
363 resource2.setResourceTemplateUUID("template2");
364 resource2.setOperType(operationType);
365 resource2.setStatus(RequestsDbConstant.Status.PROCESSING);
366 resource2.setStatusDescription("Waiting for start");
368 ResourceOperationStatus resource3 = new ResourceOperationStatus();
369 resource3.setOperationId(operationId);
370 resource3.setServiceId(serviceId);
371 resource3.setResourceTemplateUUID("template3");
372 resource3.setOperType(operationType);
373 resource3.setStatus(RequestsDbConstant.Status.PROCESSING);
374 resource3.setStatusDescription("Waiting for start");
376 List<ResourceOperationStatus> expectedResult = new ArrayList<ResourceOperationStatus>();
377 expectedResult.add(resource1);
378 expectedResult.add(resource2);
379 expectedResult.add(resource3);
381 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
382 List<ResourceOperationStatus> testList =
383 resourceOperationStatusRepo.findByServiceIdAndOperationId(serviceId, operationId);
384 assertThat(testList, sameBeanAs(expectedResult));
388 public void getResourceOperationStatus() throws MsoRequestsDbException {
389 String resourceTemplateUUIDs = "template1";
390 String serviceId = "serviceId";
391 String operationId = "operationId";
392 String operationType = "operationType";
394 ResourceOperationStatus resource1 = new ResourceOperationStatus();
395 resource1.setOperationId(operationId);
396 resource1.setServiceId(serviceId);
397 resource1.setResourceTemplateUUID("template1");
398 resource1.setOperType(operationType);
399 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
400 resource1.setStatusDescription("Waiting for start");
403 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
405 ResourceOperationStatus actualResource =
406 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
407 assertThat(actualResource, sameBeanAs(resource1));
411 public void updateResourceOperationStatus() throws MsoRequestsDbException {
412 TestAppender.events.clear();
413 String resourceTemplateUUID = "template1";
414 String serviceId = "serviceId";
415 String operationId = "operationId";
416 String operationType = "operationType";
417 String resourceInstanceID = "resourceInstanceID";
418 String jobId = "jobId";
419 String status = RequestsDbConstant.Status.FINISHED;
420 String progress = "50";
421 String errorCode = "errorCode";
422 String statusDescription = "statusDescription";
425 ResourceOperationStatus expectedResource = new ResourceOperationStatus();
426 expectedResource.setOperationId(operationId);
427 expectedResource.setServiceId(serviceId);
428 expectedResource.setResourceTemplateUUID(resourceTemplateUUID);
429 expectedResource.setOperType(operationType);
430 expectedResource.setJobId(jobId);
431 expectedResource.setErrorCode(errorCode);
432 expectedResource.setStatus(RequestsDbConstant.Status.FINISHED);
433 expectedResource.setStatusDescription(statusDescription);
434 expectedResource.setProgress(progress);
435 expectedResource.setResourceInstanceID(resourceInstanceID);
438 dbAdapter.updateResourceOperationStatus(serviceId, operationId, resourceTemplateUUID, operationType,
439 resourceInstanceID, jobId, status, progress, errorCode, statusDescription);
441 ResourceOperationStatus actualResource =
442 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
443 assertThat(actualResource, sameBeanAs(expectedResource));
445 for (ILoggingEvent logEvent : TestAppender.events)
446 if (logEvent.getLoggerName().equals("org.onap.so.logging.cxf.interceptor.SOAPLoggingInInterceptor")
447 && logEvent.getMarker().getName().equals("ENTRY")) {
448 Map<String, String> mdc = logEvent.getMDCPropertyMap();
449 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INSTANCE_UUID));
450 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
451 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
452 assertEquals("UNKNOWN", mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
453 assertEquals("/services/RequestsDbAdapter", mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
454 assertEquals("INPROGRESS", mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));
455 } else if (logEvent.getLoggerName().equals("org.onap.so.logging.cxf.interceptor.SOAPLoggingOutInterceptor")
456 && logEvent.getMarker().getName().equals("EXIT")) {
457 Map<String, String> mdc = logEvent.getMDCPropertyMap();
458 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
459 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
460 assertEquals(null, mdc.get(ONAPLogConstants.MDCs.RESPONSE_CODE));
461 assertEquals("UNKNOWN", mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
462 assertEquals("/services/RequestsDbAdapter", mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
463 assertEquals("COMPLETE", mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));