AMBARI-18372. Audit logs should not be filtered by Log Feeder (Miklos Gergely 
via oleewere)

Change-Id: I636b5619e365e9a9f1271a0da4df545d459900cf


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/762abbce
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/762abbce
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/762abbce

Branch: refs/heads/branch-dev-patch-upgrade
Commit: 762abbce729243856116e7a76332c7d4189fdbe4
Parents: 8a13053
Author: Miklos Gergely <mgerg...@hortonworks.com>
Authored: Mon Oct 3 16:13:42 2016 +0200
Committer: oleewere <oleew...@gmail.com>
Committed: Sat Nov 5 16:08:55 2016 +0100

----------------------------------------------------------------------
 .../logfeeder/logconfig/FilterLogData.java      | 10 ++--
 .../ambari/logfeeder/output/OutputManager.java  |  4 +-
 .../logconfig/LogConfigHandlerTest.java         | 51 ++++++++++++++++----
 .../logfeeder/output/OutputManagerTest.java     |  2 +
 4 files changed, 53 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/762abbce/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/logconfig/FilterLogData.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/logconfig/FilterLogData.java
 
b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/logconfig/FilterLogData.java
index 801a289..a05a916 100644
--- 
a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/logconfig/FilterLogData.java
+++ 
b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/logconfig/FilterLogData.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.ambari.logfeeder.common.LogFeederConstants;
+import org.apache.ambari.logfeeder.input.InputMarker;
 import org.apache.ambari.logfeeder.util.LogFeederUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
@@ -39,15 +40,18 @@ public enum FilterLogData {
   
   private static final boolean DEFAULT_VALUE = true;
 
-  public boolean isAllowed(String jsonBlock) {
+  public boolean isAllowed(String jsonBlock, InputMarker inputMarker) {
     if (StringUtils.isEmpty(jsonBlock)) {
       return DEFAULT_VALUE;
     }
     Map<String, Object> jsonObj = LogFeederUtil.toJSONObject(jsonBlock);
-    return isAllowed(jsonObj);
+    return isAllowed(jsonObj, inputMarker);
   }
 
-  public boolean isAllowed(Map<String, Object> jsonObj) {
+  public boolean isAllowed(Map<String, Object> jsonObj, InputMarker 
inputMarker) {
+    if 
("audit".equals(inputMarker.input.getConfigs().get(LogFeederConstants.ROW_TYPE)))
+      return true;
+    
     boolean isAllowed = applyFilter(jsonObj);
     if (!isAllowed) {
       LOG.trace("Filter block the content :" + 
LogFeederUtil.getGson().toJson(jsonObj));

http://git-wip-us.apache.org/repos/asf/ambari/blob/762abbce/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/output/OutputManager.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/output/OutputManager.java
 
b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/output/OutputManager.java
index 2c81c19..86b5c57 100644
--- 
a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/output/OutputManager.java
+++ 
b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/output/OutputManager.java
@@ -139,7 +139,7 @@ public class OutputManager {
       }
     }
     
-    if (FilterLogData.INSTANCE.isAllowed(jsonObj)) {
+    if (FilterLogData.INSTANCE.isAllowed(jsonObj, inputMarker)) {
       for (Output output : input.getOutputList()) {
         try {
           output.write(jsonObj, inputMarker);
@@ -171,7 +171,7 @@ public class OutputManager {
   }
 
   public void write(String jsonBlock, InputMarker inputMarker) {
-    if (FilterLogData.INSTANCE.isAllowed(jsonBlock)) {
+    if (FilterLogData.INSTANCE.isAllowed(jsonBlock, inputMarker)) {
       for (Output output : inputMarker.input.getOutputList()) {
         try {
           output.write(jsonBlock, inputMarker);

http://git-wip-us.apache.org/repos/asf/ambari/blob/762abbce/ambari-logsearch/ambari-logsearch-logfeeder/src/test/java/org/apache/ambari/logfeeder/logconfig/LogConfigHandlerTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-logfeeder/src/test/java/org/apache/ambari/logfeeder/logconfig/LogConfigHandlerTest.java
 
b/ambari-logsearch/ambari-logsearch-logfeeder/src/test/java/org/apache/ambari/logfeeder/logconfig/LogConfigHandlerTest.java
index 02ffd47..266108f 100644
--- 
a/ambari-logsearch/ambari-logsearch-logfeeder/src/test/java/org/apache/ambari/logfeeder/logconfig/LogConfigHandlerTest.java
+++ 
b/ambari-logsearch/ambari-logsearch-logfeeder/src/test/java/org/apache/ambari/logfeeder/logconfig/LogConfigHandlerTest.java
@@ -26,6 +26,9 @@ import java.util.Map;
 import static org.easymock.EasyMock.*;
 import static org.junit.Assert.*;
 
+import org.apache.ambari.logfeeder.common.LogFeederConstants;
+import org.apache.ambari.logfeeder.input.Input;
+import org.apache.ambari.logfeeder.input.InputMarker;
 import org.apache.ambari.logfeeder.util.LogFeederUtil;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -35,6 +38,24 @@ public class LogConfigHandlerTest {
   
   private static LogConfigFetcher mockFetcher;
   
+  private static InputMarker inputMarkerAudit;
+  private static InputMarker inputMarkerService;
+  static {
+    Map<String, Object> auditMap = new HashMap<String, Object>();
+    auditMap.put(LogFeederConstants.ROW_TYPE, "audit");
+    Input auditInput = strictMock(Input.class);
+    expect(auditInput.getConfigs()).andReturn(auditMap).anyTimes();
+    inputMarkerAudit = new InputMarker(auditInput, null, 0);
+    
+    Map<String, Object> serviceMap = new HashMap<String, Object>();
+    serviceMap.put(LogFeederConstants.ROW_TYPE, "service");
+    Input serviceInput = strictMock(Input.class);
+    expect(serviceInput.getConfigs()).andReturn(serviceMap).anyTimes();
+    inputMarkerService = new InputMarker(serviceInput, null, 0);
+    
+    replay(auditInput, serviceInput);
+  }
+  
   private static final Map<String, Object> CONFIG_MAP = new HashMap<>();
   static {
     CONFIG_MAP.put("jsons",
@@ -74,40 +95,52 @@ public class LogConfigHandlerTest {
   }
   
   @Test
+  public void testLogConfigHandler_auditAllowed() throws Exception {
+    assertTrue(FilterLogData.INSTANCE.isAllowed("{'host':'host1', 
'type':'configured_log_file', 'level':'DEBUG'}",
+        inputMarkerAudit));
+  }
+  
+  @Test
   public void testLogConfigHandler_emptyDataAllowed() throws Exception {
-    assertTrue(FilterLogData.INSTANCE.isAllowed((String)null));
-    assertTrue(FilterLogData.INSTANCE.isAllowed(""));
-    assertTrue(FilterLogData.INSTANCE.isAllowed(Collections.<String, Object> 
emptyMap()));
+    assertTrue(FilterLogData.INSTANCE.isAllowed((String)null, 
inputMarkerService));
+    assertTrue(FilterLogData.INSTANCE.isAllowed("", inputMarkerService));
+    assertTrue(FilterLogData.INSTANCE.isAllowed(Collections.<String, Object> 
emptyMap(), inputMarkerService));
   }
   
   @Test
   public void testLogConfigHandler_notConfiguredLogAllowed() throws Exception {
-    assertTrue(FilterLogData.INSTANCE.isAllowed("{'host':'host1', 
'type':'not_configured_log_file', 'level':'INFO'}"));
+    assertTrue(FilterLogData.INSTANCE.isAllowed("{'host':'host1', 
'type':'not_configured_log_file', 'level':'INFO'}",
+        inputMarkerService));
   }
   
   @Test
   public void testLogConfigHandler_configuredDataAllow() throws Exception {
-    assertTrue(FilterLogData.INSTANCE.isAllowed("{'host':'host1', 
'type':'configured_log_file', 'level':'INFO'}"));
+    assertTrue(FilterLogData.INSTANCE.isAllowed("{'host':'host1', 
'type':'configured_log_file', 'level':'INFO'}",
+        inputMarkerService));
   }
   
   @Test
   public void testLogConfigHandler_configuredDataDontAllow() throws Exception {
-    assertFalse(FilterLogData.INSTANCE.isAllowed("{'host':'host1', 
'type':'configured_log_file', 'level':'DEBUG'}"));
+    assertFalse(FilterLogData.INSTANCE.isAllowed("{'host':'host1', 
'type':'configured_log_file', 'level':'DEBUG'}",
+        inputMarkerService));
   }
   
   @Test
   public void testLogConfigHandler_overridenConfiguredData() throws Exception {
-    assertTrue(FilterLogData.INSTANCE.isAllowed("{'host':'host1', 
'type':'configured_log_file2', 'level':'DEBUG'}"));
+    assertTrue(FilterLogData.INSTANCE.isAllowed("{'host':'host1', 
'type':'configured_log_file2', 'level':'DEBUG'}",
+        inputMarkerService));
   }
   
   @Test
   public void testLogConfigHandler_overridenConfiguredDataDifferentHost() 
throws Exception {
-    assertFalse(FilterLogData.INSTANCE.isAllowed("{'host':'host2', 
'type':'configured_log_file2', 'level':'DEBUG'}"));
+    assertFalse(FilterLogData.INSTANCE.isAllowed("{'host':'host2', 
'type':'configured_log_file2', 'level':'DEBUG'}",
+        inputMarkerService));
   }
   
   @Test
   public void testLogConfigHandler_overridenConfiguredDataExpired() throws 
Exception {
-    assertFalse(FilterLogData.INSTANCE.isAllowed("{'host':'host1', 
'type':'configured_log_file3', 'level':'DEBUG'}"));
+    assertFalse(FilterLogData.INSTANCE.isAllowed("{'host':'host1', 
'type':'configured_log_file3', 'level':'DEBUG'}",
+        inputMarkerService));
   }
   
   @AfterClass

http://git-wip-us.apache.org/repos/asf/ambari/blob/762abbce/ambari-logsearch/ambari-logsearch-logfeeder/src/test/java/org/apache/ambari/logfeeder/output/OutputManagerTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-logsearch/ambari-logsearch-logfeeder/src/test/java/org/apache/ambari/logfeeder/output/OutputManagerTest.java
 
b/ambari-logsearch/ambari-logsearch-logfeeder/src/test/java/org/apache/ambari/logfeeder/output/OutputManagerTest.java
index e103346..a080fa8 100644
--- 
a/ambari-logsearch/ambari-logsearch-logfeeder/src/test/java/org/apache/ambari/logfeeder/output/OutputManagerTest.java
+++ 
b/ambari-logsearch/ambari-logsearch-logfeeder/src/test/java/org/apache/ambari/logfeeder/output/OutputManagerTest.java
@@ -102,6 +102,7 @@ public class OutputManagerTest {
     expect(mockInput.getContextFields()).andReturn(Collections.<String, 
String> emptyMap());
     expect(mockInput.isUseEventMD5()).andReturn(false);
     expect(mockInput.isGenEventMD5()).andReturn(false);
+    expect(mockInput.getConfigs()).andReturn(Collections.<String, Object> 
emptyMap());
     expect(mockInput.getOutputList()).andReturn(Arrays.asList(output1, 
output2, output3));
     
     output1.write(jsonObj, inputMarker); expectLastCall();
@@ -131,6 +132,7 @@ public class OutputManagerTest {
     Output output2 = strictMock(Output.class);
     Output output3 = strictMock(Output.class);
     
+    expect(mockInput.getConfigs()).andReturn(Collections.<String, Object> 
emptyMap());
     expect(mockInput.getOutputList()).andReturn(Arrays.asList(output1, 
output2, output3));
     
     output1.write(jsonString, inputMarker); expectLastCall();

Reply via email to