You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ra...@apache.org on 2016/09/07 05:51:38 UTC

incubator-eagle git commit: [Enhancement] eagle alert engine policy handler extensible for customized handler

Repository: incubator-eagle
Updated Branches:
  refs/heads/develop fce6ae3f0 -> f81ae0621


[Enhancement] eagle alert engine policy handler extensible for customized handler

Author : ralphsu


Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/f81ae062
Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/f81ae062
Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/f81ae062

Branch: refs/heads/develop
Commit: f81ae06217235a04745997f70ddcd1c4d92707e9
Parents: fce6ae3
Author: Ralph, Su <su...@gmail.com>
Authored: Wed Sep 7 13:50:32 2016 +0800
Committer: Ralph, Su <su...@gmail.com>
Committed: Wed Sep 7 13:50:32 2016 +0800

----------------------------------------------------------------------
 .../org/apache/eagle/alert/utils/JsonUtils.java |  2 +-
 .../engine/evaluator/PolicyHandlerContext.java  | 13 ++++-
 .../impl/PolicyGroupEvaluatorImpl.java          | 13 ++---
 .../engine/evaluator/PoilcyExtendedTest.java    | 51 ++++++++++++++++++++
 .../src/test/resources/extend_policy.json       | 22 +++++++++
 5 files changed, 92 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/f81ae062/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/JsonUtils.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/JsonUtils.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/JsonUtils.java
index de0c48b..09ee5f4 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/JsonUtils.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-common/src/main/java/org/apache/eagle/alert/utils/JsonUtils.java
@@ -16,10 +16,10 @@
  */
 package org.apache.eagle.alert.utils;
 
+import org.codehaus.jackson.map.ObjectMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 
 /**
  * @since May 1, 2016

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/f81ae062/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyHandlerContext.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyHandlerContext.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyHandlerContext.java
index 285ca13..335b237 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyHandlerContext.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/PolicyHandlerContext.java
@@ -1,8 +1,8 @@
 package org.apache.eagle.alert.engine.evaluator;
 
-import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
-
 import backtype.storm.metric.api.MultiCountMetric;
+import com.typesafe.config.Config;
+import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
 
 /**
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -25,6 +25,7 @@ public class PolicyHandlerContext {
     private PolicyGroupEvaluator policyEvaluator;
     private MultiCountMetric policyCounter;
     private String policyEvaluatorId;
+    private Config config;
 
     public PolicyDefinition getPolicyDefinition() {
         return policyDefinition;
@@ -57,4 +58,12 @@ public class PolicyHandlerContext {
     public void setPolicyEvaluatorId(String policyEvaluatorId) {
         this.policyEvaluatorId = policyEvaluatorId;
     }
+
+    public Config getConfig() {
+        return config;
+    }
+
+    public void setConfig(Config config) {
+        this.config = config;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/f81ae062/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/PolicyGroupEvaluatorImpl.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/PolicyGroupEvaluatorImpl.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/PolicyGroupEvaluatorImpl.java
index 068df90..26ae19e 100644
--- a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/PolicyGroupEvaluatorImpl.java
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/main/java/org/apache/eagle/alert/engine/evaluator/impl/PolicyGroupEvaluatorImpl.java
@@ -138,12 +138,13 @@ public class PolicyGroupEvaluatorImpl implements PolicyGroupEvaluator {
             policies.put(policy.getName(), policy);
             CompositePolicyHandler handler = new CompositePolicyHandler(sds);
             try {
-                PolicyHandlerContext context = new PolicyHandlerContext();
-                context.setPolicyCounter(this.context.counter());
-                context.setPolicyDefinition(policy);
-                context.setPolicyEvaluator(this);
-                context.setPolicyEvaluatorId(policyEvaluatorId);
-                handler.prepare(collector, context);
+                PolicyHandlerContext handlerContext = new PolicyHandlerContext();
+                handlerContext.setPolicyCounter(this.context.counter());
+                handlerContext.setPolicyDefinition(policy);
+                handlerContext.setPolicyEvaluator(this);
+                handlerContext.setPolicyEvaluatorId(policyEvaluatorId);
+                handlerContext.setConfig(this.context.config());
+                handler.prepare(collector, handlerContext);
                 handlers.put(policy.getName(), handler);
             } catch (Exception e) {
                 LOG.error(e.getMessage(), e);

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/f81ae062/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/PoilcyExtendedTest.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/PoilcyExtendedTest.java b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/PoilcyExtendedTest.java
new file mode 100644
index 0000000..dd75efb
--- /dev/null
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/java/org/apache/eagle/alert/engine/evaluator/PoilcyExtendedTest.java
@@ -0,0 +1,51 @@
+package org.apache.eagle.alert.engine.evaluator;
+
+import org.apache.eagle.alert.engine.coordinator.PolicyDefinition;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.node.ArrayNode;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 9/7/16.
+ */
+public class PoilcyExtendedTest {
+
+    private static final ObjectMapper mapper = new ObjectMapper();
+
+    @Test
+    public void test() throws Exception {
+        ArrayNode arrayNode = (ArrayNode)
+                mapper.readTree(PoilcyExtendedTest.class.getResourceAsStream("/extend_policy.json"));
+        Assert.assertEquals(1, arrayNode.size());
+        for (JsonNode node : arrayNode) {
+            PolicyDefinition definition = mapper.readValue(node, PolicyDefinition.class);
+
+            Assert.assertNotNull(definition);
+            Assert.assertNotNull(definition.getName());
+            Assert.assertNotNull(definition.getDefinition());
+
+            Assert.assertEquals(PolicyStreamHandlers.CUSTOMIZED_ENGINE, definition.getDefinition().getType());
+            Assert.assertNotNull(definition.getDefinition().getProperties());
+
+            Assert.assertTrue(definition.getDefinition().getProperties().containsKey("parentKey"));
+            Map pkSetting = (Map) definition.getDefinition().getProperties().get("parentKey");
+            Assert.assertTrue(pkSetting.containsKey("syslogStream"));
+
+            Map syslogStreamSetting = (Map) pkSetting.get("syslogStream");
+            Assert.assertTrue(syslogStreamSetting.containsKey("pattern"));
+            Assert.assertEquals("%s-%s", syslogStreamSetting.get("pattern"));
+
+            Assert.assertTrue(syslogStreamSetting.containsKey("columns"));
+            Assert.assertEquals(3, ((List) syslogStreamSetting.get("columns")).size());
+
+            break;
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/f81ae062/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/extend_policy.json
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/extend_policy.json b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/extend_policy.json
new file mode 100644
index 0000000..3a5bd86
--- /dev/null
+++ b/eagle-core/eagle-alert-parent/eagle-alert/alert-engine/src/test/resources/extend_policy.json
@@ -0,0 +1,22 @@
+[
+  {
+    "name": "extend-policy",
+    "definition": {
+      "type": "Custom",
+      "handlerClass": "i.o.x.Handler",
+      "value": "",
+      "properties": {
+        "parentKey": {
+          "syslogStream": {
+            "pattern": "%s-%s",
+            "columns": [
+              "a",
+              "b",
+              "d"
+            ]
+          }
+        }
+      }
+    }
+  }
+]