diff options
Diffstat (limited to 'ceilometer/tests/alarm/test_rpc.py')
-rw-r--r-- | ceilometer/tests/alarm/test_rpc.py | 86 |
1 files changed, 47 insertions, 39 deletions
diff --git a/ceilometer/tests/alarm/test_rpc.py b/ceilometer/tests/alarm/test_rpc.py index 792b6b24..d798c4e2 100644 --- a/ceilometer/tests/alarm/test_rpc.py +++ b/ceilometer/tests/alarm/test_rpc.py @@ -22,26 +22,27 @@ from ceilometerclient.v2 import alarms import mock from ceilometer.alarm import rpc as rpc_alarm -from ceilometer.openstack.common.fixture import config +from ceilometer import messaging from ceilometer.openstack.common.fixture import mockpatch -from ceilometer.openstack.common import rpc from ceilometer.openstack.common import test from ceilometer.openstack.common import timeutils from ceilometer.storage import models class TestRPCAlarmNotifier(test.BaseTestCase): - def fake_cast(self, context, topic, msg): - self.notified.append((topic, msg)) - self.CONF = self.useFixture(config.Config()).conf + def fake_cast(self, context, method, **args): + self.notified.append((method, args)) def setUp(self): super(TestRPCAlarmNotifier, self).setUp() + messaging.setup('fake://') + self.addCleanup(messaging.cleanup) + self.notified = [] + self.notifier = rpc_alarm.RPCAlarmNotifier() self.useFixture(mockpatch.PatchObject( - rpc, 'cast', + self.notifier.client, 'cast', side_effect=self.fake_cast)) - self.notifier = rpc_alarm.RPCAlarmNotifier() self.alarms = [ alarms.Alarm(None, info={ 'name': 'instance_running_hot', @@ -77,6 +78,10 @@ class TestRPCAlarmNotifier(test.BaseTestCase): }), ] + def test_rpc_target(self): + topic = self.notifier.client.target.topic + self.assertEqual('alarm_notifier', topic) + def test_notify_alarm(self): previous = ['alarm', 'ok'] for i, a in enumerate(self.alarms): @@ -85,25 +90,22 @@ class TestRPCAlarmNotifier(test.BaseTestCase): self.assertEqual(2, len(self.notified)) for i, a in enumerate(self.alarms): actions = getattr(a, models.Alarm.ALARM_ACTIONS_MAP[a.state]) - self.assertEqual(self.CONF.alarm.notifier_rpc_topic, - self.notified[i][0]) + self.assertEqual('notify_alarm', self.notified[i][0]) self.assertEqual(self.alarms[i].alarm_id, - self.notified[i][1]["args"]["data"]["alarm_id"]) - self.assertEqual(actions, - self.notified[i][1]["args"]["data"]["actions"]) + self.notified[i][1]["data"]["alarm_id"]) + self.assertEqual(actions, self.notified[i][1]["data"]["actions"]) self.assertEqual(previous[i], - self.notified[i][1]["args"]["data"]["previous"]) + self.notified[i][1]["data"]["previous"]) self.assertEqual(self.alarms[i].state, - self.notified[i][1]["args"]["data"]["current"]) + self.notified[i][1]["data"]["current"]) self.assertEqual("what? %d" % i, - self.notified[i][1]["args"]["data"]["reason"]) - self.assertEqual( - {'fire': '%d' % i}, - self.notified[i][1]["args"]["data"]["reason_data"]) + self.notified[i][1]["data"]["reason"]) + self.assertEqual({'fire': '%d' % i}, + self.notified[i][1]["data"]["reason_data"]) def test_notify_non_string_reason(self): self.notifier.notify(self.alarms[0], 'ok', 42, {}) - reason = self.notified[0][1]['args']['data']['reason'] + reason = self.notified[0][1]['data']['reason'] self.assertIsInstance(reason, basestring) def test_notify_no_actions(self): @@ -128,42 +130,48 @@ class TestRPCAlarmNotifier(test.BaseTestCase): class TestRPCAlarmPartitionCoordination(test.BaseTestCase): - def fake_fanout_cast(self, context, topic, msg): - self.notified.append((topic, msg)) + def fake_fanout_cast(self, context, method, **args): + self.notified.append((method, args)) + + def fake_prepare(self, fanout): + self.assertTrue(fanout) + cctxt = mock.Mock() + cctxt.cast.side_effect = self.fake_fanout_cast + return cctxt def setUp(self): super(TestRPCAlarmPartitionCoordination, self).setUp() + messaging.setup('fake://') + self.addCleanup(messaging.cleanup) + self.notified = [] - self.useFixture(mockpatch.PatchObject( - rpc, 'fanout_cast', - side_effect=self.fake_fanout_cast)) self.ordination = rpc_alarm.RPCAlarmPartitionCoordination() + self.useFixture(mockpatch.PatchObject( + self.ordination.client, 'prepare', + side_effect=self.fake_prepare)) self.alarms = [mock.MagicMock(), mock.MagicMock()] def test_ordination_presence(self): id = uuid.uuid4() priority = float(timeutils.utcnow().strftime('%s.%f')) self.ordination.presence(id, priority) - topic, msg = self.notified[0] - self.assertEqual('alarm_partition_coordination', topic) - self.assertEqual(id, msg['args']['data']['uuid']) - self.assertEqual(priority, msg['args']['data']['priority']) - self.assertEqual('presence', msg['method']) + method, args = self.notified[0] + self.assertEqual(id, args['data']['uuid']) + self.assertEqual(priority, args['data']['priority']) + self.assertEqual('presence', method) def test_ordination_assign(self): id = uuid.uuid4() self.ordination.assign(id, self.alarms) - topic, msg = self.notified[0] - self.assertEqual('alarm_partition_coordination', topic) - self.assertEqual(id, msg['args']['data']['uuid']) - self.assertEqual(2, len(msg['args']['data']['alarms'])) - self.assertEqual('assign', msg['method']) + method, args = self.notified[0] + self.assertEqual(id, args['data']['uuid']) + self.assertEqual(2, len(args['data']['alarms'])) + self.assertEqual('assign', method) def test_ordination_allocate(self): id = uuid.uuid4() self.ordination.allocate(id, self.alarms) - topic, msg = self.notified[0] - self.assertEqual('alarm_partition_coordination', topic) - self.assertEqual(id, msg['args']['data']['uuid']) - self.assertEqual(2, len(msg['args']['data']['alarms'])) - self.assertEqual('allocate', msg['method']) + method, args = self.notified[0] + self.assertEqual(id, args['data']['uuid']) + self.assertEqual(2, len(args['data']['alarms'])) + self.assertEqual('allocate', method) |