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);
+  }
 }