From 52bea7e4e508d3f6e52cbfa4e8ef06fcdaa616f8 Mon Sep 17 00:00:00 2001 From: Steven Hardy Date: Mon, 21 Jan 2013 11:24:00 +0000 Subject: [PATCH] heat tests : Add WatchRule evaluate test Add test for WatchRule evaluate/run_rule functionality Change-Id: Ic6994208485d03ec692174dc52d3244d331abe10 Signed-off-by: Steven Hardy --- heat/tests/test_watch.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/heat/tests/test_watch.py b/heat/tests/test_watch.py index f021982f..c5372f08 100644 --- a/heat/tests/test_watch.py +++ b/heat/tests/test_watch.py @@ -315,3 +315,43 @@ class WatchRuleTest(unittest.TestCase): # Cleanup db_api.watch_rule_delete(self.ctx, 'storetest') + + def test_evaluate(self): + rule = {'EvaluationPeriods': '1', + 'MetricName': 'test_metric', + 'Period': '300', + 'Statistic': 'Maximum', + 'ComparisonOperator': 'GreaterThanOrEqualToThreshold', + 'Threshold': '30'} + + now = timeutils.utcnow() + self.m.StubOutWithMock(timeutils, 'utcnow') + timeutils.utcnow().MultipleTimes().AndReturn(now) + self.m.ReplayAll() + + # Data breaches threshold, but it's not time to evaluate + last = now - datetime.timedelta(seconds=299) + data = WatchData(35, now - datetime.timedelta(seconds=150)) + watcher = watchrule.WatchRule(context=self.ctx, + watch_name="testwatch", + rule=rule, + watch_data=[data], + stack_id=self.stack_id, + last_evaluated=last) + + watcher.evaluate() + self.assertEqual(watcher.state, 'NORMAL') + + # now - last == Period, so should set ALARM + last = now - datetime.timedelta(seconds=300) + data = WatchData(35, now - datetime.timedelta(seconds=150)) + watcher = watchrule.WatchRule(context=self.ctx, + watch_name="testwatch", + rule=rule, + watch_data=[data], + stack_id=self.stack_id, + last_evaluated=last) + + watcher.evaluate() + self.assertEqual(watcher.state, 'ALARM') + self.assertEqual(watcher.last_evaluated, now) -- 2.45.2