33805f9faa221f3c5c285bc9a8408c65f4b91ac8
[so.git] / adapters / mso-requests-db-adapter / src / test / java / org / onap / so / adapters / requestsdb / client / RequestsDbClientTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 - 2018 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.client;
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.assertFalse;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertNull;
29 import static org.junit.Assert.assertTrue;
30 import java.sql.Timestamp;
31 import java.time.Instant;
32 import java.time.temporal.ChronoUnit;
33 import java.util.ArrayList;
34 import java.util.HashMap;
35 import java.util.List;
36 import java.util.Map;
37 import java.util.UUID;
38 import org.junit.Before;
39 import org.junit.Test;
40 import org.onap.so.adapters.requestsdb.RequestsAdapterBase;
41 import org.onap.so.db.request.beans.CloudApiRequests;
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.OperationalEnvDistributionStatus;
45 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
46 import org.onap.so.db.request.beans.RequestProcessingData;
47 import org.onap.so.serviceinstancebeans.ModelType;
48 import org.springframework.beans.factory.annotation.Autowired;
49 import org.springframework.boot.web.server.LocalServerPort;
50
51 public class RequestsDbClientTest extends RequestsAdapterBase {
52
53     @Autowired
54     private RequestDbClientPortChanger requestsDbClient;
55
56     private InfraActiveRequests infraActiveRequests;
57
58     @LocalServerPort
59     private int port;
60
61     @Before
62     public void setup() {
63         requestsDbClient.setPort(port);
64
65         infraActiveRequests = new InfraActiveRequests();
66         infraActiveRequests.setRequestId(UUID.randomUUID().toString());
67         infraActiveRequests.setOperationalEnvId(UUID.randomUUID().toString());
68         infraActiveRequests.setServiceInstanceId(UUID.randomUUID().toString());
69         infraActiveRequests.setServiceInstanceName("serviceInstanceNameTest");
70         infraActiveRequests.setVnfId(UUID.randomUUID().toString());
71         infraActiveRequests.setVnfName("vnfInstanceNameTest");
72         infraActiveRequests.setVfModuleId(UUID.randomUUID().toString());
73         infraActiveRequests.setVfModuleName("vfModuleInstanceNameTest");
74         infraActiveRequests.setVolumeGroupId(UUID.randomUUID().toString());
75         infraActiveRequests.setVolumeGroupName("volumeGroupInstanceNameTest");
76         infraActiveRequests.setNetworkId(UUID.randomUUID().toString());
77         infraActiveRequests.setNetworkName("networkInstanceNameTest");
78         infraActiveRequests.setConfigurationId(UUID.randomUUID().toString());
79         infraActiveRequests.setConfigurationName("configurationInstanceNameTest");
80         infraActiveRequests.setCloudRegion("1");
81         infraActiveRequests.setTenantId(UUID.randomUUID().toString());
82         infraActiveRequests.setRequestScope("operationalEnvironment");
83         infraActiveRequests.setRequestorId(UUID.randomUUID().toString());
84         infraActiveRequests.setSource("sourceTest");
85         infraActiveRequests.setOperationalEnvName(UUID.randomUUID().toString());
86         infraActiveRequests.setRequestStatus("IN_PROGRESS");
87         infraActiveRequests.setRequestAction("someaction");
88         infraActiveRequests.setStartTime(new Timestamp(System.currentTimeMillis()));
89         infraActiveRequests
90                 .setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");
91         List<CloudApiRequests> cloudApiRequests = new ArrayList<>();
92         CloudApiRequests cloudRequest = new CloudApiRequests();
93         cloudRequest.setCloudIdentifier("heatstackanme/id");
94         cloudRequest.setId(1);
95         cloudRequest.setRequestBody("requestBody");
96         cloudRequest.setRequestId(infraActiveRequests.getRequestId());
97         cloudApiRequests.add(cloudRequest);
98         infraActiveRequests.setCloudApiRequests(cloudApiRequests);
99         requestsDbClient.save(infraActiveRequests);
100
101         InfraActiveRequests infraActiveRequests2 = new InfraActiveRequests();
102         infraActiveRequests2.setRequestId(UUID.randomUUID().toString());
103         infraActiveRequests2.setOperationalEnvId(UUID.randomUUID().toString());
104         infraActiveRequests2.setServiceInstanceId(UUID.randomUUID().toString());
105         infraActiveRequests2.setServiceInstanceName("serviceInstanceNameTest");
106         infraActiveRequests2.setVnfId(UUID.randomUUID().toString());
107         infraActiveRequests2.setVnfName("vnfInstanceNameTest");
108         infraActiveRequests2.setVfModuleId(UUID.randomUUID().toString());
109         infraActiveRequests2.setVfModuleName("vfModuleInstanceNameTest");
110         infraActiveRequests2.setVolumeGroupId(UUID.randomUUID().toString());
111         infraActiveRequests2.setVolumeGroupName("volumeGroupInstanceNameTest");
112         infraActiveRequests2.setNetworkId(UUID.randomUUID().toString());
113         infraActiveRequests2.setNetworkName("networkInstanceNameTest");
114         infraActiveRequests2.setConfigurationId(UUID.randomUUID().toString());
115         infraActiveRequests2.setConfigurationName("configurationInstanceNameTest");
116         infraActiveRequests2.setCloudRegion("1");
117         infraActiveRequests2.setTenantId(UUID.randomUUID().toString());
118         infraActiveRequests2.setRequestScope("operationalEnvironment");
119         infraActiveRequests2.setRequestorId(UUID.randomUUID().toString());
120         infraActiveRequests2.setSource("sourceTest");
121         infraActiveRequests2.setOperationalEnvName(UUID.randomUUID().toString());
122         infraActiveRequests2.setRequestStatus("IN_PROGRESS");
123         infraActiveRequests2.setRequestAction("someaction");
124         infraActiveRequests2.setStartTime(new Timestamp(System.currentTimeMillis()));
125         infraActiveRequests
126                 .setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");
127     }
128
129     private void verifyOperationStatus(OperationStatus request, OperationStatus response) {
130         assertThat(request, sameBeanAs(response).ignoring("operateAt").ignoring("finishedAt"));
131     }
132
133
134     private void verifyInfraActiveRequests(InfraActiveRequests infraActiveRequestsResponse) {
135         assertThat(infraActiveRequestsResponse, sameBeanAs(infraActiveRequests).ignoring("modifyTime").ignoring("log")
136                 .ignoring("cloudApiRequests.created").ignoring("cloudApiRequests.id"));
137     }
138
139     @Test
140     public void getCloudOrchestrationFiltersFromInfraActiveTest() {
141         Map<String, String> requestMap = new HashMap<>();
142         requestMap.put("operationalEnvironmentId", infraActiveRequests.getOperationalEnvId());
143         requestMap.put("operationalEnvironmentName", infraActiveRequests.getOperationalEnvName());
144         requestMap.put("resourceType", "operationalEnvironment");
145
146         List<InfraActiveRequests> iarr = requestsDbClient.getCloudOrchestrationFiltersFromInfraActive(requestMap);
147
148         assertEquals(1, iarr.size());
149         InfraActiveRequests infraActiveRequestsResponse = iarr.get(0);
150         verifyInfraActiveRequests(infraActiveRequestsResponse);
151     }
152
153     @Test
154     public void checkVnfIdStatusTest() {
155         InfraActiveRequests infraActiveRequestsResponse =
156                 requestsDbClient.checkVnfIdStatus(infraActiveRequests.getOperationalEnvId());
157         verifyInfraActiveRequests(infraActiveRequestsResponse);
158         assertNull(requestsDbClient.checkVnfIdStatus(UUID.randomUUID().toString()));
159     }
160
161     @Test
162     public void checkInstanceNameDuplicateTest() {
163         InfraActiveRequests infraActiveRequestsResponse = requestsDbClient.checkInstanceNameDuplicate(null,
164                 infraActiveRequests.getOperationalEnvName(), infraActiveRequests.getRequestScope());
165
166         verifyInfraActiveRequests(infraActiveRequestsResponse);
167     }
168
169     @Test
170     public void checkInstanceNameDuplicateViaTest() {
171         Map<String, String> requestMap = new HashMap<>();
172         requestMap.put("operationalEnvironmentId", infraActiveRequests.getOperationalEnvId());
173
174         InfraActiveRequests infraActiveRequestsResponse = requestsDbClient.checkInstanceNameDuplicate(
175                 (HashMap<String, String>) requestMap, null, infraActiveRequests.getRequestScope());
176
177         verifyInfraActiveRequests(infraActiveRequestsResponse);
178     }
179
180     @Test
181     public void getOrchestrationFiltersFromInfraActiveTest() {
182         Map<String, List<String>> requestMap = new HashMap<>();
183         List<String> values = new ArrayList<>();
184         values.add("EQUALS");
185         values.add(infraActiveRequests.getServiceInstanceId());
186         requestMap.put("serviceInstanceId", values);
187
188         values = new ArrayList<>();
189         values.add("EQUALS");
190         values.add(infraActiveRequests.getServiceInstanceName());
191         requestMap.put("serviceInstanceName", values);
192
193         List<InfraActiveRequests> iaar = requestsDbClient.getOrchestrationFiltersFromInfraActive(requestMap);
194
195         assertEquals(1, iaar.size());
196         InfraActiveRequests infraActiveRequestsResponse = iaar.get(0);
197
198         verifyInfraActiveRequests(infraActiveRequestsResponse);
199         values = new ArrayList<>();
200         values.add("EQUALS");
201         values.add(UUID.randomUUID().toString());
202         requestMap.put("serviceInstanceName", values);
203         requestsDbClient.getOrchestrationFiltersFromInfraActive(requestMap);
204     }
205
206     @Test
207     public void getInfraActiveRequestbyRequestIdTest() {
208         InfraActiveRequests infraActiveRequestsResponse =
209                 requestsDbClient.getInfraActiveRequestbyRequestId(infraActiveRequests.getRequestId());
210         verifyInfraActiveRequests(infraActiveRequestsResponse);
211         infraActiveRequestsResponse =
212                 requestsDbClient.getInfraActiveRequestbyRequestId(infraActiveRequests.getRequestId());
213
214         assertNull(requestsDbClient.getInfraActiveRequestbyRequestId(UUID.randomUUID().toString()));
215     }
216
217     @Test
218     public void getInfraActiveRequestbyRequestIdWhereRequestUrlNullTest() {
219         // requestUrl setup to null and save
220         infraActiveRequests.setRequestUrl(null);
221         requestsDbClient.updateInfraActiveRequests(infraActiveRequests);
222         InfraActiveRequests infraActiveRequestsResponse =
223                 requestsDbClient.getInfraActiveRequestbyRequestId(infraActiveRequests.getRequestId());
224         verifyInfraActiveRequests(infraActiveRequestsResponse);
225
226         assertNull(infraActiveRequestsResponse.getRequestUrl());
227     }
228
229     @Test
230     public void getOneByServiceIdAndOperationIdTest() {
231         OperationStatus operationStatus = new OperationStatus();
232         operationStatus.setProgress("IN_PROGRESS");
233         operationStatus.setResult("FAILED");
234         operationStatus.setServiceId(UUID.randomUUID().toString());
235         operationStatus.setOperationContent("operation-content");
236         operationStatus.setOperation("operation");
237         operationStatus.setOperationId(UUID.randomUUID().toString());
238         operationStatus.setReason("reason-test");
239         operationStatus.setUserId(UUID.randomUUID().toString());
240         operationStatus.setServiceName("test-service");
241         requestsDbClient.save(operationStatus);
242
243         OperationStatus operationStatusResponse = requestsDbClient
244                 .getOneByServiceIdAndOperationId(operationStatus.getServiceId(), operationStatus.getOperationId());
245
246         verifyOperationStatus(operationStatus, operationStatusResponse);
247
248         assertNull(requestsDbClient.getOneByServiceIdAndOperationId(UUID.randomUUID().toString(),
249                 operationStatus.getOperationId()));
250     }
251
252
253     @Test
254     public void getRequestProcessingDataBySoRequestIdTest() {
255         List<RequestProcessingData> requestProcessingDataList =
256                 requestsDbClient.getRequestProcessingDataBySoRequestId("00032ab7-na18-42e5-965d-8ea592502018");
257         assertNotNull(requestProcessingDataList);
258         assertFalse(requestProcessingDataList.isEmpty());
259         assertEquals(2, requestProcessingDataList.size());
260     }
261
262
263     @Test
264     public void findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestIdTest() {
265         OperationalEnvServiceModelStatus operationalEnvServiceModelStatus =
266                 requestsDbClient.findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId("1234", "TEST1234",
267                         "00032ab7-3fb3-42e5-965d-8ea592502017");
268         assertNotNull(operationalEnvServiceModelStatus);
269         assertEquals("1234", operationalEnvServiceModelStatus.getOperationalEnvId());
270         assertEquals("TEST1234", operationalEnvServiceModelStatus.getServiceModelVersionId());
271
272         OperationalEnvServiceModelStatus operationalEnvServiceModelStatus1 =
273                 requestsDbClient.findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId("1234", "TEST1235",
274                         "00032ab7-3fb3-42e5-965d-8ea592502018");
275         assertNotNull(operationalEnvServiceModelStatus1);
276         assertEquals("00032ab7-3fb3-42e5-965d-8ea592502018", operationalEnvServiceModelStatus1.getRequestId());
277         assertEquals("1234", operationalEnvServiceModelStatus1.getOperationalEnvId());
278         assertEquals("TEST1235", operationalEnvServiceModelStatus1.getServiceModelVersionId());
279     }
280
281     @Test
282     public void getAllByOperationalEnvIdAndRequestId() {
283         List<OperationalEnvServiceModelStatus> operationalEnvServiceModelStatuses =
284                 requestsDbClient.getAllByOperationalEnvIdAndRequestId("1234", "00032ab7-3fb3-42e5-965d-8ea592502017");
285         assertNotNull(operationalEnvServiceModelStatuses);
286         assertFalse(operationalEnvServiceModelStatuses.isEmpty());
287         assertEquals(2, operationalEnvServiceModelStatuses.size());
288     }
289
290     @Test
291     public void getDistributionStatusByIdTest() {
292         OperationalEnvDistributionStatus operationalEnvDistributionStatus =
293                 requestsDbClient.getDistributionStatusById("111");
294         assertNotNull(operationalEnvDistributionStatus);
295         assertEquals("111", operationalEnvDistributionStatus.getDistributionId());
296         assertEquals("ERROR", operationalEnvDistributionStatus.getDistributionIdErrorReason());
297         assertEquals("00032ab7-3fb3-42e5-965d-8ea592502017", operationalEnvDistributionStatus.getRequestId());
298     }
299
300     @Test
301     public void getRequestProcessingDataBySoRequestIdAndName() {
302         RequestProcessingData requestProcessingData = requestsDbClient
303                 .getRequestProcessingDataBySoRequestIdAndNameAndGrouping("00032ab7-na18-42e5-965d-8ea592502018",
304                         "requestAction", "7d2e8c07-4d10-456d-bddc-37abf38ca714");
305         assertNotNull(requestProcessingData);
306
307     }
308
309     @Test
310     public void getInfraActiveRequestbyRequestId_Filters_Test() {
311         Map<String, String[]> filters = new HashMap<>();
312         filters.put("requestStatus", new String[] {"EQ", "IN_PROGRESS"});
313         filters.put("action", new String[] {"EQ", "create"});
314         filters.put("serviceInstanceId", new String[] {"EQ", infraActiveRequests.getServiceInstanceId()});
315         List<InfraActiveRequests> infraActiveRequestsResponse = requestsDbClient.getRequest(filters);
316
317         verifyInfraActiveRequests(infraActiveRequestsResponse.get(0));
318     }
319
320     @Test
321     public void getInProgressVolumeGroupsAndVfModulesTest() {
322         InfraActiveRequests request = new InfraActiveRequests();
323         request.setRequestId(UUID.randomUUID().toString());
324         request.setVfModuleId(UUID.randomUUID().toString());
325         request.setRequestStatus("IN_PROGRESS");
326         request.setRequestScope(ModelType.vfModule.toString());
327         Instant startInstant = Instant.now().minus(3, ChronoUnit.MINUTES);
328         request.setStartTime(Timestamp.from(startInstant));
329         request.setRequestAction("create");
330         requestsDbClient.save(request);
331
332         List<InfraActiveRequests> infraActiveRequests = requestsDbClient.getInProgressVolumeGroupsAndVfModules();
333         assertThat(request, sameBeanAs(infraActiveRequests.get(0)).ignoring("modifyTime"));
334     }
335
336     @Test
337     public void getRequestProcessingDataBySoRequestIdAndNameAndTag() {
338         List<RequestProcessingData> requestProcessingData =
339                 requestsDbClient.getRequestProcessingDataBySoRequestIdAndNameAndTagOrderByCreateTimeDesc(
340                         "00032ab7-na18-42e5-965d-8ea592502018", "requestAction", "pincFabricConfigRequest");
341         assertNotNull(requestProcessingData);
342         assertTrue(requestProcessingData.size() == 1);
343         assertEquals("assign", requestProcessingData.get(0).getValue());
344     }
345 }