]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
heat tests : Add WatchRule evaluate test
authorSteven Hardy <shardy@redhat.com>
Mon, 21 Jan 2013 11:24:00 +0000 (11:24 +0000)
committerSteven Hardy <shardy@redhat.com>
Mon, 21 Jan 2013 20:24:20 +0000 (20:24 +0000)
Add test for WatchRule evaluate/run_rule functionality

Change-Id: Ic6994208485d03ec692174dc52d3244d331abe10
Signed-off-by: Steven Hardy <shardy@redhat.com>
heat/tests/test_watch.py

index f021982fd3ac57746b53f01da4cf22067ee002b4..c5372f08a170a936a311fb465c7cb6d552b98345 100644 (file)
@@ -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)