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