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 <ceste...@gmail.com> Authored: Wed Sep 13 16:53:54 2017 -0700 Committer: cstella <ceste...@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);