aboutsummaryrefslogtreecommitdiff
path: root/tests/test_stats.py
diff options
context:
space:
mode:
authorKapileshwar Singh <kapileshwar.singh@arm.com>2015-12-16 16:48:52 +0000
committerKapileshwar Singh <kapileshwar.singh@arm.com>2015-12-16 17:13:02 +0000
commit35b41d85468ff3bda27e5f69858047a55bd6cbe2 (patch)
treef7d809f0f844a20759387e59bbd8e19147c934a2 /tests/test_stats.py
parentdc2a6cefcc48643628ae99f7076a5c76ea3f5315 (diff)
downloadtrappy-35b41d85468ff3bda27e5f69858047a55bd6cbe2.tar.gz
tests: Add tests for trappy.stats.Aggregator
Signed-off-by: Kapileshwar Singh <kapileshwar.singh@arm.com>
Diffstat (limited to 'tests/test_stats.py')
-rw-r--r--tests/test_stats.py117
1 files changed, 117 insertions, 0 deletions
diff --git a/tests/test_stats.py b/tests/test_stats.py
index 371139e..9f30e26 100644
--- a/tests/test_stats.py
+++ b/tests/test_stats.py
@@ -16,6 +16,7 @@
import unittest
from trappy.stats.Topology import Topology
from trappy.stats.Trigger import Trigger
+from trappy.stats.Aggregator import MultiTriggerAggregator
import trappy
from trappy.base import Base
@@ -159,3 +160,119 @@ class TestTrigger(BaseTestStats):
expected = pd.Series([1], index=pd.Index([0.5], name="Time"))
assert_series_equal(expected, trigger.generate(1))
+
+
+class TestAggregator(BaseTestStats):
+
+ def test_scalar_aggfunc_single_trigger(self):
+ """TestAggregator: 1 trigger scalar aggfunc"""
+
+ def aggfunc(series):
+ return series.sum()
+
+ filters = {
+ "result": "fire"
+ }
+
+ event_class = self._run.aim_and_fire
+ value = 1
+ pivot = "identifier"
+
+ trigger = Trigger(self._run,
+ event_class,
+ filters,
+ value,
+ pivot)
+
+ aggregator = MultiTriggerAggregator([trigger],
+ self.topology,
+ aggfunc=aggfunc)
+
+ # There are three "fire" in total
+ # The all level in topology looks like
+ # [[0, 1]]
+ result = aggregator.aggregate(level="all")
+ self.assertEqual(result, [3.0])
+
+ # There are two "fire" on the first node group and a
+ # a single "fire" on the second node group at the cluster
+ # level which looks like
+ # [[0], [1]]
+ result = aggregator.aggregate(level="cluster")
+ self.assertEqual(result, [2.0, 1.0])
+
+ def test_vector_aggfunc_single_trigger(self):
+ """TestAggregator: 1 trigger vector aggfunc"""
+
+ def aggfunc(series):
+ return series.cumsum()
+
+ filters = {
+ "result": "fire"
+ }
+
+ event_class = self._run.aim_and_fire
+ value = 1
+ pivot = "identifier"
+
+ trigger = Trigger(self._run,
+ event_class,
+ filters,
+ value,
+ pivot)
+
+ aggregator = MultiTriggerAggregator([trigger],
+ self.topology,
+ aggfunc=aggfunc)
+
+ # There are three "fire" in total
+ # The all level in topology looks like
+ # [[0, 1]]
+ result = aggregator.aggregate(level="all")
+ expected_result = pd.Series([1.0, 1.0, 2.0, 2.0, 3.0, 3.0],
+ index=pd.Index([0.1, 0.2, 0.3, 0.4, 0.5, 0.6])
+ )
+ assert_series_equal(result[0], expected_result)
+
+ def test_vector_aggfunc_multiple_trigger(self):
+ """TestAggregator: multi trigger vector aggfunc"""
+
+ def aggfunc(series):
+ return series.cumsum()
+
+ filters = {
+ "result": "fire"
+ }
+
+ event_class = self._run.aim_and_fire
+ value = 1
+ pivot = "identifier"
+
+ trigger_fire = Trigger(self._run,
+ event_class,
+ filters,
+ value,
+ pivot)
+
+ filters = {
+ "result": "blank"
+ }
+ value = -1
+ trigger_blank = Trigger(self._run,
+ event_class,
+ filters,
+ value,
+ pivot)
+
+ aggregator = MultiTriggerAggregator([trigger_fire, trigger_blank],
+ self.topology,
+ aggfunc=aggfunc)
+
+ # There are three "fire" in total
+ # The all level in topology looks like
+ # [[0, 1]]
+ result = aggregator.aggregate(level="all")
+ expected_result = pd.Series([1.0, 0.0, 1.0, 0.0, 1.0, 0.0],
+ index=pd.Index([0.1, 0.2, 0.3, 0.4, 0.5, 0.6])
+ )
+ assert_series_equal(result[0], expected_result)