2  * ============LICENSE_START=======================================================
 
   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
 
  11  *      http://www.apache.org/licenses/LICENSE-2.0
 
  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=========================================================
 
  21 package org.onap.so.adapters.requestsdb.client;
 
  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 java.sql.Timestamp;
 
  30 import java.time.Instant;
 
  31 import java.time.temporal.ChronoUnit;
 
  32 import java.util.ArrayList;
 
  33 import java.util.HashMap;
 
  34 import java.util.List;
 
  36 import java.util.UUID;
 
  37 import org.junit.Before;
 
  38 import org.junit.Test;
 
  39 import org.onap.so.adapters.requestsdb.RequestsAdapterBase;
 
  40 import org.onap.so.db.request.beans.CloudApiRequests;
 
  41 import org.onap.so.db.request.beans.InfraActiveRequests;
 
  42 import org.onap.so.db.request.beans.OperationStatus;
 
  43 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
 
  44 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
 
  45 import org.onap.so.db.request.beans.RequestProcessingData;
 
  46 import org.onap.so.serviceinstancebeans.ModelType;
 
  47 import org.springframework.beans.factory.annotation.Autowired;
 
  48 import org.springframework.boot.web.server.LocalServerPort;
 
  50 public class RequestsDbClientTest extends RequestsAdapterBase {
 
  53     private RequestDbClientPortChanger requestsDbClient;
 
  55     private InfraActiveRequests infraActiveRequests;
 
  62         requestsDbClient.setPort(port);
 
  64         infraActiveRequests = new InfraActiveRequests();
 
  65         infraActiveRequests.setRequestId(UUID.randomUUID().toString());
 
  66         infraActiveRequests.setOperationalEnvId(UUID.randomUUID().toString());
 
  67         infraActiveRequests.setServiceInstanceId(UUID.randomUUID().toString());
 
  68         infraActiveRequests.setServiceInstanceName("serviceInstanceNameTest");
 
  69         infraActiveRequests.setVnfId(UUID.randomUUID().toString());
 
  70         infraActiveRequests.setVnfName("vnfInstanceNameTest");
 
  71         infraActiveRequests.setVfModuleId(UUID.randomUUID().toString());
 
  72         infraActiveRequests.setVfModuleName("vfModuleInstanceNameTest");
 
  73         infraActiveRequests.setVolumeGroupId(UUID.randomUUID().toString());
 
  74         infraActiveRequests.setVolumeGroupName("volumeGroupInstanceNameTest");
 
  75         infraActiveRequests.setNetworkId(UUID.randomUUID().toString());
 
  76         infraActiveRequests.setNetworkName("networkInstanceNameTest");
 
  77         infraActiveRequests.setConfigurationId(UUID.randomUUID().toString());
 
  78         infraActiveRequests.setConfigurationName("configurationInstanceNameTest");
 
  79         infraActiveRequests.setAicCloudRegion("1");
 
  80         infraActiveRequests.setTenantId(UUID.randomUUID().toString());
 
  81         infraActiveRequests.setRequestScope("operationalEnvironment");
 
  82         infraActiveRequests.setRequestorId(UUID.randomUUID().toString());
 
  83         infraActiveRequests.setSource("sourceTest");
 
  84         infraActiveRequests.setOperationalEnvName(UUID.randomUUID().toString());
 
  85         infraActiveRequests.setRequestStatus("IN_PROGRESS");
 
  86         infraActiveRequests.setAction("create");
 
  87         infraActiveRequests.setRequestAction("someaction");
 
  88         infraActiveRequests.setStartTime(new Timestamp(System.currentTimeMillis()));
 
  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);
 
 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.setAicCloudRegion("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.setAction("create");
 
 124         infraActiveRequests2.setRequestAction("someaction");
 
 125         infraActiveRequests2.setStartTime(new Timestamp(System.currentTimeMillis()));
 
 127                 .setRequestUrl("http://localhost:8080/onap/so/infra/serviceInstantiation/v7/serviceInstances");
 
 130     private void verifyOperationStatus(OperationStatus request, OperationStatus response) {
 
 131         assertThat(request, sameBeanAs(response).ignoring("operateAt").ignoring("finishedAt"));
 
 135     private void verifyInfraActiveRequests(InfraActiveRequests infraActiveRequestsResponse) {
 
 136         assertThat(infraActiveRequestsResponse, sameBeanAs(infraActiveRequests).ignoring("modifyTime").ignoring("log")
 
 137                 .ignoring("cloudApiRequests.created").ignoring("cloudApiRequests.id"));
 
 141     public void getCloudOrchestrationFiltersFromInfraActiveTest() {
 
 142         Map<String, String> requestMap = new HashMap<>();
 
 143         requestMap.put("operationalEnvironmentId", infraActiveRequests.getOperationalEnvId());
 
 144         requestMap.put("operationalEnvironmentName", infraActiveRequests.getOperationalEnvName());
 
 145         requestMap.put("resourceType", "operationalEnvironment");
 
 147         List<InfraActiveRequests> iarr = requestsDbClient.getCloudOrchestrationFiltersFromInfraActive(requestMap);
 
 149         assertEquals(1, iarr.size());
 
 150         InfraActiveRequests infraActiveRequestsResponse = iarr.get(0);
 
 151         verifyInfraActiveRequests(infraActiveRequestsResponse);
 
 155     public void checkVnfIdStatusTest() {
 
 156         InfraActiveRequests infraActiveRequestsResponse =
 
 157                 requestsDbClient.checkVnfIdStatus(infraActiveRequests.getOperationalEnvId());
 
 158         verifyInfraActiveRequests(infraActiveRequestsResponse);
 
 159         assertNull(requestsDbClient.checkVnfIdStatus(UUID.randomUUID().toString()));
 
 163     public void checkInstanceNameDuplicateTest() {
 
 164         InfraActiveRequests infraActiveRequestsResponse = requestsDbClient.checkInstanceNameDuplicate(null,
 
 165                 infraActiveRequests.getOperationalEnvName(), infraActiveRequests.getRequestScope());
 
 167         verifyInfraActiveRequests(infraActiveRequestsResponse);
 
 171     public void checkInstanceNameDuplicateViaTest() {
 
 172         Map<String, String> requestMap = new HashMap<>();
 
 173         requestMap.put("operationalEnvironmentId", infraActiveRequests.getOperationalEnvId());
 
 175         InfraActiveRequests infraActiveRequestsResponse = requestsDbClient.checkInstanceNameDuplicate(
 
 176                 (HashMap<String, String>) requestMap, null, infraActiveRequests.getRequestScope());
 
 178         verifyInfraActiveRequests(infraActiveRequestsResponse);
 
 182     public void getOrchestrationFiltersFromInfraActiveTest() {
 
 183         Map<String, List<String>> requestMap = new HashMap<>();
 
 184         List<String> values = new ArrayList<>();
 
 185         values.add("EQUALS");
 
 186         values.add(infraActiveRequests.getServiceInstanceId());
 
 187         requestMap.put("serviceInstanceId", values);
 
 189         values = new ArrayList<>();
 
 190         values.add("EQUALS");
 
 191         values.add(infraActiveRequests.getServiceInstanceName());
 
 192         requestMap.put("serviceInstanceName", values);
 
 194         List<InfraActiveRequests> iaar = requestsDbClient.getOrchestrationFiltersFromInfraActive(requestMap);
 
 196         assertEquals(1, iaar.size());
 
 197         InfraActiveRequests infraActiveRequestsResponse = iaar.get(0);
 
 199         verifyInfraActiveRequests(infraActiveRequestsResponse);
 
 200         values = new ArrayList<>();
 
 201         values.add("EQUALS");
 
 202         values.add(UUID.randomUUID().toString());
 
 203         requestMap.put("serviceInstanceName", values);
 
 204         requestsDbClient.getOrchestrationFiltersFromInfraActive(requestMap);
 
 208     public void getInfraActiveRequestbyRequestIdTest() {
 
 209         InfraActiveRequests infraActiveRequestsResponse =
 
 210                 requestsDbClient.getInfraActiveRequestbyRequestId(infraActiveRequests.getRequestId());
 
 211         verifyInfraActiveRequests(infraActiveRequestsResponse);
 
 212         infraActiveRequestsResponse =
 
 213                 requestsDbClient.getInfraActiveRequestbyRequestId(infraActiveRequests.getRequestId());
 
 215         assertNull(requestsDbClient.getInfraActiveRequestbyRequestId(UUID.randomUUID().toString()));
 
 219     public void getInfraActiveRequestbyRequestIdWhereRequestUrlNullTest() {
 
 220         // requestUrl setup to null and save
 
 221         infraActiveRequests.setRequestUrl(null);
 
 222         requestsDbClient.updateInfraActiveRequests(infraActiveRequests);
 
 223         InfraActiveRequests infraActiveRequestsResponse =
 
 224                 requestsDbClient.getInfraActiveRequestbyRequestId(infraActiveRequests.getRequestId());
 
 225         verifyInfraActiveRequests(infraActiveRequestsResponse);
 
 227         assertNull(infraActiveRequestsResponse.getRequestUrl());
 
 231     public void getOneByServiceIdAndOperationIdTest() {
 
 232         OperationStatus operationStatus = new OperationStatus();
 
 233         operationStatus.setProgress("IN_PROGRESS");
 
 234         operationStatus.setResult("FAILED");
 
 235         operationStatus.setServiceId(UUID.randomUUID().toString());
 
 236         operationStatus.setOperationContent("operation-content");
 
 237         operationStatus.setOperation("operation");
 
 238         operationStatus.setOperationId(UUID.randomUUID().toString());
 
 239         operationStatus.setReason("reason-test");
 
 240         operationStatus.setUserId(UUID.randomUUID().toString());
 
 241         operationStatus.setServiceName("test-service");
 
 242         requestsDbClient.save(operationStatus);
 
 244         OperationStatus operationStatusResponse = requestsDbClient
 
 245                 .getOneByServiceIdAndOperationId(operationStatus.getServiceId(), operationStatus.getOperationId());
 
 247         verifyOperationStatus(operationStatus, operationStatusResponse);
 
 249         assertNull(requestsDbClient.getOneByServiceIdAndOperationId(UUID.randomUUID().toString(),
 
 250                 operationStatus.getOperationId()));
 
 255     public void getRequestProcessingDataBySoRequestIdTest() {
 
 256         List<RequestProcessingData> requestProcessingDataList =
 
 257                 requestsDbClient.getRequestProcessingDataBySoRequestId("00032ab7-na18-42e5-965d-8ea592502018");
 
 258         assertNotNull(requestProcessingDataList);
 
 259         assertFalse(requestProcessingDataList.isEmpty());
 
 260         assertEquals(2, requestProcessingDataList.size());
 
 265     public void findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestIdTest() {
 
 266         OperationalEnvServiceModelStatus operationalEnvServiceModelStatus =
 
 267                 requestsDbClient.findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId("1234", "TEST1234",
 
 268                         "00032ab7-3fb3-42e5-965d-8ea592502017");
 
 269         assertNotNull(operationalEnvServiceModelStatus);
 
 270         assertEquals("1234", operationalEnvServiceModelStatus.getOperationalEnvId());
 
 271         assertEquals("TEST1234", operationalEnvServiceModelStatus.getServiceModelVersionId());
 
 273         OperationalEnvServiceModelStatus operationalEnvServiceModelStatus1 =
 
 274                 requestsDbClient.findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId("1234", "TEST1235",
 
 275                         "00032ab7-3fb3-42e5-965d-8ea592502018");
 
 276         assertNotNull(operationalEnvServiceModelStatus1);
 
 277         assertEquals("00032ab7-3fb3-42e5-965d-8ea592502018", operationalEnvServiceModelStatus1.getRequestId());
 
 278         assertEquals("1234", operationalEnvServiceModelStatus1.getOperationalEnvId());
 
 279         assertEquals("TEST1235", operationalEnvServiceModelStatus1.getServiceModelVersionId());
 
 283     public void getAllByOperationalEnvIdAndRequestId() {
 
 284         List<OperationalEnvServiceModelStatus> operationalEnvServiceModelStatuses =
 
 285                 requestsDbClient.getAllByOperationalEnvIdAndRequestId("1234", "00032ab7-3fb3-42e5-965d-8ea592502017");
 
 286         assertNotNull(operationalEnvServiceModelStatuses);
 
 287         assertFalse(operationalEnvServiceModelStatuses.isEmpty());
 
 288         assertEquals(2, operationalEnvServiceModelStatuses.size());
 
 292     public void getDistributionStatusByIdTest() {
 
 293         OperationalEnvDistributionStatus operationalEnvDistributionStatus =
 
 294                 requestsDbClient.getDistributionStatusById("111");
 
 295         assertNotNull(operationalEnvDistributionStatus);
 
 296         assertEquals("111", operationalEnvDistributionStatus.getDistributionId());
 
 297         assertEquals("ERROR", operationalEnvDistributionStatus.getDistributionIdErrorReason());
 
 298         assertEquals("00032ab7-3fb3-42e5-965d-8ea592502017", operationalEnvDistributionStatus.getRequestId());
 
 302     public void getRequestProcessingDataBySoRequestIdAndName() {
 
 303         RequestProcessingData requestProcessingData = requestsDbClient
 
 304                 .getRequestProcessingDataBySoRequestIdAndNameAndGrouping("00032ab7-na18-42e5-965d-8ea592502018",
 
 305                         "requestAction", "7d2e8c07-4d10-456d-bddc-37abf38ca714");
 
 306         assertNotNull(requestProcessingData);
 
 311     public void getInfraActiveRequestbyRequestId_Filters_Test() {
 
 312         Map<String, String[]> filters = new HashMap<>();
 
 313         filters.put("requestStatus", new String[] {"EQ", "IN_PROGRESS"});
 
 314         filters.put("action", new String[] {"EQ", "create"});
 
 315         filters.put("serviceInstanceId", new String[] {"EQ", infraActiveRequests.getServiceInstanceId()});
 
 316         List<InfraActiveRequests> infraActiveRequestsResponse = requestsDbClient.getRequest(filters);
 
 318         verifyInfraActiveRequests(infraActiveRequestsResponse.get(0));
 
 322     public void getInProgressVolumeGroupsAndVfModulesTest() {
 
 323         InfraActiveRequests request = new InfraActiveRequests();
 
 324         request.setRequestId(UUID.randomUUID().toString());
 
 325         request.setVfModuleId(UUID.randomUUID().toString());
 
 326         request.setRequestStatus("IN_PROGRESS");
 
 327         request.setRequestScope(ModelType.vfModule.toString());
 
 328         Instant startInstant = Instant.now().minus(3, ChronoUnit.MINUTES);
 
 329         request.setStartTime(Timestamp.from(startInstant));
 
 330         request.setRequestAction("create");
 
 331         requestsDbClient.save(request);
 
 333         List<InfraActiveRequests> infraActiveRequests = requestsDbClient.getInProgressVolumeGroupsAndVfModules();
 
 334         assertThat(request, sameBeanAs(infraActiveRequests.get(0)).ignoring("modifyTime"));