diff options
Diffstat (limited to 'src/test/java/org/onap/aai/sparky/viewandinspect/SearchServletTest.java')
-rw-r--r-- | src/test/java/org/onap/aai/sparky/viewandinspect/SearchServletTest.java | 1639 |
1 files changed, 847 insertions, 792 deletions
diff --git a/src/test/java/org/onap/aai/sparky/viewandinspect/SearchServletTest.java b/src/test/java/org/onap/aai/sparky/viewandinspect/SearchServletTest.java index 6d682f4..f99088d 100644 --- a/src/test/java/org/onap/aai/sparky/viewandinspect/SearchServletTest.java +++ b/src/test/java/org/onap/aai/sparky/viewandinspect/SearchServletTest.java @@ -1,803 +1,858 @@ -/* -* ============LICENSE_START======================================================= -* SPARKY (inventory UI service) -* ================================================================================ -* Copyright © 2017 AT&T Intellectual Property. -* Copyright © 2017 Amdocs -* 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. -* ============LICENSE_END========================================================= -* -* ECOMP and OpenECOMP are trademarks -* and service marks of AT&T Intellectual Property. -*/ - -package org.onap.aai.sparky.viewandinspect; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.mockito.Matchers.anyString; - -import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.security.SecureRandom; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.junit.Before; -import org.junit.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Mockito; -import org.onap.aai.sparky.config.oxm.OxmEntityDescriptor; -import org.onap.aai.sparky.config.oxm.OxmModelLoader; -import org.onap.aai.sparky.dal.elasticsearch.SearchAdapter; -import org.onap.aai.sparky.dal.elasticsearch.entity.AutoSuggestDocumentEntity; -import org.onap.aai.sparky.dal.elasticsearch.entity.AutoSuggestDocumentEntityFields; -import org.onap.aai.sparky.dal.elasticsearch.entity.AutoSuggestElasticHitEntity; -import org.onap.aai.sparky.dal.elasticsearch.entity.AutoSuggestElasticHitsEntity; -import org.onap.aai.sparky.dal.elasticsearch.entity.AutoSuggestElasticSearchResponse; -import org.onap.aai.sparky.dal.elasticsearch.entity.BucketEntity; -import org.onap.aai.sparky.dal.elasticsearch.entity.ElasticHitsEntity; -import org.onap.aai.sparky.dal.elasticsearch.entity.ElasticSearchAggegrationResponse; -import org.onap.aai.sparky.dal.elasticsearch.entity.ElasticSearchAggregation; -import org.onap.aai.sparky.dal.elasticsearch.entity.ElasticSearchCountResponse; -import org.onap.aai.sparky.dal.elasticsearch.entity.PayloadEntity; -import org.onap.aai.sparky.dal.rest.OperationResult; -import org.onap.aai.sparky.dal.sas.config.SearchServiceConfig; -import org.onap.aai.sparky.dal.sas.entity.EntityCountResponse; -import org.onap.aai.sparky.dal.sas.entity.GroupByAggregationResponseEntity; -import org.onap.aai.sparky.dal.sas.entity.SearchAbstractionEntityBuilder; -import org.onap.aai.sparky.search.VnfSearchService; -import org.onap.aai.sparky.search.config.SuggestionConfig; -import org.onap.aai.sparky.suggestivesearch.SuggestionEntity; -import org.onap.aai.sparky.util.ExceptionHelper; -import org.onap.aai.sparky.util.HttpServletHelper; -import org.onap.aai.sparky.util.NodeUtils; -import org.onap.aai.sparky.viewandinspect.entity.QuerySearchEntity; -import org.onap.aai.sparky.viewandinspect.entity.SearchResponse; -import org.onap.aai.sparky.viewandinspect.services.SearchServiceWrapper; -import org.onap.aai.sparky.viewandinspect.servlet.SearchServlet; -import org.slf4j.MDC; - -import org.onap.aai.cl.mdc.MdcContext; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.net.MediaType; - - /** - * The Class SearchServletTest. + * ============LICENSE_START=================================================== SPARKY (AAI UI + * service) ============================================================================ Copyright © + * 2017 AT&T Intellectual Property. Copyright © 2017 Amdocs 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. ============LICENSE_END===================================================== + * + * ECOMP and OpenECOMP are trademarks and service marks of AT&T Intellectual Property. */ -public class SearchServletTest { - - private static final String VNF_ROUTE = "vnf"; - private static final String VIEW_INSPECT_ROUTE = "viewInspect"; - - private HttpServletRequest commonRequest = null; - private HttpServletResponse commonResponse = null; - private PrintWriter printWriter = null; - private StringWriter responseStringWriter = null; - private SearchServiceWrapper searchWrapper = null; - private SearchAdapter searchAdapter = null; - private VnfSearchService vnfSearchService = null; - private ObjectMapper mapper = null; - private SecureRandom rand = null; - private OxmModelLoader loader; - private Map<String, OxmEntityDescriptor> descriptors = null; - private SuggestionConfig suggestionConfig = null; - private SearchServiceConfig esConfig = null; - - /** - * Inits the. - * - * @throws Exception the exception - */ - @Before - public void init() throws Exception { - - commonRequest = HttpServletHelper.getMockHttpServletRequest(); - responseStringWriter = new StringWriter(); - printWriter = new PrintWriter(responseStringWriter); - commonResponse = HttpServletHelper.getMockHttpServletResponse(printWriter); - mapper = new ObjectMapper(); - - // permit serialization of objects with no members - mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - rand = new SecureRandom(); - - loader = Mockito.mock(OxmModelLoader.class); - descriptors = new HashMap<String, OxmEntityDescriptor>(); - - esConfig = new SearchServiceConfig(); - suggestionConfig = SuggestionConfig.getConfig(); - - // Use SearchServiceWrapper and VnfSearchService for suggestionConfig - Map<String, String> svcs = new HashMap<String, String>(); - svcs.put("autosuggestIndexname", "SearchServiceWrapper"); - svcs.put("indexName", "VnfSearchService"); - suggestionConfig.setSearchIndexToSearchService(svcs); - - esConfig.setIndexName("esi-localhost"); - esConfig.setType("default"); - - searchAdapter = Mockito.mock(SearchAdapter.class); - vnfSearchService = Mockito.mock(VnfSearchService.class); - - initializeEntityDescriptors(); - - searchWrapper = new SearchServiceWrapper(); - searchWrapper.setSasConfig(esConfig); - searchWrapper.setSearch(searchAdapter); - searchWrapper.setVnfSearch(vnfSearchService); - searchWrapper.setSuggestionConfig(suggestionConfig); - searchWrapper.setOxmModelLoader(loader); - } - - @Test - public void validateAccessors() { - assertNotNull("Vnf Search Service should not be null", searchWrapper.getVnfSearch()); - } - - @Test - public void validateInitializer() { - - try { - assertNotNull("Oxm Model loader should not be null", searchWrapper.getOxmModelLoader()); - assertNotNull("SearchAbstractionConfig should not be null", searchWrapper.getSasConfig()); - assertNotNull("SearchAdapter should not be null", searchWrapper.getSearch()); - assertNotNull("Suggestion Config should not be null", searchWrapper.getSuggestionConfig()); - assertNotNull("VnfSearchService should not be null", searchWrapper.getVnfSearch()); - - searchWrapper.setOxmModelLoader(null); - searchWrapper.setSasConfig(null); - searchWrapper.setSearch(null); - searchWrapper.setSuggestionConfig(null); - searchWrapper.setVnfSearch(null); - - assertNull("Oxm Model loader should be null", searchWrapper.getOxmModelLoader()); - assertNull("SearchAbstractionConfig should be null", searchWrapper.getSasConfig()); - assertNull("SearchAdapter should be null", searchWrapper.getSearch()); - assertNull("Suggestion Config should be null", searchWrapper.getSuggestionConfig()); - assertNull("VnfSearchService should be null", searchWrapper.getVnfSearch()); - - } catch (Exception exc) { - fail("Servlet Initialization Failed with error = " + exc.getMessage()); - } - - } - - /** - * Test doGet() and doPost() for a non-existent end-point. A test objective would be to either - * return a 404 Not Found. - */ - @Test - public void validateMdcContextLoggingVariablesWhenExplicitlySet() { - - final String transactionId = "1234"; - final String serviceName = "AAI_UI"; - final String partnerName = "SparkyApp"; - - HttpServletHelper.assignRequestHeader(commonRequest, "X-TransactionId", transactionId); - HttpServletHelper.assignRequestHeader(commonRequest, "X-FromAppId", partnerName); - - HttpServletHelper.assignRequestUri(commonRequest, "search/this/path/does/not/exist/"); - - try { - - /* - * Testing the doGet() operation will hit the doPost() operation in the servlet as well - */ - - OperationResult result = doEvaluationTestMDC(true, commonRequest, commonResponse); - - assertEquals(transactionId, MDC.get(MdcContext.MDC_REQUEST_ID)); - assertEquals(serviceName, MDC.get(MdcContext.MDC_SERVICE_NAME)); - assertEquals(partnerName, MDC.get(MdcContext.MDC_PARTNER_NAME)); - - } catch (Exception exc) { - exc.printStackTrace(); - fail("Unexpected exception = " + exc.getLocalizedMessage()); - } - - } - - /** - * Test doGet() and doPost() for a non-existent end-point. A test objective would be to either - * return a 404 Not Found. - */ - @Test - public void validateMdcContextLoggingVariablesWhenNotExplicitlySet() { - - /* - * final String transactionId = "1234"; final String serviceName = "AAI-UI"; final String - * partnerName = "SparkyApp"; - * - * HttpServletHelper.assignRequestHeader(commonRequest, "X-TransactionId", transactionId); - * HttpServletHelper.assignRequestHeader(commonRequest, "X-FromAppId", serviceName); - */ - - HttpServletHelper.assignRequestUri(commonRequest, "search/this/path/does/not/exist/"); - - try { - - /* - * Testing the doGet() operation will hit the doPost() operation in the servlet as well - */ - - OperationResult result = doEvaluationTestMDC(true, commonRequest, commonResponse); - - assertNotNull(MDC.get(MdcContext.MDC_REQUEST_ID)); - assertNotNull(MDC.get(MdcContext.MDC_SERVICE_NAME)); - assertNotNull(MDC.get(MdcContext.MDC_PARTNER_NAME)); - - } catch (Exception exc) { - exc.printStackTrace(); - fail("Unexpected exception = " + exc.getLocalizedMessage()); - } - - } - - - - /** - * Test doGet() and doPost() for a non-existent end-point. - */ - @Test - public void validateViewAndInspectSearchError_invalidRequestUri() { - - HttpServletHelper.assignRequestUri(commonRequest, "search/this/path/does/not/exist/"); - - try { - - /* - * Testing the doGet() operation will hit the doPost() operation in the servlet as well - */ - - OperationResult result = doEvaluation(true, commonRequest, commonResponse); - assertEquals(404, result.getResultCode()); - assertTrue(result.getResult().contains("Ignored request-uri")); - - } catch (Exception exc) { - exc.printStackTrace(); - fail("Unexpected exception = " + exc.getLocalizedMessage()); - } - - } - - - /** - * Test doGet() and doPost() for Unified Query Search success path - */ - @Test - public void validateQuerySearch_successPath() { - - try { - - QuerySearchEntity searchEntity = new QuerySearchEntity(); - searchEntity.setMaxResults("10"); - searchEntity.setQueryStr("the quick brown fox"); - - HttpServletHelper.assignRequestUri(commonRequest, "search/querysearch"); - HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), - NodeUtils.convertObjectToJson(searchEntity, false)); - - - // set search-abstraction-response that we expect to get back from real system, but stubbed - // through a mock - // to fulfill collaborator behavior - - OperationResult mockedEntitySearchResponse = new OperationResult(); - mockedEntitySearchResponse.setResultCode(200); - mockedEntitySearchResponse.setResult(NodeUtils.convertObjectToJson( - SearchAbstractionEntityBuilder.getSuccessfulEntitySearchResponse(), false)); - - // TODO: make parameters expect certain values to lock in invocation attempt against a - // specific input sequence - Mockito.when(searchAdapter.doPost(anyString(), anyString(), anyString())) - .thenReturn(mockedEntitySearchResponse); - - List<SuggestionEntity> autoSuggestions = new ArrayList<SuggestionEntity>(); - - autoSuggestions.add(new SuggestionEntity("vnf", "1234", "VNFs")); - autoSuggestions.add(new SuggestionEntity("vnf", "1111", "Created VNFs")); - autoSuggestions.add(new SuggestionEntity("vnf", "1122", "ACTIVE VNFs")); - autoSuggestions.add(new SuggestionEntity("vnf", "2233", "ACTIVE and Error VNFs")); - autoSuggestions.add(new SuggestionEntity("vnf", "3344", "ACTIVE and NOT ORCHESTRATED VNFs")); - autoSuggestions.add(new SuggestionEntity("vnf", "4455", "ACTIVE and Running VNFs")); - autoSuggestions.add(new SuggestionEntity("vnf", "5566", "Activated VNFs")); - autoSuggestions.add(new SuggestionEntity("vnf", "6677", "CAPPED VNFs")); - autoSuggestions.add(new SuggestionEntity("vnf", "7788", "CAPPED and Created VNFs")); - - Mockito.when(vnfSearchService.getSuggestionsResults(Mockito.anyObject(), Mockito.anyInt())) - .thenReturn(autoSuggestions); - - /* - * Testing the doGet() operation will hit the doPost() operation in the servlet as well - */ - - OperationResult result = doEvaluation(true, commonRequest, commonResponse); - - - assertEquals(200, result.getResultCode()); - - SearchResponse searchResponse = mapper.readValue(result.getResult(), SearchResponse.class); - - assertEquals(10, searchResponse.getTotalFound()); - - int numVnf = 0; - int numViewInspect = 0; - - for (SuggestionEntity suggestion : searchResponse.getSuggestions()) { - - if (VNF_ROUTE.equals(suggestion.getRoute())) { - numVnf++; - } else if (VIEW_INSPECT_ROUTE.equals(suggestion.getRoute())) { - numViewInspect++; - } - } - - assertEquals(5, numVnf); - assertEquals(5, numViewInspect); - - // assertTrue(result.getResult().contains("Ignored request-uri")); - - } catch (Exception exc) { - fail("Unexpected exception = " + exc.getLocalizedMessage()); - } - - } - - /** - * Test doGet() and doPost() for Unified Query Search success path - */ - @Test - public void validateSummaryByEntityTypeCount_successPath() { - - try { - - HttpServletHelper.assignRequestUri(commonRequest, "search/summarybyentitytype/count"); - - Map<String, String> payloadFields = new HashMap<String, String>(); - payloadFields.put("hashId", - "662d1b57c31df70d7ef57ec53c0ace81578ec77b6bc5de055a57c7547ec122dd"); - payloadFields.put("groupby", "orchestration-status"); - - - HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), - NodeUtils.convertObjectToJson(payloadFields, false)); - - - /* - * In this test we don't want to mock the vnf search service, only it's collaborator - * interactions with a REST endpoint. - */ - vnfSearchService = new VnfSearchService(); - vnfSearchService.setSearch(searchAdapter); - searchWrapper.setVnfSearch(vnfSearchService); - - /* - * The first network response to mock is the one to elastic search to get the suggestion - * entity by hash id - * - * http://localhost:9200/entityautosuggestindex-localhost/_search - * {"query":{"term":{"_id":"2172a3c25ae56e4995038ffbc1f055692bfc76c0b8ceda1205bc745a9f7a805d"} - * }} - */ - - AutoSuggestElasticSearchResponse elasticResponse = new AutoSuggestElasticSearchResponse(); - - elasticResponse.setTook(1); - - elasticResponse.setTimedOut(false); - elasticResponse.addShard("total", "5"); - elasticResponse.addShard("successful", "5"); - elasticResponse.addShard("failed", "0"); - - AutoSuggestElasticHitEntity elasticHit = new AutoSuggestElasticHitEntity(); - elasticHit.setIndex("entityautosuggestindex-localhost"); - elasticHit.setType("default"); - elasticHit.setId("2172a3c25ae56e4995038ffbc1f055692bfc76c0b8ceda1205bc745a9f7a805d"); - elasticHit.setScore("1"); - - AutoSuggestDocumentEntityFields suggestDocFields = new AutoSuggestDocumentEntityFields(); - suggestDocFields.addInput("VNFs"); - suggestDocFields.addInput("generic-vnfs"); - suggestDocFields.setOutput("VNFs"); - suggestDocFields.setPayload(new PayloadEntity()); - suggestDocFields.setWeight(100); - - AutoSuggestDocumentEntity autoSuggestDoc = new AutoSuggestDocumentEntity(); - autoSuggestDoc.setFields(suggestDocFields); - - elasticHit.setSource(autoSuggestDoc); - - AutoSuggestElasticHitsEntity hits = new AutoSuggestElasticHitsEntity(); - hits.addHit(elasticHit); - - elasticResponse.setHits(hits); - - - OperationResult mockedSearchResponse = new OperationResult(); - mockedSearchResponse.setResultCode(200); - - mockedSearchResponse.setResult(NodeUtils.convertObjectToJson(elasticResponse, false)); - - - /* - * The second response is the count API dip to elastic search - */ - - ElasticSearchCountResponse countResponse = new ElasticSearchCountResponse(); - countResponse.setCount(3170); - countResponse.addShard("total", "5"); - countResponse.addShard("successful", "5"); - countResponse.addShard("failed", "0"); - - OperationResult searchResponseForCount = new OperationResult(); - searchResponseForCount.setResultCode(200); - - searchResponseForCount.setResult(NodeUtils.convertObjectToJson(countResponse, false)); - - // TODO: make parameters expect certain values to lock in invocation attempt against a - // specific input sequence - Mockito.when(searchAdapter.doPost(anyString(), anyString(), anyString())) - .thenReturn(mockedSearchResponse).thenReturn(searchResponseForCount); - - - /* - * Testing the doGet() operation will hit the doPost() operation in the servlet as well - */ - - OperationResult result = doEvaluation(true, commonRequest, commonResponse); - - - assertEquals(200, result.getResultCode()); - - // - // {"shards":{"total":"5","failed":"0","successful":"5"},"count":3170} - - EntityCountResponse entityCountResponse = - mapper.readValue(result.getResult(), EntityCountResponse.class); - - assertEquals(3170, entityCountResponse.getCount()); - - } catch (Exception exc) { - fail("Unexpected exception = " + exc.getLocalizedMessage()); - } - - } - - - /** - * Test doGet() and doPost() for Unified Query Search success path - */ - @Test - public void validateSummaryByEntityType_successPath() { - - try { - - HttpServletHelper.assignRequestUri(commonRequest, "search/summarybyentitytype"); - - Map<String, String> payloadFields = new HashMap<String, String>(); - payloadFields.put("hashId", - "662d1b57c31df70d7ef57ec53c0ace81578ec77b6bc5de055a57c7547ec122dd"); - payloadFields.put("groupby", "orchestration-status"); - - HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), - NodeUtils.convertObjectToJson(payloadFields, false)); - - /* - * In this test we don't want to mock the vnf search service, only it's collaborator - * interactions with a REST endpoint. - */ - vnfSearchService = new VnfSearchService(); - vnfSearchService.setSearch(searchAdapter); - searchWrapper.setVnfSearch(vnfSearchService); - - /* - * The first network response to mock is the one to elastic search to get the suggestion - * entity by hash id - * - * http://localhost:9200/entityautosuggestindex-localhost/_search - * {"query":{"term":{"_id":"2172a3c25ae56e4995038ffbc1f055692bfc76c0b8ceda1205bc745a9f7a805d"} - * }} - */ - - AutoSuggestElasticSearchResponse elasticResponse = new AutoSuggestElasticSearchResponse(); - - elasticResponse.setTook(1); - - elasticResponse.setTimedOut(false); - elasticResponse.addShard("total", "5"); - elasticResponse.addShard("successful", "5"); - elasticResponse.addShard("failed", "0"); - - AutoSuggestElasticHitEntity elasticHit = new AutoSuggestElasticHitEntity(); - elasticHit.setIndex("entityautosuggestindex-localhost"); - elasticHit.setType("default"); - elasticHit.setId("2172a3c25ae56e4995038ffbc1f055692bfc76c0b8ceda1205bc745a9f7a805d"); - elasticHit.setScore("1"); - - AutoSuggestDocumentEntityFields suggestDocFields = new AutoSuggestDocumentEntityFields(); - suggestDocFields.addInput("VNFs"); - suggestDocFields.addInput("generic-vnfs"); - suggestDocFields.setOutput("VNFs"); - suggestDocFields.setPayload(new PayloadEntity()); - suggestDocFields.setWeight(100); - - AutoSuggestDocumentEntity autoSuggestDoc = new AutoSuggestDocumentEntity(); - autoSuggestDoc.setFields(suggestDocFields); - - elasticHit.setSource(autoSuggestDoc); - - AutoSuggestElasticHitsEntity hits = new AutoSuggestElasticHitsEntity(); - hits.addHit(elasticHit); - - elasticResponse.setHits(hits); - - - OperationResult mockedSearchResponse = new OperationResult(); - mockedSearchResponse.setResultCode(200); - - mockedSearchResponse.setResult(NodeUtils.convertObjectToJson(elasticResponse, false)); - - - /* - * The second response is the aggregation API dip to elastic search - */ - - ElasticSearchAggegrationResponse aggResponse = new ElasticSearchAggegrationResponse(); - - aggResponse.setTook(20); - aggResponse.setTimedOut(false); - - aggResponse.addShard("total", "5"); - aggResponse.addShard("successful", "5"); - aggResponse.addShard("failed", "0"); - - ElasticHitsEntity hitsEntity = new ElasticHitsEntity(); - - hitsEntity.setTotal(3170); - hitsEntity.setMaxScore(0); - - aggResponse.setHits(hitsEntity); - - ElasticSearchAggregation defaultAggregation = new ElasticSearchAggregation(); - - defaultAggregation.setDocCountErrorUpperBound(0); - defaultAggregation.setSumOtherDocCount(0); - defaultAggregation.addBucket(new BucketEntity("created", 1876)); - defaultAggregation.addBucket(new BucketEntity("Created", 649)); - defaultAggregation.addBucket(new BucketEntity("Activated", 158)); - defaultAggregation.addBucket(new BucketEntity("active", 59)); - defaultAggregation.addBucket(new BucketEntity("NOT ORCHESTRATED", 42)); - defaultAggregation.addBucket(new BucketEntity("Pending-Create", 10)); - defaultAggregation.addBucket(new BucketEntity("Running", 9)); - defaultAggregation.addBucket(new BucketEntity("Configured", 7)); - defaultAggregation.addBucket(new BucketEntity("pending-create", 7)); - defaultAggregation.addBucket(new BucketEntity("Error", 3)); - defaultAggregation.addBucket(new BucketEntity("planned", 3)); - defaultAggregation.addBucket(new BucketEntity("PLANNED", 2)); - defaultAggregation.addBucket(new BucketEntity("ERROR", 1)); - defaultAggregation.addBucket(new BucketEntity("RUNNING", 1)); - defaultAggregation.addBucket(new BucketEntity("example-orchestration-status-val-6176", 1)); - - aggResponse.addAggregation("default", defaultAggregation); - - OperationResult searchResponseForAggregation = new OperationResult(); - searchResponseForAggregation.setResultCode(200); - - searchResponseForAggregation.setResult(NodeUtils.convertObjectToJson(aggResponse, false)); - - // TODO: make parameters expect certain values to lock in invocation attempt against a - // specific input sequence - Mockito.when(searchAdapter.doPost(anyString(), anyString(), anyString())) - .thenReturn(mockedSearchResponse).thenReturn(searchResponseForAggregation); - - - /* - * Testing the doGet() operation will hit the doPost() operation in the servlet as well - */ - - OperationResult result = doEvaluation(true, commonRequest, commonResponse); - - - assertEquals(200, result.getResultCode()); - - // - // {"shards":{"total":"5","failed":"0","successful":"5"},"count":3170} - - GroupByAggregationResponseEntity groupByResponse = - mapper.readValue(result.getResult(), GroupByAggregationResponseEntity.class); - - assertEquals(2828, groupByResponse.getAggEntity().getTotalChartHits()); - assertEquals(15, groupByResponse.getAggEntity().getBuckets().size()); - - } catch (Exception exc) { - fail("Unexpected exception = " + exc.getLocalizedMessage()); - } - - } - - - - /** - * Builds the resource entity descriptor. - * - * @param entityType the entity type - * @param attributeNames the attribute names - * @param searchableAttributes the searchable attributes - * @return the oxm entity descriptor - */ - @SuppressWarnings("unchecked") - private OxmEntityDescriptor buildResourceEntityDescriptor(String entityType, - String attributeNames, String searchableAttributes) { - OxmEntityDescriptor descriptor = new OxmEntityDescriptor(); - descriptor.setEntityName(entityType); - - if (attributeNames != null) { - descriptor.setPrimaryKeyAttributeName(Arrays.asList(attributeNames.split(","))); - } - - if (searchableAttributes != null) { - descriptor.setSearchableAttributes(Arrays.asList(searchableAttributes.split(","))); - } - - return descriptor; - } - - /** - * Initialize entity descriptors. - */ - private void initializeEntityDescriptors() { - descriptors.put("customer", - buildResourceEntityDescriptor("customer", "service-instance-id", "f1,f2,f3")); - } - - /** - * Builds the view and inspect search request. - * - * @param maxResults the max results - * @param queryStr the query str - * @return the string - * @throws JsonProcessingException the json processing exception - */ - public String buildViewAndInspectSearchRequest(Integer maxResults, String queryStr) - throws JsonProcessingException { - - /* - * { "maxResults" : "10", "searchStr" : "<search bar text>" } - */ - - ObjectNode rootNode = mapper.createObjectNode(); +package org.onap.aai.sparky.viewandinspect; - if (maxResults != null) { - rootNode.put("maxResults", maxResults); - } +/* + * import org.openecomp.sparky.config.oxm.OxmEntityDescriptor; import + * org.openecomp.sparky.config.oxm.OxmModelLoader; import + * org.openecomp.sparky.dal.elasticsearch.SearchAdapter; import + * org.openecomp.sparky.dal.elasticsearch.entity.AutoSuggestDocumentEntity; import + * org.openecomp.sparky.dal.elasticsearch.entity.AutoSuggestDocumentEntityFields; import + * org.openecomp.sparky.dal.elasticsearch.entity.AutoSuggestElasticHitEntity; import + * org.openecomp.sparky.dal.elasticsearch.entity.AutoSuggestElasticHitsEntity; import + * org.openecomp.sparky.dal.elasticsearch.entity.AutoSuggestElasticSearchResponse; import + * org.openecomp.sparky.dal.elasticsearch.entity.BucketEntity; import + * org.openecomp.sparky.dal.elasticsearch.entity.ElasticHitsEntity; import + * org.openecomp.sparky.dal.elasticsearch.entity.ElasticSearchAggegrationResponse; import + * org.openecomp.sparky.dal.elasticsearch.entity.ElasticSearchAggregation; import + * org.openecomp.sparky.dal.elasticsearch.entity.ElasticSearchCountResponse; import + * org.openecomp.sparky.dal.elasticsearch.entity.PayloadEntity; import + * org.openecomp.sparky.dal.rest.OperationResult; import + * org.openecomp.sparky.dal.sas.config.SearchServiceConfig; import + * org.openecomp.sparky.dal.sas.entity.EntityCountResponse; import + * org.openecomp.sparky.dal.sas.entity.GroupByAggregationResponseEntity; import + * org.openecomp.sparky.dal.sas.entity.SearchAbstractionEntityBuilder; import + * org.openecomp.sparky.search.VnfSearchService; import + * org.openecomp.sparky.search.config.SuggestionConfig; import + * org.openecomp.sparky.search.filters.FilteredSearchHelper; import + * org.openecomp.sparky.search.filters.entity.UiFilterEntity; import + * org.openecomp.sparky.search.filters.entity.UiFilterValueEntity; import + * org.openecomp.sparky.search.filters.entity.UiFiltersEntity; import + * org.openecomp.sparky.suggestivesearch.SuggestionEntity; import + * org.openecomp.sparky.util.ExceptionHelper; import org.openecomp.sparky.util.HttpServletHelper; + * import org.openecomp.sparky.util.NodeUtils; import + * org.openecomp.sparky.viewandinspect.entity.QuerySearchEntity; import + * org.openecomp.sparky.viewandinspect.entity.SearchResponse; import org.slf4j.MDC; + * + * import org.onap.aai.cl.mdc.MdcContext; import com.fasterxml.jackson.core.JsonProcessingException; + * import com.fasterxml.jackson.databind.ObjectMapper; import + * com.fasterxml.jackson.databind.SerializationFeature; import + * com.fasterxml.jackson.databind.node.ObjectNode; import com.google.common.net.MediaType; + * + * + * /** The Class SearchServletTest. + */ - if (queryStr != null) { - rootNode.put("queryStr", queryStr); - } +/* + * public class SearchServletTest { + * + * private static final String VNF_ROUTE = "vnf"; private static final String VIEW_INSPECT_ROUTE = + * "viewInspect"; + * + * private HttpServletRequest commonRequest = null; private HttpServletResponse commonResponse = + * null; private PrintWriter printWriter = null; private StringWriter responseStringWriter = null; + * private SearchServiceWrapper searchWrapper = null; private SearchAdapter searchAdapter = null; + * private VnfSearchService vnfSearchService = null; private ObjectMapper mapper = null; private + * SecureRandom rand = null; private OxmModelLoader loader; private Map<String, OxmEntityDescriptor> + * descriptors = null; private SuggestionConfig suggestionConfig = null; private SearchServiceConfig + * esConfig = null; + * + * @BeforeClass public static void initBeforeClass() throws IOException { if (null == + * System.getProperty("CONFIG_HOME")) { /* Set "CONFIG_HOME" environment variable so path of filter + * & view schema files are correct when they're loaded during SearchServiceWrapper instantiation + */ +/* + * String configHomePath = (new File(".").getCanonicalPath() + "/appconfig-local").replace('\\', + * '/'); System.setProperty("CONFIG_HOME", configHomePath); } } + * + * /** Inits the. + * + * @throws Exception the exception + */ +/* + * @Before public void init() throws Exception { commonRequest = + * HttpServletHelper.getMockHttpServletRequest(); responseStringWriter = new StringWriter(); + * printWriter = new PrintWriter(responseStringWriter); commonResponse = + * HttpServletHelper.getMockHttpServletResponse(printWriter); mapper = new ObjectMapper(); + * + * // permit serialization of objects with no members + * mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + * + * rand = new SecureRandom(); + * + * loader = Mockito.mock(OxmModelLoader.class); descriptors = new HashMap<String, + * OxmEntityDescriptor>(); + * + * esConfig = new SearchServiceConfig(); suggestionConfig = SuggestionConfig.getConfig(); + * + * // Use SearchServiceWrapper and VnfSearchService for suggestionConfig Map<String, String> svcs = + * new HashMap<String, String>(); svcs.put("autosuggestIndexname", "SearchServiceWrapper"); + * svcs.put("indexName", "VnfSearchService"); suggestionConfig.setSearchIndexToSearchService(svcs); + * + * esConfig.setIndexName("esi-localhost"); esConfig.setType("default"); + * + * searchAdapter = Mockito.mock(SearchAdapter.class); vnfSearchService = + * Mockito.mock(VnfSearchService.class); + * + * initializeEntityDescriptors(); + * + * searchWrapper = new SearchServiceWrapper(); searchWrapper.setSasConfig(esConfig); + * searchWrapper.setSearch(searchAdapter); searchWrapper.setVnfSearch(vnfSearchService); + * searchWrapper.setSuggestionConfig(suggestionConfig); searchWrapper.setOxmModelLoader(loader); } + * + * @Test public void validateAccessors() { assertNotNull("Vnf Search Service should not be null", + * searchWrapper.getVnfSearch()); } + * + * @Test public void validateInitializer() { + * + * try { assertNotNull("Oxm Model loader should not be null", searchWrapper.getOxmModelLoader()); + * assertNotNull("SearchAbstractionConfig should not be null", searchWrapper.getSasConfig()); + * assertNotNull("SearchAdapter should not be null", searchWrapper.getSearch()); assertNotNull( + * "Suggestion Config should not be null", searchWrapper.getSuggestionConfig()); assertNotNull( + * "VnfSearchService should not be null", searchWrapper.getVnfSearch()); + * + * searchWrapper.setOxmModelLoader(null); searchWrapper.setSasConfig(null); + * searchWrapper.setSearch(null); searchWrapper.setSuggestionConfig(null); + * searchWrapper.setVnfSearch(null); + * + * assertNull("Oxm Model loader should be null", searchWrapper.getOxmModelLoader()); assertNull( + * "SearchAbstractionConfig should be null", searchWrapper.getSasConfig()); assertNull( + * "SearchAdapter should be null", searchWrapper.getSearch()); assertNull( + * "Suggestion Config should be null", searchWrapper.getSuggestionConfig()); assertNull( + * "VnfSearchService should be null", searchWrapper.getVnfSearch()); + * + * } catch (Exception exc) { fail("Servlet Initialization Failed with error = " + exc.getMessage()); + * } + * + * } + * + * /** Test doGet() and doPost() for a non-existent end-point. A test objective would be to either + * return a 404 Not Found. + */ +/* + * @Test public void validateMdcContextLoggingVariablesWhenExplicitlySet() { + * + * final String transactionId = "1234"; final String serviceName = "AAI-UI"; final String + * partnerName = "SparkyApp"; + * + * HttpServletHelper.assignRequestHeader(commonRequest, "X-TransactionId", transactionId); + * HttpServletHelper.assignRequestHeader(commonRequest, "X-FromAppId", partnerName); + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/this/path/does/not/exist/"); + * + * try { + * + * /* Testing the doGet() operation will hit the doPost() operation in the servlet as well + */ - return NodeUtils.convertObjectToJson(rootNode, true); +/* + * OperationResult result = doEvaluationTestMDC(true, commonRequest, commonResponse); + * + * assertEquals(transactionId,MDC.get(MdcContext.MDC_REQUEST_ID)); + * assertEquals(serviceName,MDC.get(MdcContext.MDC_SERVICE_NAME)); + * assertEquals(partnerName,MDC.get(MdcContext.MDC_PARTNER_NAME)); + * + * } catch (Exception exc) { exc.printStackTrace(); fail("Unexpected exception = " + + * exc.getLocalizedMessage()); } + * + * } + * + * /** Test doGet() and doPost() for a non-existent end-point. A test objective would be to either + * return a 404 Not Found. + */ +/* + * @Test public void validateMdcContextLoggingVariablesWhenNotExplicitlySet() { + * + * /*final String transactionId = "1234"; final String serviceName = "AAI-UI"; final String + * partnerName = "SparkyApp"; + * + * HttpServletHelper.assignRequestHeader(commonRequest, "X-TransactionId", transactionId); + * HttpServletHelper.assignRequestHeader(commonRequest, "X-FromAppId", serviceName); + */ - } +/* + * HttpServletHelper.assignRequestUri(commonRequest, "search/this/path/does/not/exist/"); + * + * try { + * + * /* Testing the doGet() operation will hit the doPost() operation in the servlet as well + */ +/* + * OperationResult result = doEvaluationTestMDC(true, commonRequest, commonResponse); + * + * assertNotNull(MDC.get(MdcContext.MDC_REQUEST_ID)); + * assertNotNull(MDC.get(MdcContext.MDC_SERVICE_NAME)); + * assertNotNull(MDC.get(MdcContext.MDC_PARTNER_NAME)); + * + * } catch (Exception exc) { exc.printStackTrace(); fail("Unexpected exception = " + + * exc.getLocalizedMessage()); } + * + * } + * + * + * + * /** Test doGet() and doPost() for a non-existent end-point. + */ +/* + * @Test public void validateViewAndInspectSearchError_invalidRequestUri() { + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/this/path/does/not/exist/"); + * + * try { + * + * /* Testing the doGet() operation will hit the doPost() operation in the servlet as well + */ +/* + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); assertEquals(404, + * result.getResultCode()); assertTrue(result.getResult().contains("Ignored request-uri")); + * + * } catch (Exception exc) { exc.printStackTrace(); fail("Unexpected exception = " + + * exc.getLocalizedMessage()); } + * + * } + * + * /** Test doGet() and doPost() for Unified Query Search success path + */ +/* + * @Test public void validateQuerySearch_successPath() { + * + * try { + * + * QuerySearchEntity searchEntity = new QuerySearchEntity(); searchEntity.setMaxResults("10"); + * searchEntity.setQueryStr("the quick brown fox"); + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/querysearch"); + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), + * NodeUtils.convertObjectToJson(searchEntity, false)); + * + * + * // set search-abstraction-response that we expect to get back from real system, but stubbed + * through a mock // to fulfill collaborator behavior + * + * OperationResult mockedEntitySearchResponse = new OperationResult(); + * mockedEntitySearchResponse.setResultCode(200); + * mockedEntitySearchResponse.setResult(NodeUtils.convertObjectToJson( + * SearchAbstractionEntityBuilder.getSuccessfulEntitySearchResponse(), false)); + * + * // TODO: make parameters expect certain values to lock in invocation attempt against a specific + * input sequence Mockito.when(searchAdapter.doPost(anyString(), anyString(), anyString())) + * .thenReturn(mockedEntitySearchResponse); + * + * List<SuggestionEntity> autoSuggestions = new ArrayList<SuggestionEntity>(); + * + * autoSuggestions.add(new SuggestionEntity("1234", "vnf", "VNFs", null)); autoSuggestions.add(new + * SuggestionEntity("1111", "vnf", "Created VNFs", null)); autoSuggestions.add(new + * SuggestionEntity("1122", "vnf", "ACTIVE VNFs", null)); autoSuggestions.add(new + * SuggestionEntity("2233", "vnf", "ACTIVE and Error VNFs", null)); autoSuggestions.add(new + * SuggestionEntity("3344", "vnf", "ACTIVE and NOT ORCHESTRATED VNFs", null)); + * autoSuggestions.add(new SuggestionEntity("4455", "vnf", "ACTIVE and Running VNFs", null)); + * autoSuggestions.add(new SuggestionEntity("5566", "vnf", "Activated VNFs", null)); + * autoSuggestions.add(new SuggestionEntity("6677", "vnf", "CAPPED VNFs", null)); + * autoSuggestions.add(new SuggestionEntity("7788", "vnf", "CAPPED and Created VNFs", null)); + * + * Mockito.when(vnfSearchService.getSuggestionsResults(Mockito.anyObject(), Mockito.anyInt())) + * .thenReturn(autoSuggestions); + * + * /* Testing the doGet() operation will hit the doPost() operation in the servlet as well + */ +/* + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * + * assertEquals(200, result.getResultCode()); + * + * SearchResponse searchResponse = mapper.readValue(result.getResult(), SearchResponse.class); + * + * assertEquals(10, searchResponse.getTotalFound()); + * + * int numVnf = 0; int numViewInspect = 0; + * + * for ( SuggestionEntity suggestion : searchResponse.getSuggestions()) { + * + * if ( VNF_ROUTE.equals(suggestion.getRoute())) { numVnf++; } else if ( + * VIEW_INSPECT_ROUTE.equals(suggestion.getRoute())) { numViewInspect++; } } + * + * assertEquals(5, numVnf); assertEquals(5, numViewInspect); + * + * //assertTrue(result.getResult().contains("Ignored request-uri")); + * + * } catch (Exception exc) { fail("Unexpected exception = " + exc.getLocalizedMessage()); } + * + * } + * + * /** Test doGet() and doPost() for Unified Query Search success path + */ +/* + * @Test + * + * @Ignore public void validateSummaryByEntityTypeCount_successPath() { + * + * try { + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/summarybyentitytype/count"); + * + * Map<String,String> payloadFields = new HashMap<String,String>(); payloadFields.put("hashId", + * "662d1b57c31df70d7ef57ec53c0ace81578ec77b6bc5de055a57c7547ec122dd"); payloadFields.put("groupby", + * "orchestration-status"); + * + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), + * NodeUtils.convertObjectToJson(payloadFields, false)); + * + * /* In this test we don't want to mock the vnf search service, only it's collaborator interactions + * with a REST endpoint. + */ +/* + * vnfSearchService = new VnfSearchService(); vnfSearchService.setSearch(searchAdapter); + * searchWrapper.setVnfSearch(vnfSearchService); + * + * /* The first network response to mock is the one to elastic search to get the suggestion entity + * by hash id + * + * http://localhost:9200/entityautosuggestindex-localhost/_search + * {"query":{"term":{"_id":"2172a3c25ae56e4995038ffbc1f055692bfc76c0b8ceda1205bc745a9f7a805d"}}} + */ +/* + * AutoSuggestElasticSearchResponse elasticResponse = new AutoSuggestElasticSearchResponse(); + * + * elasticResponse.setTook(1); + * + * elasticResponse.setTimedOut(false); elasticResponse.addShard("total", "5"); + * elasticResponse.addShard("successful", "5"); elasticResponse.addShard("failed", "0"); + * + * AutoSuggestElasticHitEntity elasticHit = new AutoSuggestElasticHitEntity(); + * elasticHit.setIndex("entityautosuggestindex-localhost"); elasticHit.setType("default"); + * elasticHit.setId("2172a3c25ae56e4995038ffbc1f055692bfc76c0b8ceda1205bc745a9f7a805d"); + * elasticHit.setScore("1"); + * + * AutoSuggestDocumentEntityFields suggestDocFields = new AutoSuggestDocumentEntityFields(); + * suggestDocFields.addInput("VNFs"); suggestDocFields.addInput("generic-vnfs"); + * suggestDocFields.setOutput("VNFs"); suggestDocFields.setPayload(new PayloadEntity()); + * suggestDocFields.setWeight(100); + * + * AutoSuggestDocumentEntity autoSuggestDoc = new AutoSuggestDocumentEntity(); + * autoSuggestDoc.setFields(suggestDocFields); + * + * elasticHit.setSource(autoSuggestDoc); + * + * AutoSuggestElasticHitsEntity hits = new AutoSuggestElasticHitsEntity(); hits.addHit(elasticHit); + * + * elasticResponse.setHits(hits); + * + * + * OperationResult mockedSearchResponse = new OperationResult(); + * mockedSearchResponse.setResultCode(200); + * + * mockedSearchResponse.setResult(NodeUtils.convertObjectToJson(elasticResponse, false)); + * + * + * /* The second response is the count API dip to elastic search + */ +/* + * ElasticSearchCountResponse countResponse = new ElasticSearchCountResponse(); + * countResponse.setCount(3170); countResponse.addShard("total", "5"); + * countResponse.addShard("successful", "5"); countResponse.addShard("failed", "0"); + * + * OperationResult searchResponseForCount = new OperationResult(); + * searchResponseForCount.setResultCode(200); + * + * searchResponseForCount.setResult(NodeUtils.convertObjectToJson(countResponse, false)); + * + * // TODO: make parameters expect certain values to lock in invocation attempt against a specific + * input sequence Mockito.when(searchAdapter.doPost(anyString(), anyString(), anyString())) + * .thenReturn(mockedSearchResponse).thenReturn(searchResponseForCount); + * + * + * /* Testing the doGet() operation will hit the doPost() operation in the servlet as well + */ +/* + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * + * assertEquals(200, result.getResultCode()); + * + * // //{"shards":{"total":"5","failed":"0","successful":"5"},"count":3170} + * + * EntityCountResponse entityCountResponse = mapper.readValue(result.getResult(), + * EntityCountResponse.class); + * + * assertEquals(3170, entityCountResponse.getCount()); + * + * } catch (Exception exc) { fail("Unexpected exception = " + exc.getLocalizedMessage()); } + * + * } + * + * + * /** Test doGet() and doPost() for Unified Query Search success path + */ +/* + * @Test + * + * @Ignore public void validateSummaryByEntityType_successPath() { + * + * try { + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/summarybyentitytype"); + * + * Map<String,String> payloadFields = new HashMap<String,String>(); payloadFields.put("hashId", + * "662d1b57c31df70d7ef57ec53c0ace81578ec77b6bc5de055a57c7547ec122dd"); payloadFields.put("groupby", + * "orchestration-status"); + * + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), + * NodeUtils.convertObjectToJson(payloadFields, false)); + * + * /* In this test we don't want to mock the vnf search service, only it's collaborator interactions + * with a REST endpoint. + */ +/* + * vnfSearchService = new VnfSearchService(); vnfSearchService.setSearch(searchAdapter); + * searchWrapper.setVnfSearch(vnfSearchService); + * + * /* The first network response to mock is the one to elastic search to get the suggestion entity + * by hash id + * + * http://localhost:9200/entityautosuggestindex-localhost/_search + * {"query":{"term":{"_id":"2172a3c25ae56e4995038ffbc1f055692bfc76c0b8ceda1205bc745a9f7a805d"}}} + */ - /** - * Do evaluation. - * - * @param doGet the do get - * @param req the req - * @param res the res - * @return the string +/* + * AutoSuggestElasticSearchResponse elasticResponse = new AutoSuggestElasticSearchResponse(); + * + * elasticResponse.setTook(1); + * + * elasticResponse.setTimedOut(false); elasticResponse.addShard("total", "5"); + * elasticResponse.addShard("successful", "5"); elasticResponse.addShard("failed", "0"); + * + * AutoSuggestElasticHitEntity elasticHit = new AutoSuggestElasticHitEntity(); + * elasticHit.setIndex("entityautosuggestindex-localhost"); elasticHit.setType("default"); + * elasticHit.setId("2172a3c25ae56e4995038ffbc1f055692bfc76c0b8ceda1205bc745a9f7a805d"); + * elasticHit.setScore("1"); + * + * AutoSuggestDocumentEntityFields suggestDocFields = new AutoSuggestDocumentEntityFields(); + * suggestDocFields.addInput("VNFs"); suggestDocFields.addInput("generic-vnfs"); + * suggestDocFields.setOutput("VNFs"); suggestDocFields.setPayload(new PayloadEntity()); + * suggestDocFields.setWeight(100); + * + * AutoSuggestDocumentEntity autoSuggestDoc = new AutoSuggestDocumentEntity(); + * autoSuggestDoc.setFields(suggestDocFields); + * + * elasticHit.setSource(autoSuggestDoc); + * + * AutoSuggestElasticHitsEntity hits = new AutoSuggestElasticHitsEntity(); hits.addHit(elasticHit); + * + * elasticResponse.setHits(hits); + * + * + * OperationResult mockedSearchResponse = new OperationResult(); + * mockedSearchResponse.setResultCode(200); + * + * mockedSearchResponse.setResult(NodeUtils.convertObjectToJson(elasticResponse, false)); + * + * + * /* The second response is the aggregation API dip to elastic search + */ +/* + * ElasticSearchAggegrationResponse aggResponse = new ElasticSearchAggegrationResponse(); + * + * aggResponse.setTook(20); aggResponse.setTimedOut(false); + * + * aggResponse.addShard("total","5"); aggResponse.addShard("successful","5"); + * aggResponse.addShard("failed","0"); + * + * ElasticHitsEntity hitsEntity = new ElasticHitsEntity(); + * + * hitsEntity.setTotal(3170); hitsEntity.setMaxScore(0); + * + * aggResponse.setHits(hitsEntity); + * + * ElasticSearchAggregation defaultAggregation = new ElasticSearchAggregation(); + * + * defaultAggregation.setDocCountErrorUpperBound(0); defaultAggregation.setSumOtherDocCount(0); + * defaultAggregation.addBucket(new BucketEntity("created",1876)); defaultAggregation.addBucket(new + * BucketEntity("Created",649)); defaultAggregation.addBucket(new BucketEntity("Activated",158)); + * defaultAggregation.addBucket(new BucketEntity("active",59)); defaultAggregation.addBucket(new + * BucketEntity("NOT ORCHESTRATED",42)); defaultAggregation.addBucket(new + * BucketEntity("Pending-Create",10)); defaultAggregation.addBucket(new BucketEntity("Running",9)); + * defaultAggregation.addBucket(new BucketEntity("Configured",7)); defaultAggregation.addBucket(new + * BucketEntity("pending-create",7)); defaultAggregation.addBucket(new BucketEntity("Error",3)); + * defaultAggregation.addBucket(new BucketEntity("planned",3)); defaultAggregation.addBucket(new + * BucketEntity("PLANNED",2)); defaultAggregation.addBucket(new BucketEntity("ERROR",1)); + * defaultAggregation.addBucket(new BucketEntity("RUNNING",1)); defaultAggregation.addBucket(new + * BucketEntity("example-orchestration-status-val-6176",1)); + * + * aggResponse.addAggregation("default", defaultAggregation); + * + * OperationResult searchResponseForAggregation = new OperationResult(); + * searchResponseForAggregation.setResultCode(200); + * + * searchResponseForAggregation.setResult(NodeUtils.convertObjectToJson(aggResponse, false)); + * + * // TODO: make parameters expect certain values to lock in invocation attempt against a specific + * input sequence Mockito.when(searchAdapter.doPost(anyString(), anyString(), anyString())) + * .thenReturn(mockedSearchResponse).thenReturn(searchResponseForAggregation); + * + * + * /* Testing the doGet() operation will hit the doPost() operation in the servlet as well + */ +/* + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * + * assertEquals(200, result.getResultCode()); + * + * // //{"shards":{"total":"5","failed":"0","successful":"5"},"count":3170} + * + * GroupByAggregationResponseEntity groupByResponse = mapper.readValue(result.getResult(), + * GroupByAggregationResponseEntity.class); + * + * assertEquals(2828, groupByResponse.getAggEntity().getTotalChartHits()); assertEquals(15, + * groupByResponse.getAggEntity().getBuckets().size()); + * + * } catch (Exception exc) { fail("Unexpected exception = " + exc.getLocalizedMessage()); } } + * + * @Test public void validateHandleDiscoverSearchFilters_vnfSearchViewName() throws IOException { + * String requestBody = "{ \"viewName\" : \"VnfSearch\" }"; String expectedResponse = + * "{\"filters\":[{\"filterId\":\"1\",\"filterName\":\"Orchestration-Status\",\"displayName\":\"Orchestration Status\",\"dataType\":\"list\"},{\"filterId\":\"2\",\"filterName\":\"Prov-Status\",\"displayName\":\"Provisioning Status\",\"dataType\":\"list\"}]}" + * ; + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/discoverFilters"); + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), requestBody); + * + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * assertEquals(expectedResponse, result.getResult().trim()); } + * + * @Test public void validateFilterAggregation_successPath() { String requestBodyFilePath = + * "filters/filterAggregationEndpoint_successPath_requestBody.json"; String expectedResponseFilePath + * = "filters/filterAggregationEndpoint_successPath_expectedResponse.json"; String + * operationResultFilePath = "filters/filterAggregationEndpoint_successPath_operationResult.json"; + * + * String requestBody = getResourceFileContents(requestBodyFilePath); String expectedResponse = + * getResourceFileContents(expectedResponseFilePath); + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/filterAggregation"); + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), requestBody); + * + * OperationResult operationResult = new OperationResult(); + * operationResult.setResult(getResourceFileContents(operationResultFilePath)); + * + * vnfSearchService = new VnfSearchService(); vnfSearchService.setSearch(searchAdapter); + * searchWrapper.setVnfSearch(vnfSearchService); + * + * Mockito.when(searchAdapter.doPost(anyString(), anyString(), + * anyString())).thenReturn(operationResult); + * + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * assertEquals(expectedResponse.trim(), result.getResult().trim()); } + * + * @Test public void validateFilterAggregation_emptyRequestFilterArray() throws IOException { String + * requestBodyFilePath = + * "filters/filterAggregationEndpoint_emptyRequestFilterArray_requestBody.json"; String + * expectedResponseFilePath = + * "filters/filterAggregationEndpoint_emptyRequestFilterArray_expectedResponse.json"; + * + * String requestBody = getResourceFileContents(requestBodyFilePath); String expectedResponse = + * getResourceFileContents(expectedResponseFilePath); + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/filterAggregation"); + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), requestBody); + * + * vnfSearchService = new VnfSearchService(); vnfSearchService.setSearch(searchAdapter); + * searchWrapper.setVnfSearch(vnfSearchService); + * + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * assertEquals(expectedResponse.trim(), result.getResult().trim()); } + * + * @Test public void validateFilterAggregation_emptyRequestBody() throws IOException { String + * expectedResponseFilePath = + * "filters/filterAggregationEndpoint_emptyRequestBody_expectedResponse.json"; + * + * String expectedResponse = getResourceFileContents(expectedResponseFilePath); + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/filterAggregation"); + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), "{}"); + * + * vnfSearchService = new VnfSearchService(); vnfSearchService.setSearch(searchAdapter); + * searchWrapper.setVnfSearch(vnfSearchService); + * + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * assertEquals(expectedResponse.trim(), result.getResult().trim()); } + * + * @Test public void validateHandleDiscoverSearchFilters_diuiViewName() throws IOException { String + * requestBody = "{ \"viewName\" : \"dataIntegrity\" }"; String expectedResponse = + * "{\"filters\":[{\"filterId\":\"3\",\"filterName\":\"Severity\",\"displayName\":\"Severity\",\"dataType\":\"list\"},{\"filterId\":\"4\",\"filterName\":\"Category\",\"displayName\":\"Category\",\"dataType\":\"list\"},{\"filterId\":\"5\",\"filterName\":\"Date\",\"displayName\":\"Date\",\"dataType\":\"date\"},{\"filterId\":\"6\",\"filterName\":\"EntityType\",\"displayName\":\"Entity Type\",\"dataType\":\"list\"}]}" + * ; + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/discoverFilters"); + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), requestBody); + * + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * assertEquals(expectedResponse, result.getResult().trim()); } + * + * @Test public void validateHandleDiscoverSearchFilterValues_validId() throws IOException { String + * requestBody = "{ \"filterIdList\" : [ { \"filterId\" : \"1\" } ] }"; String expectedResponse = + * "{\"filters\":[{\"filterId\":\"1\",\"filterName\":\"Orchestration-Status\",\"displayName\":\"Orchestration Status\",\"dataType\":\"list\",\"filterValueList\":[{\"filterValue\":\"created\",\"displayName\":\"created\"}]}]}" + * ; + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/discoverFilterValues"); + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), requestBody); + * + * FilteredSearchHelper filteredSearchHelper = Mockito.mock(FilteredSearchHelper.class); + * searchWrapper.setFilteredSearchHelper(filteredSearchHelper); + * + * UiFilterValueEntity uiFilterValueEntity = new UiFilterValueEntity(null, "created", "created"); + * + * UiFilterEntity uiFilterEntity = new UiFilterEntity(); uiFilterEntity.setDataType("list"); + * uiFilterEntity.setDisplayName("Orchestration Status"); uiFilterEntity.setFilterId("1"); + * uiFilterEntity.setFilterName("Orchestration-Status"); + * uiFilterEntity.addFilterValue(uiFilterValueEntity); + * + * UiFiltersEntity uiFiltersEntity = new UiFiltersEntity(); + * uiFiltersEntity.addFilter(uiFilterEntity); + * + * Mockito.when(filteredSearchHelper.doFilterEnumeration(Mockito.anyList())) + * .thenReturn(uiFiltersEntity); + * + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * assertEquals(expectedResponse, result.getResult().trim()); } + * + * @Test public void validateHandleDiscoverSearchFilterValues_multipleValidIds() throws IOException + * { String requestBody = + * "{ \"filterIdList\" : [ { \"filterId\" : \"1\" }, { \"filterId\" : \"2\" } ] }"; String + * expectedResponse = + * "{\"filters\":[{\"filterId\":\"1\",\"filterName\":\"Orchestration-Status\",\"displayName\":\"Orchestration Status\",\"dataType\":\"list\",\"filterValueList\":[{\"filterValue\":\"created\",\"displayName\":\"created\"}]},{\"filterId\":\"2\",\"filterName\":\"Prov-Status\",\"displayName\":\"Provisioning Status\",\"dataType\":\"list\",\"filterValueList\":[{\"filterValue\":\"active\",\"displayName\":\"active\"}]}]}" + * ; + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/discoverFilterValues"); + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), requestBody); + * + * FilteredSearchHelper filteredSearchHelper = Mockito.mock(FilteredSearchHelper.class); + * searchWrapper.setFilteredSearchHelper(filteredSearchHelper); + * + * UiFiltersEntity uiFiltersEntity = new UiFiltersEntity(); + * + * UiFilterValueEntity uiFilter1ValueEntity = new UiFilterValueEntity(null, "created", "created"); + * UiFilterEntity uiFilterEntity1 = new UiFilterEntity(); uiFilterEntity1.setDataType("list"); + * uiFilterEntity1.setDisplayName("Orchestration Status"); uiFilterEntity1.setFilterId("1"); + * uiFilterEntity1.setFilterName("Orchestration-Status"); + * uiFilterEntity1.addFilterValue(uiFilter1ValueEntity); uiFiltersEntity.addFilter(uiFilterEntity1); + * + * UiFilterValueEntity uiFilter2ValueEntity = new UiFilterValueEntity(null, "active", "active"); + * UiFilterEntity uiFilterEntity2 = new UiFilterEntity(); uiFilterEntity2.setDataType("list"); + * uiFilterEntity2.setDisplayName("Provisioning Status"); uiFilterEntity2.setFilterId("2"); + * uiFilterEntity2.setFilterName("Prov-Status"); + * uiFilterEntity2.addFilterValue(uiFilter2ValueEntity); uiFiltersEntity.addFilter(uiFilterEntity2); + * + * Mockito.when(filteredSearchHelper.doFilterEnumeration(Mockito.anyList())) + * .thenReturn(uiFiltersEntity); + * + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * assertEquals(expectedResponse, result.getResult().trim()); } + * + * @Test public void validateHandleDiscoverSearchFilterValues_invalidId() throws IOException { + * String requestBody = "{ \"filterIdList\" : [ { \"filterId\" : \"999\" } ] }"; String + * expectedResponse = "{\"filters\":[]}"; + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/discoverFilterValues"); + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), requestBody); + * + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * assertEquals(expectedResponse, result.getResult().trim()); } + * + * @Test public void validateHandleDiscoverSearchFilterValues_validIdAndInvalidId() throws + * IOException { String requestBody = + * "{ \"filterIdList\" : [ { \"filterId\" : \"1\" }, { \"filterId\" : \"999\" } ] }"; String + * expectedResponse = + * "{\"filters\":[{\"filterId\":\"1\",\"filterName\":\"Orchestration-Status\",\"displayName\":\"Orchestration Status\",\"dataType\":\"list\",\"filterValueList\":[{\"filterValue\":\"created\",\"displayName\":\"created\"}]}]}" + * ; + * + * HttpServletHelper.assignRequestUri(commonRequest, "search/discoverFilterValues"); + * HttpServletHelper.setRequestPayload(commonRequest, MediaType.JSON_UTF_8.toString(), requestBody); + * + * FilteredSearchHelper filteredSearchHelper = Mockito.mock(FilteredSearchHelper.class); + * searchWrapper.setFilteredSearchHelper(filteredSearchHelper); + * + * UiFilterValueEntity uiFilterValueEntity = new UiFilterValueEntity(null, "created", "created"); + * + * UiFilterEntity uiFilterEntity = new UiFilterEntity(); uiFilterEntity.setDataType("list"); + * uiFilterEntity.setDisplayName("Orchestration Status"); uiFilterEntity.setFilterId("1"); + * uiFilterEntity.setFilterName("Orchestration-Status"); + * uiFilterEntity.addFilterValue(uiFilterValueEntity); + * + * UiFiltersEntity uiFiltersEntity = new UiFiltersEntity(); + * uiFiltersEntity.addFilter(uiFilterEntity); + * + * Mockito.when(filteredSearchHelper.doFilterEnumeration(Mockito.anyList())) + * .thenReturn(uiFiltersEntity); + * + * OperationResult result = doEvaluation(true, commonRequest, commonResponse); + * + * assertEquals(expectedResponse, result.getResult().trim()); } + * + * /** Builds the resource entity descriptor. + * + * @param entityType the entity type + * + * @param attributeNames the attribute names + * + * @param searchableAttributes the searchable attributes + * + * @return the oxm entity descriptor + */ +/* + * @SuppressWarnings("unchecked") private OxmEntityDescriptor buildResourceEntityDescriptor(String + * entityType, String attributeNames, String searchableAttributes) { OxmEntityDescriptor descriptor + * = new OxmEntityDescriptor(); descriptor.setEntityName(entityType); + * + * if (attributeNames != null) { + * descriptor.setPrimaryKeyAttributeName(Arrays.asList(attributeNames.split(","))); } + * + * if (searchableAttributes != null) { + * descriptor.setSearchableAttributes(Arrays.asList(searchableAttributes.split(","))); } + * + * return descriptor; } + * + * /** Initialize entity descriptors. + */ +/* + * private void initializeEntityDescriptors() { descriptors.put("customer", + * buildResourceEntityDescriptor("customer", "service-instance-id", "f1,f2,f3")); } + * + * /** Builds the view and inspect search request. + * + * @param maxResults the max results + * + * @param queryStr the query str + * + * @return the string + * + * @throws JsonProcessingException the json processing exception + */ +/* + * public String buildViewAndInspectSearchRequest(Integer maxResults, String queryStr) throws + * JsonProcessingException { + * + * /* { "maxResults" : "10", "searchStr" : "<search bar text>" } + */ +/* + * ObjectNode rootNode = mapper.createObjectNode(); + * + * if (maxResults != null) { rootNode.put("maxResults", maxResults); } + * + * if (queryStr != null) { rootNode.put("queryStr", queryStr); } + * + * return NodeUtils.convertObjectToJson(rootNode, true); + * + * } + * + * public String getResourceFileContents(String filePath) { StringBuilder result = new + * StringBuilder(""); + * + * ClassLoader classLoader = getClass().getClassLoader(); File file = new + * File(classLoader.getResource(filePath).getFile()); + * + * try (Scanner scanner = new Scanner(file)) { while (scanner.hasNextLine()) { String line = + * scanner.nextLine(); result.append(line).append("\n"); } + * + * scanner.close(); + * + * } catch (IOException e) { e.printStackTrace(); } + * + * return result.toString(); } + * + * + * /** Do evaluation. + * + * @param doGet the do get + * + * @param req the req + * + * @param res the res + * + * @return the string + *//* + * private OperationResult doEvaluationTestMDC(boolean doGet, HttpServletRequest req, + * HttpServletResponse res) { + * + * /* Test method invocation */ - private OperationResult doEvaluationTestMDC(boolean doGet, HttpServletRequest req, - HttpServletResponse res) { - - /* - * Test method invocation - */ - - SearchServlet searchServlet = new SearchServlet(); - try { - searchServlet.init(); - } catch (ServletException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - ArgumentCaptor<Integer> responseCodeCaptor = ArgumentCaptor.forClass(Integer.class); - - try { - if (doGet) { - searchServlet.doGet(req, res); - } else { - searchServlet.doPost(req, res); - } - } catch (ServletException exc) { - fail(ExceptionHelper.extractStackTraceElements(5, exc)); - } catch (IOException exc) { - fail(ExceptionHelper.extractStackTraceElements(5, exc)); - } - - responseStringWriter.flush(); - Mockito.verify(commonResponse, Mockito.atLeast(1)).setStatus(responseCodeCaptor.capture()); - - OperationResult result = new OperationResult(); - - result.setResultCode(responseCodeCaptor.getValue()); - result.setResult(responseStringWriter.toString()); - - return result; - - } - - /** - * Do evaluation. - * - * @param doGet the do get - * @param req the req - * @param res the res - * @return the string +/* + * SearchServlet searchServlet = new SearchServlet(); try { searchServlet.init(); } catch + * (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } + * ArgumentCaptor<Integer> responseCodeCaptor = ArgumentCaptor.forClass(Integer.class); + * + * try { if (doGet) { searchServlet.doGet(req, res); } else { searchServlet.doPost(req, res); } } + * catch (ServletException exc) { fail(ExceptionHelper.extractStackTraceElements(5, exc)); } catch + * (IOException exc) { fail(ExceptionHelper.extractStackTraceElements(5, exc)); } + * + * responseStringWriter.flush(); Mockito.verify(commonResponse, + * Mockito.atLeast(1)).setStatus(responseCodeCaptor.capture()); + * + * OperationResult result = new OperationResult(); + * + * result.setResultCode(responseCodeCaptor.getValue()); + * result.setResult(responseStringWriter.toString()); + * + * return result; + * + * } + * + * /** Do evaluation. + * + * @param doGet the do get + * + * @param req the req + * + * @param res the res + * + * @return the string + *//* + * private OperationResult doEvaluation(boolean doGet, HttpServletRequest req, HttpServletResponse + * res) { + * + * /* Test method invocation */ - private OperationResult doEvaluation(boolean doGet, HttpServletRequest req, - HttpServletResponse res) { - - /* - * Test method invocation - */ - ArgumentCaptor<Integer> responseCodeCaptor = ArgumentCaptor.forClass(Integer.class); - - try { - if (doGet) { - searchWrapper.doGet(req, res); - } else { - searchWrapper.doPost(req, res); - } - } catch (ServletException exc) { - fail(ExceptionHelper.extractStackTraceElements(5, exc)); - } catch (IOException exc) { - fail(ExceptionHelper.extractStackTraceElements(5, exc)); - } - - responseStringWriter.flush(); - Mockito.verify(commonResponse, Mockito.atLeast(1)).setStatus(responseCodeCaptor.capture()); - - OperationResult result = new OperationResult(); - - result.setResultCode(responseCodeCaptor.getValue()); - result.setResult(responseStringWriter.toString()); - - return result; - - } - - - -} +/* + * ArgumentCaptor<Integer> responseCodeCaptor = ArgumentCaptor.forClass(Integer.class); + * + * try { if (doGet) { searchWrapper.doGet(req, res); } else { searchWrapper.doPost(req, res); } } + * catch (ServletException exc) { fail(ExceptionHelper.extractStackTraceElements(5, exc)); } catch + * (IOException exc) { fail(ExceptionHelper.extractStackTraceElements(5, exc)); } + * + * responseStringWriter.flush(); Mockito.verify(commonResponse, + * Mockito.atLeast(1)).setStatus(responseCodeCaptor.capture()); + * + * OperationResult result = new OperationResult(); + * + * result.setResultCode(responseCodeCaptor.getValue()); + * result.setResult(responseStringWriter.toString()); + * + * return result; + * + * } + * + * } + */ |