From 42dd47e5c8431cafee7b949122672d422e100ae3 Mon Sep 17 00:00:00 2001 From: Andrei_Barcovschi Date: Wed, 6 Mar 2019 12:45:45 +0000 Subject: Fix for So Mon UI search result Change-Id: Ifa65f415e47fd3ef95a48c5299b04f1038148421 Issue-ID: SO-1507 Signed-off-by: Andrei_Barcovschi --- .../configuration/rest/CorsConfigurer.java | 8 +- .../db/api/DatabaseServiceProviderTest.java | 3 +- .../org/onap/so/monitoring/rest/api/Constants.java | 67 +++++++++ .../rest/api/SoMonitoringControllerTest.java | 86 +++++++---- .../src/test/resources/application-test.yaml | 9 ++ .../resources/databaseResponses/searchResult.json | 161 +++++++++++++++++++++ 6 files changed, 295 insertions(+), 39 deletions(-) create mode 100644 so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/Constants.java create mode 100644 so-monitoring/so-monitoring-service/src/test/resources/databaseResponses/searchResult.json (limited to 'so-monitoring') diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/CorsConfigurer.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/CorsConfigurer.java index 557e2a63b7..0bcf24dbd8 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/CorsConfigurer.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/CorsConfigurer.java @@ -20,16 +20,12 @@ package org.onap.so.monitoring.configuration.rest; -import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.core.Ordered; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; -import java.util.concurrent.TimeUnit; - /** * @author waqas.ikram@ericsson, eoin.hanan@ericsson.com */ @@ -38,8 +34,8 @@ public class CorsConfigurer { @Bean public CorsFilter corsFilter() { - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - CorsConfiguration config = new CorsConfiguration(); + final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("*"); config.addAllowedHeader("*"); diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/db/api/DatabaseServiceProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/db/api/DatabaseServiceProviderTest.java index 31ef747939..58666671a7 100644 --- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/db/api/DatabaseServiceProviderTest.java +++ b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/db/api/DatabaseServiceProviderTest.java @@ -79,7 +79,6 @@ public class DatabaseServiceProviderTest { assertTrue(objUnderTest.getSoInfraRequest(Collections.emptyMap(), 0, 0, null).isEmpty()); } - @Test public void test_GetSoInfraRequest_WithFilters_InfraActiveRequestsList() { final String searchUrl = URL_PROVIDER.getSearchUrl(0, 0, null); @@ -87,7 +86,7 @@ public class DatabaseServiceProviderTest { final Map filters = new HashMap<>(); filters.put("requestId", new String[] {"EQ", requestID}); - SoActiveInfraRequests soActiveInfraRequests = new SoActiveInfraRequests(); + final SoActiveInfraRequests soActiveInfraRequests = new SoActiveInfraRequests(); soActiveInfraRequests.setRequestId(requestID); final Optional response = diff --git a/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/Constants.java b/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/Constants.java new file mode 100644 index 0000000000..aef8234228 --- /dev/null +++ b/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/Constants.java @@ -0,0 +1,67 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.monitoring.rest.api; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.UUID; + +/** + * @author andrei.barcovschi@ericsson.com + * + */ +public class Constants { + + public static final String PROCRESS_DEF_ID = "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb"; + + public static final String EMPTY_ARRAY_RESPONSE = "[]"; + + public static final String PROCESS_INSTACE_ID = "5956a99d-9736-11e8-8caf-022ac9304eeb"; + + public static final String EMPTY_STRING = ""; + + public static final String SOURCE_TEST_FOLDER = "src/test/resources/camundaResponses/"; + + public static final Path PROCESS_DEF_RESPONSE_JSON_FILE = Paths.get(SOURCE_TEST_FOLDER + "processDefinition.json"); + + public static final Path ACTIVITY_INSTANCE_RESPONSE_JSON_FILE = + Paths.get(SOURCE_TEST_FOLDER + "activityInstance.json"); + + public static final Path PROCESS_INSTANCE_VARIABLES_RESPONSE_JSON_FILE = + Paths.get(SOURCE_TEST_FOLDER + "processInstanceVariables.json"); + + public static final Path PROCCESS_INSTANCE_RESPONSE_JSON_FILE = + Paths.get(SOURCE_TEST_FOLDER + "processInstance.json"); + + public static final Path SINGLE_PROCCESS_INSTANCE_RESPONSE_JSON_FILE = + Paths.get(SOURCE_TEST_FOLDER + "singleprocessInstance.json"); + + public static final Path SEARCH_RESULT_RESPONSE_JSON_FILE = + Paths.get("src/test/resources/databaseResponses/searchResult.json"); + + public static final String ID = UUID.randomUUID().toString(); + + public static final long END_TIME_IN_MS = 1546351200000l; + + public static final long START_TIME_IN_MS = 1546346700000l; + + private Constants() {} + +} diff --git a/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java b/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java index ca2a88d4a8..3ca184ebaa 100644 --- a/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java +++ b/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java @@ -23,6 +23,20 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.onap.so.monitoring.configuration.rest.RestTemplateConfiguration.CAMUNDA_REST_TEMPLATE; +import static org.onap.so.monitoring.configuration.rest.RestTemplateConfiguration.DATABASE_REST_TEMPLATE; +import static org.onap.so.monitoring.rest.api.Constants.ACTIVITY_INSTANCE_RESPONSE_JSON_FILE; +import static org.onap.so.monitoring.rest.api.Constants.EMPTY_ARRAY_RESPONSE; +import static org.onap.so.monitoring.rest.api.Constants.EMPTY_STRING; +import static org.onap.so.monitoring.rest.api.Constants.END_TIME_IN_MS; +import static org.onap.so.monitoring.rest.api.Constants.ID; +import static org.onap.so.monitoring.rest.api.Constants.PROCCESS_INSTANCE_RESPONSE_JSON_FILE; +import static org.onap.so.monitoring.rest.api.Constants.PROCESS_DEF_RESPONSE_JSON_FILE; +import static org.onap.so.monitoring.rest.api.Constants.PROCESS_INSTACE_ID; +import static org.onap.so.monitoring.rest.api.Constants.PROCESS_INSTANCE_VARIABLES_RESPONSE_JSON_FILE; +import static org.onap.so.monitoring.rest.api.Constants.PROCRESS_DEF_ID; +import static org.onap.so.monitoring.rest.api.Constants.SEARCH_RESULT_RESPONSE_JSON_FILE; +import static org.onap.so.monitoring.rest.api.Constants.SINGLE_PROCCESS_INSTANCE_RESPONSE_JSON_FILE; +import static org.onap.so.monitoring.rest.api.Constants.START_TIME_IN_MS; import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo; import static org.springframework.test.web.client.response.MockRestResponseCreators.withBadRequest; import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess; @@ -31,9 +45,10 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; +import java.util.Collections; +import java.util.HashMap; import java.util.List; -import java.util.UUID; +import java.util.Map; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; @@ -42,11 +57,13 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.onap.so.monitoring.configuration.camunda.CamundaRestUrlProvider; +import org.onap.so.monitoring.configuration.database.DatabaseUrlProvider; import org.onap.so.monitoring.model.ActivityInstanceDetail; import org.onap.so.monitoring.model.ProcessDefinitionDetail; import org.onap.so.monitoring.model.ProcessInstanceDetail; import org.onap.so.monitoring.model.ProcessInstanceIdDetail; import org.onap.so.monitoring.model.ProcessInstanceVariableDetail; +import org.onap.so.monitoring.model.SoInfraRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.context.SpringBootTest; @@ -57,56 +74,39 @@ import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.web.client.RestTemplate; - /** - * @author waqas.ikram@ericsson.com + * @author waqas.ikram@ericsson.com, andrei.barcovschi@ericsson.com */ @RunWith(SpringJUnit4ClassRunner.class) @ActiveProfiles("test") @SpringBootTest public class SoMonitoringControllerTest { - private static final String PROCRESS_DEF_ID = "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb"; - - private static final String EMPTY_ARRAY_RESPONSE = "[]"; - - private static final String PROCESS_INSTACE_ID = "5956a99d-9736-11e8-8caf-022ac9304eeb"; - - private static final String EMPTY_STRING = ""; - - private static final String SOURCE_TEST_FOLDER = "src/test/resources/camundaResponses/"; - - private static final Path PROCESS_DEF_RESPONSE_JSON_FILE = Paths.get(SOURCE_TEST_FOLDER + "processDefinition.json"); - - private static final Path ACTIVITY_INSTANCE_RESPONSE_JSON_FILE = - Paths.get(SOURCE_TEST_FOLDER + "activityInstance.json"); - - private static final Path PROCESS_INSTANCE_VARIABLES_RESPONSE_JSON_FILE = - Paths.get(SOURCE_TEST_FOLDER + "processInstanceVariables.json"); - - private static final Path PROCCESS_INSTANCE_RESPONSE_JSON_FILE = - Paths.get(SOURCE_TEST_FOLDER + "processInstance.json"); - - private static final Path SINGLE_PROCCESS_INSTANCE_RESPONSE_JSON_FILE = - Paths.get(SOURCE_TEST_FOLDER + "singleprocessInstance.json"); - - private static final String ID = UUID.randomUUID().toString(); - @Autowired @Qualifier(CAMUNDA_REST_TEMPLATE) private RestTemplate restTemplate; + @Autowired + @Qualifier(DATABASE_REST_TEMPLATE) + private RestTemplate dataBaseRestTemplate; + @Autowired private CamundaRestUrlProvider urlProvider; + @Autowired + private DatabaseUrlProvider databaseUrlProvider; + private MockRestServiceServer camundaMockServer; + private MockRestServiceServer databaseMockServer; + @Autowired private SoMonitoringController objUnderTest; @Before public void setUp() throws Exception { camundaMockServer = MockRestServiceServer.bindTo(restTemplate).build(); + databaseMockServer = MockRestServiceServer.bindTo(dataBaseRestTemplate).build(); } @Test @@ -339,7 +339,7 @@ public class SoMonitoringControllerTest { final List actual = (List) response.getEntity(); assertEquals(230, actual.size()); - ProcessInstanceVariableDetail variableDetail = actual.get(0); + final ProcessInstanceVariableDetail variableDetail = actual.get(0); assertEquals("serviceType", variableDetail.getName()); assertEquals("String", variableDetail.getType()); assertEquals("PNFSERVICE", variableDetail.getValue()); @@ -393,6 +393,30 @@ public class SoMonitoringControllerTest { } + @Test + public void test_GetInfraActiveRequests_SuccessResponseWithSoInfraRequestList() throws Exception { + final String jsonString = getJsonResponse(SEARCH_RESULT_RESPONSE_JSON_FILE); + this.databaseMockServer + .expect(requestTo(databaseUrlProvider.getSearchUrl(START_TIME_IN_MS, END_TIME_IN_MS, null))) + .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON)); + + final Response response = + objUnderTest.getInfraActiveRequests(Collections.emptyMap(), START_TIME_IN_MS, END_TIME_IN_MS, null); + + assertEquals(Status.OK.getStatusCode(), response.getStatus()); + @SuppressWarnings("unchecked") + final List actual = (List) response.getEntity(); + assertEquals(3, actual.size()); + + final Map actualRequests = new HashMap<>(); + for (final SoInfraRequest soInfraRequest : actual) { + actualRequests.put(soInfraRequest.getRequestId(), soInfraRequest); + } + final SoInfraRequest infraRequest = actualRequests.get("9383dc81-7a6c-4673-8082-650d50a82a1a"); + assertNull(infraRequest.getEndTime()); + assertEquals("IN_PROGRESS", infraRequest.getRequestStatus()); + } + private String getJsonResponse(final Path path) throws IOException { return new String(Files.readAllBytes(path)); } diff --git a/so-monitoring/so-monitoring-service/src/test/resources/application-test.yaml b/so-monitoring/so-monitoring-service/src/test/resources/application-test.yaml index 857266d3e6..8d930fe17f 100644 --- a/so-monitoring/so-monitoring-service/src/test/resources/application-test.yaml +++ b/so-monitoring/so-monitoring-service/src/test/resources/application-test.yaml @@ -13,3 +13,12 @@ camunda: url: http://localhost:8080/engine-rest/engine/ engine: default auth: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ== + +mso: + database: + rest: + api: + url: http://localhost:8083/infraActiveRequests/ + auth: Basic YnBlbDpwYXNzd29yZDEk + + \ No newline at end of file diff --git a/so-monitoring/so-monitoring-service/src/test/resources/databaseResponses/searchResult.json b/so-monitoring/so-monitoring-service/src/test/resources/databaseResponses/searchResult.json new file mode 100644 index 0000000000..90c27efcbd --- /dev/null +++ b/so-monitoring/so-monitoring-service/src/test/resources/databaseResponses/searchResult.json @@ -0,0 +1,161 @@ +[ + { + "requestId": "a5294d37-21db-4e3a-ae04-57412adcb4ac", + "clientRequestId": null, + "action": "createInstance", + "requestStatus": "COMPLETE", + "statusMessage": null, + "rollbackStatusMessage": null, + "flowStatus": null, + "retryStatusMessage": null, + "progress": null, + "startTime": 1546346700000, + "endTime": 1546347000000, + "source": null, + "vnfId": null, + "vnfName": null, + "vnfType": null, + "serviceType": null, + "aicNodeClli": null, + "tenantId": null, + "provStatus": null, + "vnfParams": null, + "vnfOutputs": null, + "requestBody": null, + "responseBody": null, + "lastModifiedBy": null, + "modifyTime": null, + "requestType": null, + "volumeGroupId": null, + "volumeGroupName": null, + "vfModuleId": null, + "vfModuleName": null, + "vfModuleModelName": null, + "aaiServiceId": null, + "aicCloudRegion": null, + "callBackUrl": null, + "correlator": null, + "serviceInstanceId": "f7712652-b516-4925-a243-64550d26fd84", + "serviceInstanceName": "ShouldReturnInSearchQuery_1", + "requestScope": null, + "requestAction": null, + "networkId": null, + "networkName": null, + "networkType": null, + "requestorId": null, + "configurationId": null, + "configurationName": null, + "operationalEnvId": null, + "operationalEnvName": null, + "instanceGroupId": null, + "instanceGroupName": null, + "requestUrl": null, + "requestURI": "a5294d37-21db-4e3a-ae04-57412adcb4ac" + }, + { + "requestId": "9383dc81-7a6c-4673-8082-650d50a82a1a", + "clientRequestId": null, + "action": "createInstance", + "requestStatus": "IN_PROGRESS", + "statusMessage": null, + "rollbackStatusMessage": null, + "flowStatus": null, + "retryStatusMessage": null, + "progress": null, + "startTime": 1546347300000, + "endTime": null, + "source": null, + "vnfId": null, + "vnfName": null, + "vnfType": null, + "serviceType": null, + "aicNodeClli": null, + "tenantId": null, + "provStatus": null, + "vnfParams": null, + "vnfOutputs": null, + "requestBody": null, + "responseBody": null, + "lastModifiedBy": null, + "modifyTime": null, + "requestType": null, + "volumeGroupId": null, + "volumeGroupName": null, + "vfModuleId": null, + "vfModuleName": null, + "vfModuleModelName": null, + "aaiServiceId": null, + "aicCloudRegion": null, + "callBackUrl": null, + "correlator": null, + "serviceInstanceId": "f7712652-b516-4925-a243-64550d26fd84", + "serviceInstanceName": "ShouldReturnInSearchQuery_2", + "requestScope": null, + "requestAction": null, + "networkId": null, + "networkName": null, + "networkType": null, + "requestorId": null, + "configurationId": null, + "configurationName": null, + "operationalEnvId": null, + "operationalEnvName": null, + "instanceGroupId": null, + "instanceGroupName": null, + "requestUrl": null, + "requestURI": "9383dc81-7a6c-4673-8082-650d50a82a1a" + }, + { + "requestId": "a1abeab2-f8ef-43ab-b76c-9c3c2cb9980f", + "clientRequestId": null, + "action": "activateInstance", + "requestStatus": "FAILED", + "statusMessage": null, + "rollbackStatusMessage": null, + "flowStatus": null, + "retryStatusMessage": null, + "progress": null, + "startTime": 1546347600000, + "endTime": 1546351200000, + "source": null, + "vnfId": null, + "vnfName": null, + "vnfType": null, + "serviceType": null, + "aicNodeClli": null, + "tenantId": null, + "provStatus": null, + "vnfParams": null, + "vnfOutputs": null, + "requestBody": null, + "responseBody": null, + "lastModifiedBy": null, + "modifyTime": null, + "requestType": null, + "volumeGroupId": null, + "volumeGroupName": null, + "vfModuleId": null, + "vfModuleName": null, + "vfModuleModelName": null, + "aaiServiceId": null, + "aicCloudRegion": null, + "callBackUrl": null, + "correlator": null, + "serviceInstanceId": "f7712652-b516-4925-a243-64550d26fd84", + "serviceInstanceName": "ShouldReturnInSearchQuery_3", + "requestScope": null, + "requestAction": null, + "networkId": null, + "networkName": null, + "networkType": null, + "requestorId": null, + "configurationId": null, + "configurationName": null, + "operationalEnvId": null, + "operationalEnvName": null, + "instanceGroupId": null, + "instanceGroupName": null, + "requestUrl": null, + "requestURI": "a1abeab2-f8ef-43ab-b76c-9c3c2cb9980f" + } +] \ No newline at end of file -- cgit 1.2.3-korg