92d3114ebe858113e60b2e07b7960898f2c545d0
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.so.adapters.requestsdb.adapters;
22
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;
30 import java.util.Map;
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;
51
52 public class MSORequestDBImplTest extends RequestsAdapterBase {
53
54     @LocalServerPort
55     private int port;
56
57     private MsoRequestsDbAdapter dbAdapter;
58
59     @Autowired
60     private OperationStatusRepository operationStatusRepository;
61
62     @Autowired
63     private ResourceOperationStatusRepository resourceOperationStatusRepo;
64
65     @Rule
66     public ExpectedException thrown = ExpectedException.none();
67
68     public InfraActiveRequests setupTestEntities() {
69         return buildTestRequest();
70     }
71
72     @Before
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();
80
81         InfraActiveRequests testRequest = this.buildTestRequest();
82
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());
90
91
92     }
93
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");
119         return testRequest;
120     }
121
122     @Test
123     public void getByRequestId() throws MsoRequestsDbException {
124
125         InfraActiveRequests testRequest = setupTestEntities();
126         // Given
127         String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
128
129         // When
130         InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
131         if (infraRequest == null)
132             fail("Null infraRequest");
133
134         // Then
135         assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
136                 .ignoring("startTime").ignoring("modifyTime"));
137     }
138
139
140     @Test
141     public void getByInvalidRequestId() throws MsoRequestsDbException {
142         // Given
143         String requestId = "invalidRequestId";
144
145         try {
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");
150         }
151     }
152
153     @Test
154     public void updateInfraRequest() throws MsoRequestsDbException {
155         InfraActiveRequests testRequest = setupTestEntities();
156         // Given
157         String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
158
159
160         // When
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";
176
177
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);
194
195
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);
200         // Then
201         assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
202                 .ignoring("startTime").ignoring("modifyTime"));
203
204
205     }
206
207     @Test
208     public void UpdateByInvalidRequestId() throws MsoRequestsDbException {
209         // Given
210         String requestId = "invalidRequestId";
211
212         try {
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");
218         }
219     }
220
221
222     @Test
223     public void updateInfraRequestNulls() throws MsoRequestsDbException {
224         InfraActiveRequests testRequest = setupTestEntities();
225         // Given
226         String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
227
228         // When
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);
232         // Then
233         assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
234                 .ignoring("startTime").ignoring("modifyTime"));
235     }
236
237     @Test
238     public void getSiteStatusNotDisabled() throws MsoRequestsDbException {
239         setupTestEntities();
240         // Given
241         String siteName = "siteName";
242
243         // When
244         boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
245
246         // Then
247         assertEquals(siteDisabled, true);
248     }
249
250     @Test
251     public void getSiteStatusDisabled() throws MsoRequestsDbException {
252         setupTestEntities();
253         // Given
254         String siteName = "testSite";
255
256         // When
257         boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
258
259         // Then
260         assertEquals(siteDisabled, false);
261     }
262
263     @Test
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";
274
275         OperationStatus updatedOperationStatus = new OperationStatus();
276
277
278
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);
288
289         dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
290                 progress, reason);
291         OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
292         assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
293     }
294
295
296     @Test
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";
307
308         OperationStatus updatedOperationStatus = new OperationStatus();
309
310
311
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);
320
321         dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
322                 progress, reason);
323         OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
324         assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
325     }
326
327     @Test
328     public void initResourceOperationStatus() throws MsoRequestsDbException {
329         String resourceTemplateUUIDs = "template1:template2:template3:";
330         String serviceId = "serviceId";
331         String operationId = "operationId";
332         String operationType = "operationType";
333
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");
341
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");
349
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");
357
358         List<ResourceOperationStatus> expectedResult = new ArrayList<ResourceOperationStatus>();
359         expectedResult.add(resource1);
360         expectedResult.add(resource2);
361         expectedResult.add(resource3);
362
363         dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
364         List<ResourceOperationStatus> testList =
365                 resourceOperationStatusRepo.findByServiceIdAndOperationId(serviceId, operationId);
366         assertThat(testList, sameBeanAs(expectedResult));
367     }
368
369     @Test
370     public void getResourceOperationStatus() throws MsoRequestsDbException {
371         String resourceTemplateUUIDs = "template1";
372         String serviceId = "serviceId";
373         String operationId = "operationId";
374         String operationType = "operationType";
375
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");
383
384
385         dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
386
387         ResourceOperationStatus actualResource =
388                 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
389         assertThat(actualResource, sameBeanAs(resource1));
390     }
391
392     @Test
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";
405
406
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);
418
419
420         dbAdapter.updateResourceOperationStatus(serviceId, operationId, resourceTemplateUUID, operationType,
421                 resourceInstanceID, jobId, status, progress, errorCode, statusDescription);
422
423         ResourceOperationStatus actualResource =
424                 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
425         assertThat(actualResource, sameBeanAs(expectedResource));
426
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));
446             }
447     }
448
449
450 }