Repository: metron Updated Branches: refs/heads/master 768a6fada -> 4a089900a
http://git-wip-us.apache.org/repos/asf/metron/blob/4a089900/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/matcher/SearchRequestMatcher.java ---------------------------------------------------------------------- diff --git a/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/matcher/SearchRequestMatcher.java b/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/matcher/SearchRequestMatcher.java deleted file mode 100644 index 417e48b..0000000 --- a/metron-platform/metron-elasticsearch/src/test/java/org/apache/metron/elasticsearch/matcher/SearchRequestMatcher.java +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -package org.apache.metron.elasticsearch.matcher; - -import org.apache.metron.indexing.dao.search.SortField; -import org.elasticsearch.action.search.SearchRequest; -import org.elasticsearch.client.Requests; -import org.elasticsearch.common.bytes.BytesReference; -import org.elasticsearch.index.query.QueryStringQueryBuilder; -import org.elasticsearch.search.builder.SearchSourceBuilder; -import org.elasticsearch.search.sort.FieldSortBuilder; -import org.elasticsearch.search.sort.SortOrder; -import org.hamcrest.Description; -import org.mockito.ArgumentMatcher; - -import java.util.Arrays; - -public class SearchRequestMatcher extends ArgumentMatcher<SearchRequest> { - - private String[] expectedIndices; - private String[] actualIndices; - - private BytesReference expectedSource; - private BytesReference actualSource; - - private boolean indicesMatch; - private boolean sourcesMatch; - - public SearchRequestMatcher(String[] indices, String query, int size, int from, SortField[] sortFields) { - expectedIndices = indices; - SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder() - .size(size) - .from(from) - .query(new QueryStringQueryBuilder(query)) - .fetchSource(true) - .trackScores(true); - for(SortField sortField: sortFields) { - FieldSortBuilder fieldSortBuilder = new FieldSortBuilder(sortField.getField()); - fieldSortBuilder.order(sortField.getSortOrder() == org.apache.metron.indexing.dao.search.SortOrder.DESC ? SortOrder.DESC : SortOrder.ASC); - searchSourceBuilder = searchSourceBuilder.sort(fieldSortBuilder); - } - expectedSource = searchSourceBuilder.buildAsBytes(Requests.CONTENT_TYPE); - } - - @Override - public boolean matches(Object o) { - SearchRequest searchRequest = (SearchRequest) o; - - actualIndices = searchRequest.indices(); - actualSource = searchRequest.source(); - - indicesMatch = Arrays.equals(expectedIndices, actualIndices); - sourcesMatch = expectedSource.equals(actualSource); - - return indicesMatch && sourcesMatch; - } - - @Override - public void describeTo(Description description) { - if(!indicesMatch) { - description.appendText("Bad search request indices: "); - description.appendText(" expected="); - description.appendValue(expectedIndices); - description.appendText(", got="); - description.appendValue(actualIndices); - description.appendText(" "); - } - - if(!sourcesMatch) { - description.appendText("Bad search request sources: "); - description.appendText(" expected="); - description.appendValue(expectedSource); - description.appendText(", got="); - description.appendValue(actualSource); - description.appendText(" "); - } - } -} http://git-wip-us.apache.org/repos/asf/metron/blob/4a089900/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/AccessConfig.java ---------------------------------------------------------------------- diff --git a/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/AccessConfig.java b/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/AccessConfig.java index 4f47a65..c16401e 100644 --- a/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/AccessConfig.java +++ b/metron-platform/metron-indexing/src/main/java/org/apache/metron/indexing/dao/AccessConfig.java @@ -31,8 +31,7 @@ public class AccessConfig { private TableProvider tableProvider = null; /** - * A supplier which will return the current global config. - * @return + * @return A supplier which will return the current global config. */ public Supplier<Map<String, Object>> getGlobalConfigSupplier() { return globalConfigSupplier; @@ -43,8 +42,7 @@ public class AccessConfig { } /** - * The maximum search result. - * @return + * @return The maximum number of search results. */ public Integer getMaxSearchResults() { return maxSearchResults; @@ -55,8 +53,7 @@ public class AccessConfig { } /** - * The maximum search groups. - * @return + * @return The maximum number of search groups. */ public Integer getMaxSearchGroups() { return maxSearchGroups; @@ -67,8 +64,7 @@ public class AccessConfig { } /** - * Get optional settings for initializing indices. - * @return + * @return Optional settings for initializing indices. */ public Map<String, String> getOptionalSettings() { return optionalSettings; @@ -79,8 +75,7 @@ public class AccessConfig { } /** - * Return the table provider to use for NoSql DAOs - * @return + * @return The table provider to use for NoSql DAOs */ public TableProvider getTableProvider() { return tableProvider; @@ -89,5 +84,4 @@ public class AccessConfig { public void setTableProvider(TableProvider tableProvider) { this.tableProvider = tableProvider; } - } http://git-wip-us.apache.org/repos/asf/metron/blob/4a089900/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/InMemoryDao.java ---------------------------------------------------------------------- diff --git a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/InMemoryDao.java b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/InMemoryDao.java index f2108de..002ec28 100644 --- a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/InMemoryDao.java +++ b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/InMemoryDao.java @@ -21,14 +21,34 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.google.common.base.Splitter; import com.google.common.collect.ComparisonChain; import com.google.common.collect.Iterables; -import java.util.Map.Entry; +import com.google.common.collect.Ordering; import org.apache.metron.common.Constants; import org.apache.metron.common.utils.JSONUtils; -import org.apache.metron.indexing.dao.search.*; +import org.apache.metron.indexing.dao.search.FieldType; +import org.apache.metron.indexing.dao.search.GetRequest; +import org.apache.metron.indexing.dao.search.Group; +import org.apache.metron.indexing.dao.search.GroupRequest; +import org.apache.metron.indexing.dao.search.GroupResponse; +import org.apache.metron.indexing.dao.search.GroupResult; +import org.apache.metron.indexing.dao.search.InvalidSearchException; +import org.apache.metron.indexing.dao.search.SearchRequest; +import org.apache.metron.indexing.dao.search.SearchResponse; +import org.apache.metron.indexing.dao.search.SearchResult; +import org.apache.metron.indexing.dao.search.SortField; +import org.apache.metron.indexing.dao.search.SortOrder; import org.apache.metron.indexing.dao.update.Document; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Optional; +import java.util.UUID; public class InMemoryDao implements IndexDao { // Map from index to list of documents as JSON strings @@ -102,13 +122,14 @@ public class InMemoryDao implements IndexDao { private static class ComparableComparator implements Comparator<Comparable> { SortOrder order = null; + public ComparableComparator(SortOrder order) { this.order = order; } @Override public int compare(Comparable o1, Comparable o2) { - int result = ComparisonChain.start().compare(o1, o2).result(); - return order == SortOrder.ASC?result:-1*result; + int result = ComparisonChain.start().compare(o1, o2, Ordering.natural().nullsLast()).result(); + return order == SortOrder.ASC ? result : -1*result; } } http://git-wip-us.apache.org/repos/asf/metron/blob/4a089900/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java ---------------------------------------------------------------------- diff --git a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java index 8f32946..4d3ff9b 100644 --- a/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java +++ b/metron-platform/metron-indexing/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java @@ -18,31 +18,31 @@ package org.apache.metron.indexing.dao; import com.fasterxml.jackson.core.type.TypeReference; -import java.util.Iterator; -import java.util.Optional; import org.adrianwalker.multilinestring.Multiline; import org.apache.metron.common.utils.JSONUtils; import org.apache.metron.indexing.dao.search.FieldType; import org.apache.metron.indexing.dao.search.GetRequest; import org.apache.metron.indexing.dao.search.GroupRequest; import org.apache.metron.indexing.dao.search.GroupResponse; +import org.apache.metron.indexing.dao.search.GroupResult; import org.apache.metron.indexing.dao.search.InvalidSearchException; import org.apache.metron.indexing.dao.search.SearchRequest; import org.apache.metron.indexing.dao.search.SearchResponse; import org.apache.metron.indexing.dao.search.SearchResult; -import org.apache.metron.indexing.dao.search.GroupResult; import org.apache.metron.indexing.dao.update.Document; import org.apache.metron.integration.InMemoryComponent; +import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.junit.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Optional; public abstract class SearchIntegrationTest { /** @@ -59,8 +59,8 @@ public abstract class SearchIntegrationTest { /** * [ - * {"source:type": "snort", "ip_src_addr":"192.168.1.6", "ip_src_port": 8005, "long_field": 10000, "timestamp":6, "latitude": 48.5839, "score": 50.0, "is_alert":false, "location_point": "50.0,7.7455", "snort_field": 10, "duplicate_name_field": 1, "guid":"snort_1"}, - * {"source:type": "snort", "ip_src_addr":"192.168.1.1", "ip_src_port": 8004, "long_field": 10000, "timestamp":7, "latitude": 48.5839, "score": 10.0, "is_alert":true, "location_point": "48.5839,7.7455", "snort_field": 20, "duplicate_name_field": 2, "guid":"snort_2"}, + * {"source:type": "snort", "ip_src_addr":"192.168.1.6", "ip_src_port": 8005, "long_field": 10000, "timestamp":6, "latitude": 48.5839, "score": 50.0, "is_alert":false, "location_point": "50.0,7.7455", "snort_field": 10, "duplicate_name_field": 1, "guid":"snort_1", "threat:triage:score":"10"}, + * {"source:type": "snort", "ip_src_addr":"192.168.1.1", "ip_src_port": 8004, "long_field": 10000, "timestamp":7, "latitude": 48.5839, "score": 10.0, "is_alert":true, "location_point": "48.5839,7.7455", "snort_field": 20, "duplicate_name_field": 2, "guid":"snort_2", "threat:triage:score":"20"}, * {"source:type": "snort", "ip_src_addr":"192.168.1.7", "ip_src_port": 8003, "long_field": 10000, "timestamp":8, "latitude": 48.5839, "score": 20.0, "is_alert":false, "location_point": "48.5839,7.7455", "snort_field": 30, "duplicate_name_field": 3, "guid":"snort_3"}, * {"source:type": "snort", "ip_src_addr":"192.168.1.1", "ip_src_port": 8002, "long_field": 20000, "timestamp":9, "latitude": 48.0001, "score": 50.0, "is_alert":true, "location_point": "48.5839,7.7455", "snort_field": 40, "duplicate_name_field": 4, "guid":"snort_4"}, * {"source:type": "snort", "ip_src_addr":"192.168.1.8", "ip_src_port": 8001, "long_field": 10000, "timestamp":10, "latitude": 48.5839, "score": 10.0, "is_alert":false, "location_point": "48.5839,7.7455", "snort_field": 50, "duplicate_name_field": 5, "guid":"snort_5"} @@ -155,6 +155,46 @@ public abstract class SearchIntegrationTest { /** * { + * "indices": [ + * "snort", + * "bro" + * ], + * "query": "*", + * "from": 0, + * "size": 25, + * "sort": [ + * { + * "field": "threat:triage:score", + * "sortOrder": "asc" + * } + * ] + * } + */ + @Multiline + public static String sortAscendingWithMissingFields; + + /** + * { + * "indices": [ + * "snort", + * "bro" + * ], + * "query": "*", + * "from": 0, + * "size": 25, + * "sort": [ + * { + * "field": "threat:triage:score", + * "sortOrder": "desc" + * } + * ] + * } + */ + @Multiline + public static String sortDescendingWithMissingFields; + + /** + * { * "indices": ["bro", "snort"], * "query": "*", * "from": 4, @@ -407,6 +447,7 @@ public abstract class SearchIntegrationTest { SearchResponse response = dao.search(request); Assert.assertEquals(10, response.getTotal()); List<SearchResult> results = response.getResults(); + Assert.assertEquals(10, results.size()); for(int i = 0;i < 5;++i) { Assert.assertEquals("snort", results.get(i).getSource().get("source:type")); Assert.assertEquals(10-i, results.get(i).getSource().get("timestamp")); @@ -461,6 +502,50 @@ public abstract class SearchIntegrationTest { Assert.assertEquals(i, results.get(i-8001).getSource().get("ip_src_port")); } } + //Sort descending with missing fields + { + SearchRequest request = JSONUtils.INSTANCE.load(sortDescendingWithMissingFields, SearchRequest.class); + SearchResponse response = dao.search(request); + Assert.assertEquals(10, response.getTotal()); + List<SearchResult> results = response.getResults(); + Assert.assertEquals(10, results.size()); + + // validate sorted order - there are only 2 with a 'threat:triage:score' + Assert.assertEquals("20", results.get(0).getSource().get("threat:triage:score")); + Assert.assertEquals("10", results.get(1).getSource().get("threat:triage:score")); + + // the remaining are missing the 'threat:triage:score' and should be sorted last + Assert.assertFalse(results.get(2).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(3).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(4).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(5).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(6).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(7).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(8).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(9).getSource().containsKey("threat:triage:score")); + } + //Sort ascending with missing fields + { + SearchRequest request = JSONUtils.INSTANCE.load(sortAscendingWithMissingFields, SearchRequest.class); + SearchResponse response = dao.search(request); + Assert.assertEquals(10, response.getTotal()); + List<SearchResult> results = response.getResults(); + Assert.assertEquals(10, results.size()); + + // the remaining are missing the 'threat:triage:score' and should be sorted last + Assert.assertFalse(results.get(0).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(1).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(2).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(3).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(4).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(5).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(6).getSource().containsKey("threat:triage:score")); + Assert.assertFalse(results.get(7).getSource().containsKey("threat:triage:score")); + + // validate sorted order - there are only 2 with a 'threat:triage:score' + Assert.assertEquals("10", results.get(8).getSource().get("threat:triage:score")); + Assert.assertEquals("20", results.get(9).getSource().get("threat:triage:score")); + } //pagination test case { SearchRequest request = JSONUtils.INSTANCE.load(paginationQuery, SearchRequest.class); @@ -490,13 +575,18 @@ public abstract class SearchIntegrationTest { { SearchRequest request = JSONUtils.INSTANCE.load(facetQuery, SearchRequest.class); SearchResponse response = dao.search(request); - Assert.assertEquals(10, response.getTotal()); + Assert.assertEquals(12, response.getTotal()); + Map<String, Map<String, Long>> facetCounts = response.getFacetCounts(); Assert.assertEquals(8, facetCounts.size()); + + // source:type Map<String, Long> sourceTypeCounts = facetCounts.get("source:type"); Assert.assertEquals(2, sourceTypeCounts.size()); Assert.assertEquals(new Long(5), sourceTypeCounts.get("bro")); Assert.assertEquals(new Long(5), sourceTypeCounts.get("snort")); + + // ip_src_addr Map<String, Long> ipSrcAddrCounts = facetCounts.get("ip_src_addr"); Assert.assertEquals(8, ipSrcAddrCounts.size()); Assert.assertEquals(new Long(3), ipSrcAddrCounts.get("192.168.1.1")); @@ -507,6 +597,8 @@ public abstract class SearchIntegrationTest { Assert.assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.6")); Assert.assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.7")); Assert.assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.8")); + + // ip_src_port Map<String, Long> ipSrcPortCounts = facetCounts.get("ip_src_port"); Assert.assertEquals(10, ipSrcPortCounts.size()); Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8001")); @@ -519,10 +611,14 @@ public abstract class SearchIntegrationTest { Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8008")); Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8009")); Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8010")); + + // long_field Map<String, Long> longFieldCounts = facetCounts.get("long_field"); Assert.assertEquals(2, longFieldCounts.size()); Assert.assertEquals(new Long(8), longFieldCounts.get("10000")); Assert.assertEquals(new Long(2), longFieldCounts.get("20000")); + + // timestamp Map<String, Long> timestampCounts = facetCounts.get("timestamp"); Assert.assertEquals(10, timestampCounts.size()); Assert.assertEquals(new Long(1), timestampCounts.get("1")); @@ -535,6 +631,8 @@ public abstract class SearchIntegrationTest { Assert.assertEquals(new Long(1), timestampCounts.get("8")); Assert.assertEquals(new Long(1), timestampCounts.get("9")); Assert.assertEquals(new Long(1), timestampCounts.get("10")); + + // latitude Map<String, Long> latitudeCounts = facetCounts.get("latitude"); Assert.assertEquals(2, latitudeCounts.size()); List<String> latitudeKeys = new ArrayList<>(latitudeCounts.keySet()); @@ -543,6 +641,8 @@ public abstract class SearchIntegrationTest { Assert.assertEquals(48.5839, Double.parseDouble(latitudeKeys.get(1)), 0.00001); Assert.assertEquals(new Long(2), latitudeCounts.get(latitudeKeys.get(0))); Assert.assertEquals(new Long(8), latitudeCounts.get(latitudeKeys.get(1))); + + // score Map<String, Long> scoreFieldCounts = facetCounts.get("score"); Assert.assertEquals(4, scoreFieldCounts.size()); List<String> scoreFieldKeys = new ArrayList<>(scoreFieldCounts.keySet()); @@ -555,6 +655,8 @@ public abstract class SearchIntegrationTest { Assert.assertEquals(new Long(2), scoreFieldCounts.get(scoreFieldKeys.get(1))); Assert.assertEquals(new Long(3), scoreFieldCounts.get(scoreFieldKeys.get(2))); Assert.assertEquals(new Long(1), scoreFieldCounts.get(scoreFieldKeys.get(3))); + + // is_alert Map<String, Long> isAlertCounts = facetCounts.get("is_alert"); Assert.assertEquals(2, isAlertCounts.size()); Assert.assertEquals(new Long(6), isAlertCounts.get("true")); @@ -568,7 +670,7 @@ public abstract class SearchIntegrationTest { Assert.fail("Exception expected, but did not come."); } catch(InvalidSearchException ise) { - Assert.assertEquals("Could not execute search", ise.getMessage()); + // success } } //Disabled facet query @@ -591,7 +693,7 @@ public abstract class SearchIntegrationTest { // getColumnMetadata with multiple indices { Map<String, FieldType> fieldTypes = dao.getColumnMetadata(Arrays.asList("bro", "snort")); - Assert.assertEquals(13, fieldTypes.size()); + Assert.assertEquals(15, fieldTypes.size()); Assert.assertEquals(FieldType.STRING, fieldTypes.get("guid")); Assert.assertEquals(FieldType.STRING, fieldTypes.get("source:type")); Assert.assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr")); @@ -605,25 +707,51 @@ public abstract class SearchIntegrationTest { Assert.assertEquals(FieldType.STRING, fieldTypes.get("bro_field")); Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("snort_field")); Assert.assertEquals(FieldType.OTHER, fieldTypes.get("duplicate_name_field")); + Assert.assertEquals(FieldType.FLOAT, fieldTypes.get("threat:triage:score")); + Assert.assertEquals(FieldType.OTHER, fieldTypes.get("alert")); } // getColumnMetadata with only bro { Map<String, FieldType> fieldTypes = dao.getColumnMetadata(Collections.singletonList("bro")); - Assert.assertEquals(12, fieldTypes.size()); + Assert.assertEquals(13, fieldTypes.size()); + Assert.assertEquals(FieldType.STRING, fieldTypes.get("guid")); + Assert.assertEquals(FieldType.STRING, fieldTypes.get("source:type")); + Assert.assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr")); + Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port")); + Assert.assertEquals(FieldType.LONG, fieldTypes.get("long_field")); + Assert.assertEquals(FieldType.DATE, fieldTypes.get("timestamp")); + Assert.assertEquals(FieldType.FLOAT, fieldTypes.get("latitude")); + Assert.assertEquals(FieldType.DOUBLE, fieldTypes.get("score")); + Assert.assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert")); + Assert.assertEquals(FieldType.OTHER, fieldTypes.get("location_point")); Assert.assertEquals(FieldType.STRING, fieldTypes.get("bro_field")); + Assert.assertEquals(FieldType.STRING, fieldTypes.get("duplicate_name_field")); + Assert.assertEquals(FieldType.OTHER, fieldTypes.get("alert")); } // getColumnMetadata with only snort { Map<String, FieldType> fieldTypes = dao.getColumnMetadata(Collections.singletonList("snort")); - Assert.assertEquals(12, fieldTypes.size()); + Assert.assertEquals(14, fieldTypes.size()); Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("snort_field")); + Assert.assertEquals(FieldType.STRING, fieldTypes.get("guid")); + Assert.assertEquals(FieldType.STRING, fieldTypes.get("source:type")); + Assert.assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr")); + Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port")); + Assert.assertEquals(FieldType.LONG, fieldTypes.get("long_field")); + Assert.assertEquals(FieldType.DATE, fieldTypes.get("timestamp")); + Assert.assertEquals(FieldType.FLOAT, fieldTypes.get("latitude")); + Assert.assertEquals(FieldType.DOUBLE, fieldTypes.get("score")); + Assert.assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert")); + Assert.assertEquals(FieldType.OTHER, fieldTypes.get("location_point")); + Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("duplicate_name_field")); + Assert.assertEquals(FieldType.OTHER, fieldTypes.get("alert")); } // getColumnMetadata with an index that doesn't exist { Map<String, FieldType> fieldTypes = dao.getColumnMetadata(Collections.singletonList("someindex")); Assert.assertEquals(0, fieldTypes.size()); } - //Fields query + //Fields query { SearchRequest request = JSONUtils.INSTANCE.load(fieldsQuery, SearchRequest.class); SearchResponse response = dao.search(request); @@ -793,7 +921,7 @@ public abstract class SearchIntegrationTest { Assert.fail("Exception expected, but did not come."); } catch(InvalidSearchException ise) { - Assert.assertEquals("Could not execute search", ise.getMessage()); + // success } } //Group by IP query
