Fix possible race issue with test_engine_service
There's the potential for racy behavior in test_show_watch, because the result of show_watch(self.ctx, watch_name=None) is all watches visible to the user, not only those for a specific stack. So it's possible that the result length will be more than two, and since the watch name is also not unique, we could see spurious test failures. So make the test assertions more specific, and avoid reusing the same watch name in test_show_watch_metric. Change-Id: Ibb1cbae04dee4b6c4ada44336143fd122a3cb53f Closes-Bug: #1237324
This commit is contained in:
parent
06a6609035
commit
f9ee0e0746
@ -1577,7 +1577,7 @@ class StackServiceTest(HeatTestCase):
|
||||
u'MetricName': u'ServiceFailure'}
|
||||
self.wr = []
|
||||
self.wr.append(watchrule.WatchRule(context=self.ctx,
|
||||
watch_name='HttpFailureAlarm',
|
||||
watch_name='show_watch_1',
|
||||
rule=rule,
|
||||
watch_data=[],
|
||||
stack_id=self.stack.id,
|
||||
@ -1585,20 +1585,28 @@ class StackServiceTest(HeatTestCase):
|
||||
self.wr[0].store()
|
||||
|
||||
self.wr.append(watchrule.WatchRule(context=self.ctx,
|
||||
watch_name='AnotherWatch',
|
||||
watch_name='show_watch_2',
|
||||
rule=rule,
|
||||
watch_data=[],
|
||||
stack_id=self.stack.id,
|
||||
state='NORMAL'))
|
||||
self.wr[1].store()
|
||||
|
||||
# watch_name=None should return both watches
|
||||
# watch_name=None should return all watches
|
||||
result = self.eng.show_watch(self.ctx, watch_name=None)
|
||||
self.assertEqual(2, len(result))
|
||||
result_names = [r.get('name') for r in result]
|
||||
self.assertIn('show_watch_1', result_names)
|
||||
self.assertIn('show_watch_2', result_names)
|
||||
|
||||
# watch_name="HttpFailureAlarm" should return only one
|
||||
result = self.eng.show_watch(self.ctx, watch_name="HttpFailureAlarm")
|
||||
result = self.eng.show_watch(self.ctx, watch_name="show_watch_1")
|
||||
self.assertEqual(1, len(result))
|
||||
self.assertIn('name', result[0])
|
||||
self.assertEqual('show_watch_1', result[0]['name'])
|
||||
|
||||
result = self.eng.show_watch(self.ctx, watch_name="show_watch_2")
|
||||
self.assertEqual(1, len(result))
|
||||
self.assertIn('name', result[0])
|
||||
self.assertEqual('show_watch_2', result[0]['name'])
|
||||
|
||||
self.assertRaises(exception.WatchRuleNotFound,
|
||||
self.eng.show_watch,
|
||||
@ -1622,7 +1630,7 @@ class StackServiceTest(HeatTestCase):
|
||||
u'Threshold': u'2',
|
||||
u'MetricName': u'ServiceFailure'}
|
||||
self.wr = watchrule.WatchRule(context=self.ctx,
|
||||
watch_name='HttpFailureAlarm',
|
||||
watch_name='show_watch_metric_1',
|
||||
rule=rule,
|
||||
watch_data=[],
|
||||
stack_id=self.stack.id,
|
||||
@ -1630,7 +1638,7 @@ class StackServiceTest(HeatTestCase):
|
||||
self.wr.store()
|
||||
|
||||
# And add a metric datapoint
|
||||
watch = db_api.watch_rule_get_by_name(self.ctx, "HttpFailureAlarm")
|
||||
watch = db_api.watch_rule_get_by_name(self.ctx, 'show_watch_metric_1')
|
||||
self.assertNotEqual(watch, None)
|
||||
values = {'watch_rule_id': watch.id,
|
||||
'data': {u'Namespace': u'system/linux',
|
||||
|
Loading…
Reference in New Issue
Block a user