You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by ce...@apache.org on 2017/09/13 23:54:32 UTC

metron git commit: METRON-1179: Make STATS_ADD to take a list closes apache/incubator-metron#750

Repository: metron
Updated Branches:
  refs/heads/master 6017c5974 -> 2c56a13e5


METRON-1179: Make STATS_ADD to take a list closes apache/incubator-metron#750


Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/2c56a13e
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/2c56a13e
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/2c56a13e

Branch: refs/heads/master
Commit: 2c56a13e53065954a853cc33a19b569b686cb70d
Parents: 6017c59
Author: cstella <ce...@gmail.com>
Authored: Wed Sep 13 16:53:54 2017 -0700
Committer: cstella <ce...@gmail.com>
Committed: Wed Sep 13 16:53:54 2017 -0700

----------------------------------------------------------------------
 metron-analytics/metron-statistics/README.md    |  2 +-
 .../statistics/StellarStatisticsFunctions.java  | 19 +++++++++++++---
 .../StellarStatisticsFunctionsTest.java         | 24 ++++++++++++++++++++
 3 files changed, 41 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/metron/blob/2c56a13e/metron-analytics/metron-statistics/README.md
----------------------------------------------------------------------
diff --git a/metron-analytics/metron-statistics/README.md b/metron-analytics/metron-statistics/README.md
index f822845..982132a 100644
--- a/metron-analytics/metron-statistics/README.md
+++ b/metron-analytics/metron-statistics/README.md
@@ -60,7 +60,7 @@ functions can be used from everywhere where Stellar is used.
   * Description: Adds one or more input values to those that are used to calculate the summary statistics.
   * Input:
     * stats - The Stellar statistics object.  If null, then a new one is initialized.
-    * value+ - One or more numbers to add
+    * value+ - One or more items to add. Each item may be a number or a list of numbers. If an item is a list, each number in the list will be added.
   * Returns: A Stellar statistics object
 
 #### `STATS_BIN`

http://git-wip-us.apache.org/repos/asf/metron/blob/2c56a13e/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/StellarStatisticsFunctions.java
----------------------------------------------------------------------
diff --git a/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/StellarStatisticsFunctions.java b/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/StellarStatisticsFunctions.java
index d02734e..a6cf605 100644
--- a/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/StellarStatisticsFunctions.java
+++ b/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/StellarStatisticsFunctions.java
@@ -125,7 +125,7 @@ public class StellarStatisticsFunctions {
           , description = "Adds one or more input values to those that are used to calculate the summary statistics."
           , params = {
                       "stats - The Stellar statistics object.  If null, then a new one is initialized."
-                     , "value+ - One or more numbers to add"
+                     , "value+ - One or more items to add. Each item may be a number or a list of numbers. If an item is a list, each number in the list will be added."
                      }
           , returns = "A Stellar statistics object"
           )
@@ -141,8 +141,21 @@ public class StellarStatisticsFunctions {
 
       // add each of the numeric values
       for(int i=1; i<args.size(); i++) {
-        double value = convert(args.get(i), Double.class);
-        stats.addValue(value);
+        Object n = args.get(i);
+        if( n != null) {
+          if(n instanceof Iterable) {
+            for(Object num : (Iterable<Object>)n) {
+              if(num != null) {
+                Double value = convert(num, Double.class);
+                stats.addValue(value);
+              }
+            }
+          }
+          else {
+            Double value = convert(args.get(i), Double.class);
+            stats.addValue(value);
+          }
+        }
       }
 
       return stats;

http://git-wip-us.apache.org/repos/asf/metron/blob/2c56a13e/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/StellarStatisticsFunctionsTest.java
----------------------------------------------------------------------
diff --git a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/StellarStatisticsFunctionsTest.java b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/StellarStatisticsFunctionsTest.java
index 42b57bd..a026bf2 100644
--- a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/StellarStatisticsFunctionsTest.java
+++ b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/StellarStatisticsFunctionsTest.java
@@ -224,6 +224,18 @@ public class StellarStatisticsFunctionsTest {
   }
 
   @Test
+  public void testAddAllManyIntegers() throws Exception {
+    statsInit(windowSize);
+    Object result = run("STATS_COUNT(stats)", variables);
+    double countAtStart = (double) result;
+
+    run("STATS_ADD(stats, [10, 20, 30, 40, 50])", variables);
+
+    Object actual = run("STATS_COUNT(stats)", variables);
+    assertEquals(countAtStart + 5.0, (double) actual, 0.1);
+  }
+
+  @Test
   public void testAddManyIntegers() throws Exception {
     statsInit(windowSize);
     Object result = run("STATS_COUNT(stats)", variables);
@@ -236,6 +248,18 @@ public class StellarStatisticsFunctionsTest {
   }
 
   @Test
+  public void testAllManyFloat() throws Exception {
+    statsInit(windowSize);
+    Object result = run("STATS_COUNT(stats)", variables);
+    double countAtStart = (double) result;
+
+    run("STATS_ADD(stats, [10.0, 20.0, 30.0, 40.0, 50.0, null])", variables);
+
+    Object actual = run("STATS_COUNT(stats)", variables);
+    assertEquals(countAtStart + 5.0, (double) actual, 0.1);
+  }
+
+  @Test
   public void testAddManyFloats() throws Exception {
     statsInit(windowSize);
     Object result = run("STATS_COUNT(stats)", variables);