You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by rm...@apache.org on 2017/11/21 19:46:33 UTC
metron git commit: METRON-1319 Column Metadata REST service should
use default indices on empty input (merrimanr) closes apache/metron#843
Repository: metron
Updated Branches:
refs/heads/master 995b20170 -> 8022f2c8c
METRON-1319 Column Metadata REST service should use default indices on empty input (merrimanr) closes apache/metron#843
Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/8022f2c8
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/8022f2c8
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/8022f2c8
Branch: refs/heads/master
Commit: 8022f2c8c4e9018a15a4f04d0a66f8bc0ea653c3
Parents: 995b201
Author: merrimanr <me...@gmail.com>
Authored: Tue Nov 21 13:46:35 2017 -0600
Committer: merrimanr <me...@apache.org>
Committed: Tue Nov 21 13:46:35 2017 -0600
----------------------------------------------------------------------
.../rest/service/impl/SearchServiceImpl.java | 12 +++++++++
.../SearchControllerIntegrationTest.java | 26 ++++++++++++++++++++
.../service/impl/SearchServiceImplTest.java | 13 ++++++++++
3 files changed, 51 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metron/blob/8022f2c8/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/SearchServiceImpl.java
----------------------------------------------------------------------
diff --git a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/SearchServiceImpl.java b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/SearchServiceImpl.java
index a696f68..7cee3cc 100644
--- a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/SearchServiceImpl.java
+++ b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/SearchServiceImpl.java
@@ -22,6 +22,7 @@ import static org.apache.metron.indexing.dao.MetaAlertDao.METAALERT_TYPE;
import static org.apache.metron.rest.MetronRestConstants.INDEX_WRITER_NAME;
import com.google.common.collect.Lists;
+import java.lang.invoke.MethodHandles;
import org.apache.metron.indexing.dao.IndexDao;
import org.apache.metron.indexing.dao.search.GetRequest;
import org.apache.metron.indexing.dao.search.GroupRequest;
@@ -33,6 +34,8 @@ import org.apache.metron.indexing.dao.search.FieldType;
import org.apache.metron.rest.RestException;
import org.apache.metron.rest.service.SearchService;
import org.apache.metron.rest.service.SensorIndexingConfigService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
@@ -44,6 +47,9 @@ import java.util.List;
@Service
public class SearchServiceImpl implements SearchService {
+
+ private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
private IndexDao dao;
private Environment environment;
private SensorIndexingConfigService sensorIndexingConfigService;
@@ -96,6 +102,12 @@ public class SearchServiceImpl implements SearchService {
@Override
public Map<String, FieldType> getColumnMetadata(List<String> indices) throws RestException {
try {
+ if (indices == null || indices.isEmpty()) {
+ indices = getDefaultIndices();
+ // metaalerts should be included by default in column metadata requests
+ indices.add(METAALERT_TYPE);
+ LOG.debug(String.format("No indices provided for getColumnMetadata. Using default indices: %s", String.join(",", indices)));
+ }
return dao.getColumnMetadata(indices);
}
catch(IOException ioe) {
http://git-wip-us.apache.org/repos/asf/metron/blob/8022f2c8/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SearchControllerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SearchControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SearchControllerIntegrationTest.java
index 78a1e20..f83fe00 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SearchControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SearchControllerIntegrationTest.java
@@ -133,6 +133,32 @@ public class SearchControllerIntegrationTest extends DaoControllerTest {
}
@Test
+ public void testColumnMetadataUsingDefaultIndices() throws Exception {
+ // Setup the default indices of bro and snort
+ sensorIndexingConfigService.save("bro", new HashMap<String, Object>() {{
+ put("index", "bro");
+ }});
+ sensorIndexingConfigService.save("snort", new HashMap<String, Object>() {{
+ put("index", "snort");
+ }});
+
+ // Pass in an empty list to trigger using default indices
+ assertEventually(() -> this.mockMvc.perform(post(searchUrl + "/column/metadata").with(httpBasic(user, password)).with(csrf()).contentType(MediaType.parseMediaType("application/json;charset=UTF-8")).content("[]"))
+ .andExpect(status().isOk())
+ .andExpect(content().contentType(MediaType.parseMediaType("application/json;charset=UTF-8")))
+ .andExpect(jsonPath("$.*", hasSize(5)))
+ .andExpect(jsonPath("$.common_string_field").value("string"))
+ .andExpect(jsonPath("$.common_integer_field").value("integer"))
+ .andExpect(jsonPath("$.bro_field").value("boolean"))
+ .andExpect(jsonPath("$.snort_field").value("double"))
+ .andExpect(jsonPath("$.duplicate_field").value("other"))
+ );
+
+ sensorIndexingConfigService.delete("bro");
+ sensorIndexingConfigService.delete("snort");
+ }
+
+ @Test
public void test() throws Exception {
this.mockMvc.perform(post(searchUrl + "/search").with(httpBasic(user, password)).with(csrf()).contentType(MediaType.parseMediaType("application/json;charset=UTF-8")).content(SearchIntegrationTest.allQuery))
http://git-wip-us.apache.org/repos/asf/metron/blob/8022f2c8/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SearchServiceImplTest.java
----------------------------------------------------------------------
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SearchServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SearchServiceImplTest.java
index 916422a..1d8f182 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SearchServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SearchServiceImplTest.java
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
+import java.util.ArrayList;
import java.util.Arrays;
import org.apache.metron.indexing.dao.IndexDao;
import org.apache.metron.indexing.dao.search.InvalidSearchException;
@@ -95,4 +96,16 @@ public class SearchServiceImplTest {
searchRequest.setIndices(Arrays.asList("bro"));
searchService.search(searchRequest);
}
+
+ @Test
+ public void getColumnMetadataShouldProperlyGetDefaultIndices() throws Exception {
+ when(environment.getProperty(INDEX_WRITER_NAME)).thenReturn("elasticsearch");
+ when(sensorIndexingConfigService.getAllIndices("elasticsearch")).thenReturn(Arrays.asList("bro", "snort", "error"));
+
+ searchService.getColumnMetadata(new ArrayList<>());
+
+ verify(dao).getColumnMetadata(eq(Arrays.asList("bro", "snort", "metaalert")));
+
+ verifyNoMoreInteractions(dao);
+ }
}