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.setRequestStatus("COMPLETE");
98 testRequest.setStatusMessage("Vf Module has been deleted successfully.");
99 testRequest.setProgress((long) 100);
100 testRequest.setSource("VID");
101 testRequest.setTenantId("6accefef3cb442ff9e644d589fb04107");
102 testRequest.setServiceInstanceId("e3b5744d-2ad1-4cdd-8390-c999a38829bc");
103 testRequest.setRequestAction("deleteInstance");
104 testRequest.setRequestScope("vfModule");
105 testRequest.setAicCloudRegion("mtn6");
106 testRequest.setLastModifiedBy("BPMN");
107 testRequest.setVfModuleId("c7d527b1-7a91-49fd-b97d-1c8c0f4a7992");
108 testRequest.setVfModuleModelName("vSAMP10aDEV::base::module-0");
109 testRequest.setVnfId("b92f60c8-8de3-46c1-8dc1-e4390ac2b005");
110 testRequest.setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");
111 testRequest.setVolumeGroupId("volumeGroupId");
112 testRequest.setServiceInstanceName("serviceInstanceName");
113 testRequest.setConfigurationId("configurationId");
114 testRequest.setConfigurationName("configurationName");
115 testRequest.setNetworkId("networkId");
116 testRequest.setResponseBody("responseBody");
117 testRequest.setVfModuleName("vfModuleName");
118 testRequest.setVnfOutputs("vnfOutputs");
123 public void getByRequestId() throws MsoRequestsDbException {
125 InfraActiveRequests testRequest = setupTestEntities();
127 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
130 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
131 if (infraRequest == null)
132 fail("Null infraRequest");
135 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
136 .ignoring("startTime").ignoring("modifyTime"));
141 public void getByInvalidRequestId() throws MsoRequestsDbException {
143 String requestId = "invalidRequestId";
146 dbAdapter.getInfraRequest(requestId);
147 fail("Expected MsoRequestsDbException to be thrown");
148 } catch (Exception e) {
149 assertEquals(e.getMessage(), "Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
154 public void updateInfraRequest() throws MsoRequestsDbException {
155 InfraActiveRequests testRequest = setupTestEntities();
157 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
161 String lastModifiedBy = "UNIT TEST";
162 String statusMessage = "TESTING THE UDPATES";
163 String progress = "50";
164 String vnfOutputs = "VNF OUTPUTS";
165 String networkId = "New NetworkID";
166 String vnfId = "NEWVNFID";
167 String volumeGroupId = "NewVolumeGroupId";
168 String serviceInstanceName = "NewServiceInstanceName";
169 String configurationId = "NewConfigurationId";
170 String configurationName = "NewConfigurationName";
171 String vfModuleName = "VFModuleName";
172 RequestStatusType requestStatus = RequestStatusType.COMPLETE;
173 String responseBody = "NewResponseBody";
174 String vfModuleId = "NEW VF MODULEID";
175 String serviceInstanceId = " new serv ind";
178 testRequest.setVolumeGroupId(volumeGroupId);
179 testRequest.setServiceInstanceName(serviceInstanceName);
180 testRequest.setConfigurationId(configurationId);
181 testRequest.setConfigurationName(configurationName);
182 testRequest.setNetworkId(networkId);
183 testRequest.setResponseBody(responseBody);
184 testRequest.setStatusMessage(statusMessage);
185 testRequest.setProgress((long) 50);
186 testRequest.setServiceInstanceId(lastModifiedBy);
187 testRequest.setLastModifiedBy(lastModifiedBy);
188 testRequest.setVfModuleId(vfModuleId);
189 testRequest.setVfModuleName(vfModuleName);
190 testRequest.setVnfId(vnfId);
191 testRequest.setServiceInstanceId(serviceInstanceId);
192 testRequest.setVfModuleName(vfModuleName);
193 testRequest.setVnfOutputs(vnfOutputs);
196 dbAdapter.updateInfraRequest(testRequest.getRequestId(), lastModifiedBy, statusMessage, responseBody,
197 requestStatus, progress, vnfOutputs, serviceInstanceId, networkId, vnfId, vfModuleId, volumeGroupId,
198 serviceInstanceName, configurationId, configurationName, vfModuleName);
199 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
201 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
202 .ignoring("startTime").ignoring("modifyTime"));
208 public void UpdateByInvalidRequestId() throws MsoRequestsDbException {
210 String requestId = "invalidRequestId";
213 dbAdapter.updateInfraRequest(requestId, null, null, null, null, null, null, null, null, null, null, null,
214 null, null, null, null);
215 fail("Expected MsoRequestsDbException to be thrown");
216 } catch (Exception e) {
217 assertEquals(e.getMessage(), "Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
223 public void updateInfraRequestNulls() throws MsoRequestsDbException {
224 InfraActiveRequests testRequest = setupTestEntities();
226 String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
229 dbAdapter.updateInfraRequest(testRequest.getRequestId(), testRequest.getLastModifiedBy(), null, null, null,
230 null, null, null, null, null, null, null, null, null, null, null);
231 InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
233 assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
234 .ignoring("startTime").ignoring("modifyTime"));
238 public void getSiteStatusNotDisabled() throws MsoRequestsDbException {
241 String siteName = "siteName";
244 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
247 assertEquals(siteDisabled, true);
251 public void getSiteStatusDisabled() throws MsoRequestsDbException {
254 String siteName = "testSite";
257 boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
260 assertEquals(siteDisabled, false);
264 public void updateServiceOperation() throws MsoRequestsDbException {
265 String serviceId = "serviceid";
266 String operationId = "operationid";
267 String serviceName = "servicename";
268 String operation = "newOperationType";
269 String userId = "NewUserId";
270 String result = "NewResult";
271 String operationContent = "newOperationContent";
272 String progress = "Newprogress";
273 String reason = "NewReason";
275 OperationStatus updatedOperationStatus = new OperationStatus();
279 updatedOperationStatus.setServiceId(serviceId);
280 updatedOperationStatus.setServiceName(serviceName);
281 updatedOperationStatus.setOperationId(operationId);
282 updatedOperationStatus.setOperation(operation);
283 updatedOperationStatus.setUserId(userId);
284 updatedOperationStatus.setResult(result);
285 updatedOperationStatus.setProgress(progress);
286 updatedOperationStatus.setReason(reason);
287 updatedOperationStatus.setOperationContent(operationContent);
289 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
291 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
292 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
297 public void updateServiceOperation_Not_Found() throws MsoRequestsDbException {
298 TestAppender.events.clear();
299 String serviceId = "badserviceId";
300 String operationId = "operationid";
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.setOperationId(operationId);
314 updatedOperationStatus.setOperation(operation);
315 updatedOperationStatus.setUserId(userId);
316 updatedOperationStatus.setResult(result);
317 updatedOperationStatus.setProgress(progress);
318 updatedOperationStatus.setReason(reason);
319 updatedOperationStatus.setOperationContent(operationContent);
321 dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
323 OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
324 assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
328 public void initResourceOperationStatus() throws MsoRequestsDbException {
329 String resourceTemplateUUIDs = "template1:template2:template3:";
330 String serviceId = "serviceId";
331 String operationId = "operationId";
332 String operationType = "operationType";
334 ResourceOperationStatus resource1 = new ResourceOperationStatus();
335 resource1.setOperationId(operationId);
336 resource1.setServiceId(serviceId);
337 resource1.setResourceTemplateUUID("template1");
338 resource1.setOperType(operationType);
339 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
340 resource1.setStatusDescription("Waiting for start");
342 ResourceOperationStatus resource2 = new ResourceOperationStatus();
343 resource2.setOperationId(operationId);
344 resource2.setServiceId(serviceId);
345 resource2.setResourceTemplateUUID("template2");
346 resource2.setOperType(operationType);
347 resource2.setStatus(RequestsDbConstant.Status.PROCESSING);
348 resource2.setStatusDescription("Waiting for start");
350 ResourceOperationStatus resource3 = new ResourceOperationStatus();
351 resource3.setOperationId(operationId);
352 resource3.setServiceId(serviceId);
353 resource3.setResourceTemplateUUID("template3");
354 resource3.setOperType(operationType);
355 resource3.setStatus(RequestsDbConstant.Status.PROCESSING);
356 resource3.setStatusDescription("Waiting for start");
358 List<ResourceOperationStatus> expectedResult = new ArrayList<ResourceOperationStatus>();
359 expectedResult.add(resource1);
360 expectedResult.add(resource2);
361 expectedResult.add(resource3);
363 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
364 List<ResourceOperationStatus> testList =
365 resourceOperationStatusRepo.findByServiceIdAndOperationId(serviceId, operationId);
366 assertThat(testList, sameBeanAs(expectedResult));
370 public void getResourceOperationStatus() throws MsoRequestsDbException {
371 String resourceTemplateUUIDs = "template1";
372 String serviceId = "serviceId";
373 String operationId = "operationId";
374 String operationType = "operationType";
376 ResourceOperationStatus resource1 = new ResourceOperationStatus();
377 resource1.setOperationId(operationId);
378 resource1.setServiceId(serviceId);
379 resource1.setResourceTemplateUUID("template1");
380 resource1.setOperType(operationType);
381 resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
382 resource1.setStatusDescription("Waiting for start");
385 dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
387 ResourceOperationStatus actualResource =
388 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
389 assertThat(actualResource, sameBeanAs(resource1));
393 public void updateResourceOperationStatus() throws MsoRequestsDbException {
394 TestAppender.events.clear();
395 String resourceTemplateUUID = "template1";
396 String serviceId = "serviceId";
397 String operationId = "operationId";
398 String operationType = "operationType";
399 String resourceInstanceID = "resourceInstanceID";
400 String jobId = "jobId";
401 String status = RequestsDbConstant.Status.FINISHED;
402 String progress = "50";
403 String errorCode = "errorCode";
404 String statusDescription = "statusDescription";
407 ResourceOperationStatus expectedResource = new ResourceOperationStatus();
408 expectedResource.setOperationId(operationId);
409 expectedResource.setServiceId(serviceId);
410 expectedResource.setResourceTemplateUUID(resourceTemplateUUID);
411 expectedResource.setOperType(operationType);
412 expectedResource.setJobId(jobId);
413 expectedResource.setErrorCode(errorCode);
414 expectedResource.setStatus(RequestsDbConstant.Status.FINISHED);
415 expectedResource.setStatusDescription(statusDescription);
416 expectedResource.setProgress(progress);
417 expectedResource.setResourceInstanceID(resourceInstanceID);
420 dbAdapter.updateResourceOperationStatus(serviceId, operationId, resourceTemplateUUID, operationType,
421 resourceInstanceID, jobId, status, progress, errorCode, statusDescription);
423 ResourceOperationStatus actualResource =
424 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
425 assertThat(actualResource, sameBeanAs(expectedResource));
427 for (ILoggingEvent logEvent : TestAppender.events)
428 if (logEvent.getLoggerName().equals("org.onap.so.logging.cxf.interceptor.SOAPLoggingInInterceptor")
429 && logEvent.getMarker().getName().equals("ENTRY")) {
430 Map<String, String> mdc = logEvent.getMDCPropertyMap();
431 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INSTANCE_UUID));
432 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
433 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
434 assertEquals("UNKNOWN", mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
435 assertEquals("/services/RequestsDbAdapter", mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
436 assertEquals("INPROGRESS", mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));
437 } else if (logEvent.getLoggerName().equals("org.onap.so.logging.cxf.interceptor.SOAPLoggingOutInterceptor")
438 && logEvent.getMarker().getName().equals("EXIT")) {
439 Map<String, String> mdc = logEvent.getMDCPropertyMap();
440 assertNotNull(mdc.get(ONAPLogConstants.MDCs.REQUEST_ID));
441 assertNotNull(mdc.get(ONAPLogConstants.MDCs.INVOCATION_ID));
442 assertEquals(null, mdc.get(ONAPLogConstants.MDCs.RESPONSE_CODE));
443 assertEquals("UNKNOWN", mdc.get(ONAPLogConstants.MDCs.PARTNER_NAME));
444 assertEquals("/services/RequestsDbAdapter", mdc.get(ONAPLogConstants.MDCs.SERVICE_NAME));
445 assertEquals("COMPLETE", mdc.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));