예제 #1
0
    def test_cast_interface_uses_default_options(self):
        """Test kombu rpc.cast"""

        ctxt = context.RequestContext('fake_user', 'fake_project')

        class MyConnection(impl_kombu.Connection):
            def __init__(myself, *args, **kwargs):
                super(MyConnection, myself).__init__(*args, **kwargs)
                self.assertEqual(
                    myself.params, {
                        'hostname': FLAGS.rabbit_host,
                        'userid': FLAGS.rabbit_userid,
                        'password': FLAGS.rabbit_password,
                        'port': FLAGS.rabbit_port,
                        'virtual_host': FLAGS.rabbit_virtual_host,
                        'transport': 'memory'
                    })

            def topic_send(_context, topic, msg):
                pass

        MyConnection.pool = rpc_amqp.Pool(FLAGS, MyConnection)
        self.stubs.Set(impl_kombu, 'Connection', MyConnection)

        impl_kombu.cast(FLAGS, ctxt, 'fake_topic', {'msg': 'fake'})
예제 #2
0
    def test_cast_to_server_uses_server_params(self):
        """Test kombu rpc.cast"""

        ctxt = context.RequestContext('fake_user', 'fake_project')

        server_params = {
            'username': '******',
            'password': '******',
            'hostname': 'fake_hostname',
            'port': 31337,
            'virtual_host': 'fake_virtual_host'
        }

        class MyConnection(impl_kombu.Connection):
            def __init__(myself, *args, **kwargs):
                super(MyConnection, myself).__init__(*args, **kwargs)
                self.assertEqual(
                    myself.params, {
                        'hostname': server_params['hostname'],
                        'userid': server_params['username'],
                        'password': server_params['password'],
                        'port': server_params['port'],
                        'virtual_host': server_params['virtual_host'],
                        'transport': 'memory'
                    })

            def topic_send(_context, topic, msg):
                pass

        MyConnection.pool = rpc_amqp.Pool(FLAGS, MyConnection)
        self.stubs.Set(impl_kombu, 'Connection', MyConnection)

        impl_kombu.cast_to_server(FLAGS, ctxt, server_params, 'fake_topic',
                                  {'msg': 'fake'})
예제 #3
0
    def _setup_to_server_tests(self, server_params):
        class MyConnection(impl_qpid.Connection):
            def __init__(myself, *args, **kwargs):
                super(MyConnection, myself).__init__(*args, **kwargs)
                self.assertEqual(myself.connection.username,
                                 server_params['username'])
                self.assertEqual(myself.connection.password,
                                 server_params['password'])
                self.assertEqual(
                    myself.broker, server_params['hostname'] + ':' +
                    str(server_params['port']))

        MyConnection.pool = rpc_amqp.Pool(FLAGS, MyConnection)
        self.stubs.Set(impl_qpid, 'Connection', MyConnection)
예제 #4
0
        if self.consumer_thread is None:
            self.consumer_thread = eventlet.spawn(_consumer_thread)
        return self.consumer_thread

    def create_consumer(self, topic, proxy, fanout=False):
        """Create a consumer that calls a method in a proxy object"""
        if fanout:
            self.declare_fanout_consumer(
                topic, rpc_amqp.ProxyCallback(proxy, Connection.pool))
        else:
            self.declare_topic_consumer(
                topic, rpc_amqp.ProxyCallback(proxy, Connection.pool))


Connection.pool = rpc_amqp.Pool(connection_cls=Connection)


def create_connection(new=True):
    """Create a connection"""
    return rpc_amqp.create_connection(new, Connection.pool)


def multicall(context, topic, msg, timeout=None):
    """Make a call that returns multiple times."""
    return rpc_amqp.multicall(context, topic, msg, timeout, Connection.pool)


def call(context, topic, msg, timeout=None):
    """Sends a message on a topic and wait for a response."""
    return rpc_amqp.call(context, topic, msg, timeout, Connection.pool)