class TestRabbitMQPublisher(object): @mock.patch('qpaca.backend.rabbitmq.InfluxDB') @mock.patch('qpaca.backend.rabbitmq.RabbitMQPublisher._connect') def setup_class(self, mock1, mock2): self.publisher = RabbitMQPublisher() @mock.patch('qpaca.backend.rabbitmq.InfluxDB') @mock.patch('qpaca.backend.rabbitmq.RabbitMQPublisher._connect') def test_call_create_monitor(self, mocked_class, mocked_function): RabbitMQPublisher() assert mocked_class.called @mock.patch('qpaca.backend.rabbitmq.RabbitMQPublisher._connect') def test_call_connect(self, mocked_function): RabbitMQPublisher() assert mocked_function.called @mock.patch('qpaca.backend.rabbitmq.RabbitMQPublisher._create_exchange') def test_call_create_exchange(self, mocked_function): self.publisher.start() assert mocked_function.called @mock.patch('qpaca.backend.rabbitmq.RabbitMQPublisher._create_exchange') @mock.patch('qpaca.backend.rabbitmq.RabbitMQPublisher._create_producer') def test_call_create_producer(self, mocked_exchange, mocked_producer): self.publisher.start() assert self.publisher._create_producer.called def test_call_producer_publish(self): self.publisher.config = {'publish': {}} self.publisher._producer = mock.Mock() self.publisher.publish(None) assert self.publisher._producer.publish.called @mock.patch('kombu.Exchange') def test_create_exchange(self, mocked_exchange): self.publisher.config = {'exchange': {}} exchange = self.publisher._create_exchange() assert exchange is not None @mock.patch('kombu.Connection') def test_connect(self, mocked_connection): self.publisher.config = {'connection': {}} connection = self.publisher._connect() assert connection is not None
def setup_class(self, mock1, mock2): self.publisher = RabbitMQPublisher()
""" It is just a example using HTTP falcon library. You can create and expose a Publisher API using RPC or anything else. You can also create your own falcon Resource. You can run it using: gunicorn -b 0.0.0.0:8000 example.publisher:app If you want to start more publishers using different routing_keys, you can just create different routes like: app.add_route('/publish/routing_key1', PublishResource(backend=RabbitMQPublisher(config1))) app.add_route('/publish/routing_key2', PublishResource(backend=RabbitMQPublisher(config2))) """ # NOQA import falcon from qpaca.middleware import JSONTranslator, RequireJSON from qpaca.resource import PublishResource from qpaca.backend.rabbitmq import RabbitMQPublisher app = falcon.API(middleware=[ RequireJSON(), JSONTranslator(), ]) # Routes app.add_route('/publish/', PublishResource(publisher=RabbitMQPublisher()))
def test_call_connect(self, mocked_function): RabbitMQPublisher() assert mocked_function.called
def test_call_create_monitor(self, mocked_class, mocked_function): RabbitMQPublisher() assert mocked_class.called