diff --git a/stacktach/models.py b/stacktach/models.py index e4ff911..ca2ea94 100644 --- a/stacktach/models.py +++ b/stacktach/models.py @@ -21,9 +21,6 @@ class Deployment(models.Model): name = models.CharField(max_length=50) - - - class RawData(models.Model): deployment = models.ForeignKey(Deployment) tenant = models.CharField(max_length=50, null=True, blank=True, diff --git a/tests/unit/test_worker.py b/tests/unit/test_worker.py index eccd830..ada86bb 100644 --- a/tests/unit/test_worker.py +++ b/tests/unit/test_worker.py @@ -26,19 +26,17 @@ class NovaConsumerTestCase(unittest.TestCase): consumer = self.mox.CreateMockAnything() created_consumers.append(consumer) return consumer - self.mox.StubOutClassWithMocks(kombu.entity, 'Exchange') - self.mox.StubOutClassWithMocks(kombu, 'Queue') - kombu.entity.Exchange('nova', type='topic', exclusive=False, - durable=True, auto_delete=False) - info_queue = kombu.Queue('monitor.info', kombu.entity.Exchange, - auto_delete=False, durable=True, - exclusive=False, routing_key='monitor.info', - queue_arguments={}) - error_queue = kombu.Queue('monitor.error', kombu.entity.Exchange, - auto_delete=False, durable=True, - exclusive=False, routing_key='monitor.error', - queue_arguments={}) + self.mox.StubOutWithMock(worker.NovaConsumer, '_create_exchange') + self.mox.StubOutWithMock(worker.NovaConsumer, '_create_queue') consumer = worker.NovaConsumer('test', None, None, True, {}) + exchange = self.mox.CreateMockAnything() + consumer._create_exchange('nova', 'topic').AndReturn(exchange) + info_queue = self.mox.CreateMockAnything() + error_queue = self.mox.CreateMockAnything() + consumer._create_queue('monitor.info', exchange, 'monitor.info')\ + .AndReturn(info_queue) + consumer._create_queue('monitor.error', exchange, 'monitor.error')\ + .AndReturn(error_queue) self.mox.ReplayAll() consumers = consumer.get_consumers(Consumer, None) self.assertEqual(len(consumers), 1) @@ -50,39 +48,47 @@ class NovaConsumerTestCase(unittest.TestCase): self.assertTrue(consumer.on_nova in created_callbacks) self.mox.VerifyAll() - def test_get_consumers_queue_args(self): - created_queues = [] - created_callbacks = [] - created_consumers = [] - def Consumer(queues=None, callbacks=None): - created_queues.extend(queues) - created_callbacks.extend(callbacks) - consumer = self.mox.CreateMockAnything() - created_consumers.append(consumer) - return consumer + def test_create_exchange(self): + args = {'key': 'value'} + consumer = worker.NovaConsumer('test', None, None, True, args) + self.mox.StubOutClassWithMocks(kombu.entity, 'Exchange') + exchange = kombu.entity.Exchange('nova', type='topic', exclusive=False, + durable=True, auto_delete=False) + self.mox.ReplayAll() + actual_exchange = consumer._create_exchange('nova', 'topic') + self.assertEqual(actual_exchange, exchange) + self.mox.VerifyAll() + + def test_create_queue(self): self.mox.StubOutClassWithMocks(kombu, 'Queue') - kombu.entity.Exchange('nova', type='topic', exclusive=False, - durable=True, auto_delete=False) - queue_args = {'arg': 'val'} - info_queue = kombu.Queue('monitor.info', kombu.entity.Exchange, - auto_delete=False, durable=True, - exclusive=False, routing_key='monitor.info', - queue_arguments=queue_args) - error_queue = kombu.Queue('monitor.error', kombu.entity.Exchange, - auto_delete=False, durable=True, - exclusive=False, routing_key='monitor.error', - queue_arguments=queue_args) + exchange = self.mox.CreateMockAnything() + queue = kombu.Queue('name', exchange, auto_delete=False, durable=True, + exclusive=False, routing_key='routing.key', + queue_arguments={}) + consumer = worker.NovaConsumer('test', None, None, True, {}) + self.mox.ReplayAll() + actual_queue = consumer._create_queue('name', exchange, 'routing.key', + exclusive=False, + auto_delete=False) + self.assertEqual(actual_queue, queue) + self.mox.VerifyAll() + + + + def test_create_queue_with_queue_args(self): + self.mox.StubOutClassWithMocks(kombu, 'Queue') + exchange = self.mox.CreateMockAnything() + queue_args = {'key': 'value'} + queue = kombu.Queue('name', exchange, auto_delete=False, durable=True, + exclusive=False, routing_key='routing.key', + queue_arguments=queue_args) consumer = worker.NovaConsumer('test', None, None, True, queue_args) self.mox.ReplayAll() - consumers = consumer.get_consumers(Consumer, None) - self.assertEqual(len(consumers), 1) - self.assertEqual(consumers[0], created_consumers[0]) - self.assertEqual(len(created_queues), 2) - self.assertTrue(info_queue in created_queues) - self.assertTrue(error_queue in created_queues) - self.assertEqual(len(created_callbacks), 1) - self.assertTrue(consumer.on_nova in created_callbacks) + actual_queue = consumer._create_queue('name', exchange, 'routing.key', + exclusive=False, + auto_delete=False) + self.assertEqual(actual_queue, queue) self.mox.VerifyAll() def test_process(self): diff --git a/worker/worker.py b/worker/worker.py index 21a78ea..db7a22b 100644 --- a/worker/worker.py +++ b/worker/worker.py @@ -48,20 +48,23 @@ class NovaConsumer(kombu.mixins.ConsumerMixin): self.processed = 0 self.total_processed = 0 + def _create_exchange(self, name, type, exclusive=False, auto_delete=False): + return kombu.entity.Exchange(name, type=type, exclusive=exclusive, + durable=self.durable, auto_delete=auto_delete) + + def _create_queue(self, name, nova_exchange, routing_key, exclusive=False, + auto_delete=False): + return kombu.Queue(name, nova_exchange, durable=self.durable, + auto_delete=exclusive, exclusive=auto_delete, + queue_arguments=self.queue_arguments, + routing_key=routing_key) + def get_consumers(self, Consumer, channel): - nova_exchange = kombu.entity.Exchange("nova", type="topic", - exclusive=False, durable=self.durable, - auto_delete=False) + nova_exchange = self._create_exchange("nova", "topic") nova_queues = [ - kombu.Queue("monitor.info", nova_exchange, durable=self.durable, - auto_delete=False, exclusive=False, - queue_arguments=self.queue_arguments, - routing_key='monitor.info'), - kombu.Queue("monitor.error", nova_exchange, durable=self.durable, - auto_delete=False, - queue_arguments=self.queue_arguments, - exclusive=False, routing_key='monitor.error'), + self._create_queue('monitor.info', nova_exchange, 'monitor.info'), + self._create_queue('monitor.error', nova_exchange, 'monitor.error') ] return [Consumer(queues=nova_queues, callbacks=[self.on_nova])]