Refactoring worker and tests

This commit is contained in:
Andrew Melton 2013-01-29 16:33:30 -05:00
parent 5243cbc24e
commit da5e6765af
3 changed files with 61 additions and 55 deletions

View File

@ -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,

View File

@ -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):

View File

@ -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])]