9ded5b4b79e225ebab6d79459aa5abf650d66a9e
[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.fail;
27 import java.util.ArrayList;
28 import java.util.List;
29 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
30 import org.junit.Before;
31 import org.junit.Rule;
32 import org.junit.Test;
33 import org.junit.rules.ExpectedException;
34 import org.onap.so.adapters.requestsdb.MsoRequestsDbAdapter;
35 import org.onap.so.adapters.requestsdb.RequestStatusType;
36 import org.onap.so.adapters.requestsdb.RequestsAdapterBase;
37 import org.onap.so.adapters.requestsdb.application.TestAppender;
38 import org.onap.so.adapters.requestsdb.exceptions.MsoRequestsDbException;
39 import org.onap.so.db.request.beans.InfraActiveRequests;
40 import org.onap.so.db.request.beans.OperationStatus;
41 import org.onap.so.db.request.beans.ResourceOperationStatus;
42 import org.onap.so.db.request.beans.InstanceNfvoMapping;
43 import org.onap.so.db.request.data.repository.OperationStatusRepository;
44 import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
45 import org.onap.so.db.request.data.repository.InstanceNfvoMappingRepository;
46 import org.onap.so.requestsdb.RequestsDbConstant;
47 import org.springframework.beans.factory.annotation.Autowired;
48 import org.springframework.boot.web.server.LocalServerPort;
49
50 public class MSORequestDBImplTest extends RequestsAdapterBase {
51
52     @LocalServerPort
53     private int port;
54
55     private MsoRequestsDbAdapter dbAdapter;
56
57     @Autowired
58     private OperationStatusRepository operationStatusRepository;
59
60     @Autowired
61     private ResourceOperationStatusRepository resourceOperationStatusRepo;
62
63     @Autowired
64     private InstanceNfvoMappingRepository instanceNfvoMappingRepository;
65
66     @Rule
67     public ExpectedException thrown = ExpectedException.none();
68
69     public InfraActiveRequests setupTestEntities() {
70         return buildTestRequest();
71     }
72
73     @Before
74     public void before() throws MsoRequestsDbException {
75         JaxWsProxyFactoryBean jaxWsProxyFactory = new JaxWsProxyFactoryBean();
76         jaxWsProxyFactory.setServiceClass(MsoRequestsDbAdapter.class);
77         jaxWsProxyFactory.setAddress("http://localhost:" + port + "/services/RequestsDbAdapter");
78         jaxWsProxyFactory.setUsername("bpel");
79         jaxWsProxyFactory.setPassword("mso-db-1507!");
80         dbAdapter = (MsoRequestsDbAdapter) jaxWsProxyFactory.create();
81
82         InfraActiveRequests testRequest = this.buildTestRequest();
83
84         dbAdapter.updateInfraRequest(testRequest.getRequestId(), testRequest.getLastModifiedBy(),
85                 testRequest.getStatusMessage(), testRequest.getResponseBody(),
86                 RequestStatusType.valueOf(testRequest.getRequestStatus()), testRequest.getProgress().toString(),
87                 testRequest.getVnfOutputs(), testRequest.getServiceInstanceId(), testRequest.getNetworkId(),
88                 testRequest.getVnfId(), testRequest.getVfModuleId(), testRequest.getVolumeGroupId(),
89                 testRequest.getServiceInstanceName(), testRequest.getConfigurationId(),
90                 testRequest.getConfigurationName(), testRequest.getVfModuleName());
91
92
93     }
94
95     private InfraActiveRequests buildTestRequest() {
96         InfraActiveRequests testRequest = new InfraActiveRequests();
97         testRequest.setRequestId("00032ab7-3fb3-42e5-965d-8ea592502017");
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.setCloudRegion("mtn6");
107         testRequest.setLastModifiedBy("BPMN");
108         testRequest.setVfModuleId("c7d527b1-7a91-49fd-b97d-1c8c0f4a7992");
109         testRequest.setVfModuleModelName("vSAMP10aDEV::base::module-0");
110         testRequest.setVnfId("b92f60c8-8de3-46c1-8dc1-e4390ac2b005");
111         testRequest.setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");
112         testRequest.setVolumeGroupId("volumeGroupId");
113         testRequest.setServiceInstanceName("serviceInstanceName");
114         testRequest.setConfigurationId("configurationId");
115         testRequest.setConfigurationName("configurationName");
116         testRequest.setNetworkId("networkId");
117         testRequest.setResponseBody("responseBody");
118         testRequest.setVfModuleName("vfModuleName");
119         testRequest.setVnfOutputs("vnfOutputs");
120         return testRequest;
121     }
122
123     @Test
124     public void getByRequestId() throws MsoRequestsDbException {
125
126         InfraActiveRequests testRequest = setupTestEntities();
127         // Given
128         String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
129
130         // When
131         InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
132         if (infraRequest == null)
133             fail("Null infraRequest");
134
135         // Then
136         assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
137                 .ignoring("startTime").ignoring("modifyTime"));
138     }
139
140
141     @Test
142     public void getByInvalidRequestId() throws MsoRequestsDbException {
143         // Given
144         String requestId = "invalidRequestId";
145
146         try {
147             dbAdapter.getInfraRequest(requestId);
148             fail("Expected MsoRequestsDbException to be thrown");
149         } catch (Exception e) {
150             assertEquals(e.getMessage(), "Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
151         }
152     }
153
154     @Test
155     public void updateInfraRequest() throws MsoRequestsDbException {
156         InfraActiveRequests testRequest = setupTestEntities();
157         // Given
158         String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
159
160
161         // When
162         String lastModifiedBy = "UNIT TEST";
163         String statusMessage = "TESTING THE UDPATES";
164         String progress = "50";
165         String vnfOutputs = "VNF OUTPUTS";
166         String networkId = "New NetworkID";
167         String vnfId = "NEWVNFID";
168         String volumeGroupId = "NewVolumeGroupId";
169         String serviceInstanceName = "NewServiceInstanceName";
170         String configurationId = "NewConfigurationId";
171         String configurationName = "NewConfigurationName";
172         String vfModuleName = "VFModuleName";
173         RequestStatusType requestStatus = RequestStatusType.COMPLETE;
174         String responseBody = "NewResponseBody";
175         String vfModuleId = "NEW VF MODULEID";
176         String serviceInstanceId = " new serv ind";
177
178
179         testRequest.setVolumeGroupId(volumeGroupId);
180         testRequest.setServiceInstanceName(serviceInstanceName);
181         testRequest.setConfigurationId(configurationId);
182         testRequest.setConfigurationName(configurationName);
183         testRequest.setNetworkId(networkId);
184         testRequest.setResponseBody(responseBody);
185         testRequest.setStatusMessage(statusMessage);
186         testRequest.setProgress((long) 50);
187         testRequest.setServiceInstanceId(lastModifiedBy);
188         testRequest.setLastModifiedBy(lastModifiedBy);
189         testRequest.setVfModuleId(vfModuleId);
190         testRequest.setVfModuleName(vfModuleName);
191         testRequest.setVnfId(vnfId);
192         testRequest.setServiceInstanceId(serviceInstanceId);
193         testRequest.setVfModuleName(vfModuleName);
194         testRequest.setVnfOutputs(vnfOutputs);
195
196
197         dbAdapter.updateInfraRequest(testRequest.getRequestId(), lastModifiedBy, statusMessage, responseBody,
198                 requestStatus, progress, vnfOutputs, serviceInstanceId, networkId, vnfId, vfModuleId, volumeGroupId,
199                 serviceInstanceName, configurationId, configurationName, vfModuleName);
200         InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
201         // Then
202         assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
203                 .ignoring("startTime").ignoring("modifyTime"));
204
205
206     }
207
208     @Test
209     public void UpdateByInvalidRequestId() throws MsoRequestsDbException {
210         // Given
211         String requestId = "invalidRequestId";
212
213         try {
214             dbAdapter.updateInfraRequest(requestId, null, null, null, null, null, null, null, null, null, null, null,
215                     null, null, null, null);
216             fail("Expected MsoRequestsDbException to be thrown");
217         } catch (Exception e) {
218             assertEquals(e.getMessage(), "Error retrieving MSO Infra Requests DB for Request ID invalidRequestId");
219         }
220     }
221
222
223     @Test
224     public void updateInfraRequestNulls() throws MsoRequestsDbException {
225         InfraActiveRequests testRequest = setupTestEntities();
226         // Given
227         String requestId = "00032ab7-3fb3-42e5-965d-8ea592502017";
228
229         // When
230         dbAdapter.updateInfraRequest(testRequest.getRequestId(), testRequest.getLastModifiedBy(), null, null, null,
231                 null, null, null, null, null, null, null, null, null, null, null);
232         InfraActiveRequests infraRequest = dbAdapter.getInfraRequest(requestId);
233         // Then
234         assertThat(infraRequest, sameBeanAs(testRequest).ignoring("requestBody").ignoring("endTime")
235                 .ignoring("startTime").ignoring("modifyTime"));
236     }
237
238     @Test
239     public void getSiteStatusNotDisabled() throws MsoRequestsDbException {
240         setupTestEntities();
241         // Given
242         String siteName = "siteName";
243
244         // When
245         boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
246
247         // Then
248         assertEquals(siteDisabled, true);
249     }
250
251     @Test
252     public void getSiteStatusDisabled() throws MsoRequestsDbException {
253         setupTestEntities();
254         // Given
255         String siteName = "testSite";
256
257         // When
258         boolean siteDisabled = dbAdapter.getSiteStatus(siteName);
259
260         // Then
261         assertEquals(siteDisabled, false);
262     }
263
264     @Test
265     public void setInstanceNfvoMappingRepository() throws MsoRequestsDbException {
266         InstanceNfvoMapping instanceNfvoMapping = new InstanceNfvoMapping();
267         String instanceId = "9b9f02c0-298b-458a-bc9c-be3692e4f354";
268         String nfvoName = "testNFVO";
269         String endpoint = "http://127.0.0.1:80/";
270         String username = "admin";
271         String password = "admin";
272         String apiRoot = "v1";
273
274         instanceNfvoMapping.setApiRoot(apiRoot);
275         instanceNfvoMapping.setEndpoint(endpoint);
276         instanceNfvoMapping.setInstanceId(instanceId);
277         instanceNfvoMapping.setNfvoName(nfvoName);
278         instanceNfvoMapping.setUsername(username);
279         instanceNfvoMapping.setPassword(password);
280
281         dbAdapter.setInstanceNfvoMappingRepository(instanceId, nfvoName, endpoint, username, password, apiRoot);
282         InstanceNfvoMapping dbInstNfvoMap = dbAdapter.getInstanceNfvoMapping(instanceId);
283         assertThat(dbInstNfvoMap, sameBeanAs(instanceNfvoMapping));
284     }
285
286
287     @Test
288     public void updateServiceOperation() throws MsoRequestsDbException {
289         String serviceId = "serviceid";
290         String operationId = "operationid";
291         String serviceName = "servicename";
292         String operation = "newOperationType";
293         String userId = "NewUserId";
294         String result = "NewResult";
295         String operationContent = "newOperationContent";
296         String progress = "Newprogress";
297         String reason = "NewReason";
298
299         OperationStatus updatedOperationStatus = new OperationStatus();
300
301
302
303         updatedOperationStatus.setServiceId(serviceId);
304         updatedOperationStatus.setServiceName(serviceName);
305         updatedOperationStatus.setOperationId(operationId);
306         updatedOperationStatus.setOperation(operation);
307         updatedOperationStatus.setUserId(userId);
308         updatedOperationStatus.setResult(result);
309         updatedOperationStatus.setProgress(progress);
310         updatedOperationStatus.setReason(reason);
311         updatedOperationStatus.setOperationContent(operationContent);
312
313         dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
314                 progress, reason);
315         OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
316         assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
317     }
318
319
320     @Test
321     public void updateServiceOperation_Not_Found() throws MsoRequestsDbException {
322         TestAppender.events.clear();
323         String serviceId = "badserviceId";
324         String operationId = "operationid";
325         String operation = "newOperationType";
326         String userId = "NewUserId";
327         String result = "NewResult";
328         String operationContent = "newOperationContent";
329         String progress = "Newprogress";
330         String reason = "NewReason";
331
332         OperationStatus updatedOperationStatus = new OperationStatus();
333
334
335
336         updatedOperationStatus.setServiceId(serviceId);
337         updatedOperationStatus.setOperationId(operationId);
338         updatedOperationStatus.setOperation(operation);
339         updatedOperationStatus.setUserId(userId);
340         updatedOperationStatus.setResult(result);
341         updatedOperationStatus.setProgress(progress);
342         updatedOperationStatus.setReason(reason);
343         updatedOperationStatus.setOperationContent(operationContent);
344
345         dbAdapter.updateServiceOperationStatus(serviceId, operationId, operation, userId, result, operationContent,
346                 progress, reason);
347         OperationStatus dbOpStatus = operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
348         assertThat(dbOpStatus, sameBeanAs(updatedOperationStatus).ignoring("operateAt").ignoring("finishedAt"));
349     }
350
351     @Test
352     public void initResourceOperationStatus() throws MsoRequestsDbException {
353         String resourceTemplateUUIDs = "template1:template2:template3:";
354         String serviceId = "serviceId";
355         String operationId = "operationId";
356         String operationType = "operationType";
357
358         ResourceOperationStatus resource1 = new ResourceOperationStatus();
359         resource1.setOperationId(operationId);
360         resource1.setServiceId(serviceId);
361         resource1.setResourceTemplateUUID("template1");
362         resource1.setOperType(operationType);
363         resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
364         resource1.setStatusDescription("Waiting for start");
365
366         ResourceOperationStatus resource2 = new ResourceOperationStatus();
367         resource2.setOperationId(operationId);
368         resource2.setServiceId(serviceId);
369         resource2.setResourceTemplateUUID("template2");
370         resource2.setOperType(operationType);
371         resource2.setStatus(RequestsDbConstant.Status.PROCESSING);
372         resource2.setStatusDescription("Waiting for start");
373
374         ResourceOperationStatus resource3 = new ResourceOperationStatus();
375         resource3.setOperationId(operationId);
376         resource3.setServiceId(serviceId);
377         resource3.setResourceTemplateUUID("template3");
378         resource3.setOperType(operationType);
379         resource3.setStatus(RequestsDbConstant.Status.PROCESSING);
380         resource3.setStatusDescription("Waiting for start");
381
382         List<ResourceOperationStatus> expectedResult = new ArrayList<ResourceOperationStatus>();
383         expectedResult.add(resource1);
384         expectedResult.add(resource2);
385         expectedResult.add(resource3);
386
387         dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
388         List<ResourceOperationStatus> testList =
389                 resourceOperationStatusRepo.findByServiceIdAndOperationId(serviceId, operationId);
390         assertThat(testList, sameBeanAs(expectedResult));
391     }
392
393     @Test
394     public void getResourceOperationStatus() throws MsoRequestsDbException {
395         String resourceTemplateUUIDs = "template1";
396         String serviceId = "serviceId";
397         String operationId = "operationId";
398         String operationType = "operationType";
399
400         ResourceOperationStatus resource1 = new ResourceOperationStatus();
401         resource1.setOperationId(operationId);
402         resource1.setServiceId(serviceId);
403         resource1.setResourceTemplateUUID("template1");
404         resource1.setOperType(operationType);
405         resource1.setStatus(RequestsDbConstant.Status.PROCESSING);
406         resource1.setStatusDescription("Waiting for start");
407
408
409         dbAdapter.initResourceOperationStatus(serviceId, operationId, operationType, resourceTemplateUUIDs);
410
411         ResourceOperationStatus actualResource =
412                 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
413         assertThat(actualResource, sameBeanAs(resource1));
414     }
415
416     @Test
417     public void updateResourceOperationStatus() throws MsoRequestsDbException {
418         TestAppender.events.clear();
419         String resourceTemplateUUID = "template1";
420         String serviceId = "serviceId";
421         String operationId = "operationId";
422         String operationType = "operationType";
423         String resourceInstanceID = "resourceInstanceID";
424         String jobId = "jobId";
425         String status = RequestsDbConstant.Status.FINISHED;
426         String progress = "50";
427         String errorCode = "errorCode";
428         String statusDescription = "statusDescription";
429
430
431         ResourceOperationStatus expectedResource = new ResourceOperationStatus();
432         expectedResource.setOperationId(operationId);
433         expectedResource.setServiceId(serviceId);
434         expectedResource.setResourceTemplateUUID(resourceTemplateUUID);
435         expectedResource.setOperType(operationType);
436         expectedResource.setJobId(jobId);
437         expectedResource.setErrorCode(errorCode);
438         expectedResource.setStatus(RequestsDbConstant.Status.FINISHED);
439         expectedResource.setStatusDescription(statusDescription);
440         expectedResource.setProgress(progress);
441         expectedResource.setResourceInstanceID(resourceInstanceID);
442
443
444         dbAdapter.updateResourceOperationStatus(serviceId, operationId, resourceTemplateUUID, operationType,
445                 resourceInstanceID, jobId, status, progress, errorCode, statusDescription);
446
447         ResourceOperationStatus actualResource =
448                 dbAdapter.getResourceOperationStatus(serviceId, operationId, "template1");
449         assertThat(actualResource, sameBeanAs(expectedResource));
450     }
451 }