fa2acbc0ca4b01ed5550d219905652f64ebd1810
[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.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");
121         return testRequest;
122     }
123
124     @Test
125     public void getByRequestId() throws MsoRequestsDbException {
126
127         InfraActiveRequests testRequest = setupTestEntities();
128         // Given
129         String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
130
131         // When
132         InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
133         if (infraRequest == null)
134             fail("Null infraRequest");
135
136         // Then
137         assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
138                 .ignoring("startTime").ignoring("modifyTime"));
139     }
140
141
142     @Test
143     public void getByInvalidRequestId() throws MsoRequestsDbException {
144         // Given
145         String requestId = "invalidRequestId";
146
147         try {
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");
152         }
153     }
154
155     @Test
156     public void getByClientRequestId() throws MsoRequestsDbException {
157         InfraActiveRequests testRequest = setupTestEntities();
158         // Given
159         String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
160
161         // When
162         InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(clientRequestId);
163         if (infraRequest == null)
164             fail("Null infraRequest");
165
166         // Then
167         assertEquals(clientRequestId, infraRequest.getClientRequestId());
168     }
169
170
171     @Test
172     public void updateInfraRequest() throws MsoRequestsDbException {
173         InfraActiveRequests testRequest = setupTestEntities();
174         // Given
175         String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
176
177
178         // When
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";
194
195
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);
212
213
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);
218         // Then
219         assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
220                 .ignoring("startTime").ignoring("modifyTime"));
221
222
223     }
224
225     @Test
226     public void UpdateByInvalidRequestId() throws MsoRequestsDbException {
227         // Given
228         String requestId = "invalidRequestId";
229
230         try {
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");
236         }
237     }
238
239
240     @Test
241     public void updateInfraRequestNulls() throws MsoRequestsDbException {
242         InfraActiveRequests testRequest = setupTestEntities();
243         // Given
244         String clientRequestId = "00032ab7-3fb3-42e5-965d-8ea592502016";
245
246         // When
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);
250         // Then
251         assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
252                 .ignoring("startTime").ignoring("modifyTime"));
253     }
254
255     @Test
256     public void getSiteStatusNotDisabled() throws MsoRequestsDbException {
257         setupTestEntities();
258         // Given
259         String siteName = "siteName";
260
261         // When
262         boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
263
264         // Then
265         assertEquals(siteDisabled, true);
266     }
267
268     @Test
269     public void getSiteStatusDisabled() throws MsoRequestsDbException {
270         setupTestEntities();
271         // Given
272         String siteName = "testSite";
273
274         // When
275         boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
276
277         // Then
278         assertEquals(siteDisabled, false);
279     }
280
281     @Test
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";
292
293         OperationStatus updatedOperationStatus = new OperationStatus();
294
295
296
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);
306
307         dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
308                 progress, reason);
309         OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
310         assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
311     }
312
313
314     @Test
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";
325
326         OperationStatus updatedOperationStatus = new OperationStatus();
327
328
329
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);
338
339         dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
340                 progress, reason);
341         OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
342         assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
343     }
344
345     @Test
346     public void initResourceOperationStatus() throws MsoRequestsDbException {
347         String resourceTemplateUUIDs = "template1:template2:template3:";
348         String serviceId = "serviceId";
349         String operationId = "operationId";
350         String operationType = "operationType";
351
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");
359
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");
367
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");
375
376         List<ResourceOperationStatus> expectedResult = new ArrayList<ResourceOperationStatus>();
377         expectedResult.add(resource1);
378         expectedResult.add(resource2);
379         expectedResult.add(resource3);
380
381         dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
382         List<ResourceOperationStatus> testList =
383                 resourceOperationStatusRepo.findByServiceIdAndOperationId(serviceId, operationId);
384         assertThat(testList, sameBeanAs(expectedResult));
385     }
386
387     @Test
388     public void getResourceOperationStatus() throws MsoRequestsDbException {
389         String resourceTemplateUUIDs = "template1";
390         String serviceId = "serviceId";
391         String operationId = "operationId";
392         String operationType = "operationType";
393
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");
401
402
403         dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
404
405         ResourceOperationStatus actualResource =
406                 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
407         assertThat(actualResource, sameBeanAs(resource1));
408     }
409
410     @Test
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";
423
424
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);
436
437
438         dbAdapter.updateResourceOperationStatus(serviceId, operationId, resourceTemplateUUID, operationType,
439                 resourceInstanceID, jobId, status, progress, errorCode, statusDescription);
440
441         ResourceOperationStatus actualResource =
442                 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
443         assertThat(actualResource, sameBeanAs(expectedResource));
444
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));
464             }
465     }
466
467
468 }