Ejemplo n.º 1
0
Archivo: base.py Proyecto: jortel/gofer
 def test_no_exchange(self):
     print('test builtin (direct) exchange')
     address = Address('test.10')
     queue = Queue(address.queue)
     queue.durable = False
     queue.declare(self.url)
     self.producer_reader(address)
Ejemplo n.º 2
0
 def test_no_exchange(self):
     print 'test builtin (direct) exchange'
     address = Address('test.10')
     queue = Queue(address.queue)
     queue.durable = False
     queue.declare(self.url)
     self.producer_reader(address)
Ejemplo n.º 3
0
 def __init__(self, url):
     """
     :param url: The broker URL.
     :type url: str
     """
     queue = Queue(ReplyHandler.REPLY_QUEUE)
     queue.durable = True
     queue.declare(url)
     self.consumer = ReplyConsumer(queue, url=url, authenticator=Authenticator())
Ejemplo n.º 4
0
    def __call__(self):
        """
        Trigger pulled.
        Execute the request.
        """
        if not self._pending:
            raise Exception('trigger already executed')
        self._pending = False

        # asynchronous
        if self._policy.reply:
            return self._send(reply=self._policy.reply)
        if self._policy.wait == Trigger.NOWAIT:
            return self._send()

        # synchronous
        queue = Queue()
        queue.durable = False
        queue.declare(self._policy.url)
        reply = queue.name

        if self._policy.exchange:
            exchange = Exchange(self._policy.exchange)
            exchange.bind(queue, self._policy.url)
            reply = '/'.join((self._policy.exchange, queue.name))

        try:
            return self._send(reply=reply, queue=queue)
        finally:
            queue.purge(self._policy.url)
            queue.delete(self._policy.url)
Ejemplo n.º 5
0
Archivo: base.py Proyecto: jortel/gofer
 def test_custom_direct_exchange(self):
     print('test custom (direct) exchange')
     address = Address('test_11.direct/test.11')
     exchange = Exchange(address.exchange, policy='direct')
     exchange.durable = False
     exchange.declare(self.url)
     queue = Queue(address.queue)
     queue.durable = False
     queue.declare(self.url)
     exchange.bind(queue, self.url)
     self.producer_reader(address)
Ejemplo n.º 6
0
 def test_custom_topic_exchange(self):
     print 'test custom (topic) exchange'
     address = Address('test_12.topic/test.12')
     exchange = Exchange(address.exchange, policy='topic')
     exchange.durable = False
     exchange.declare(self.url)
     queue = Queue(address.queue)
     queue.durable = False
     queue.declare(self.url)
     exchange.bind(queue, self.url)
     self.producer_reader(address)
Ejemplo n.º 7
0
 def test_custom_direct_exchange(self):
     print 'test custom (direct) exchange'
     address = Address('test_11.direct/test.11')
     exchange = Exchange(address.exchange, policy='direct')
     exchange.durable = False
     exchange.declare(self.url)
     queue = Queue(address.queue)
     queue.durable = False
     queue.declare(self.url)
     exchange.bind(queue, self.url)
     self.producer_reader(address)
Ejemplo n.º 8
0
Archivo: base.py Proyecto: jortel/gofer
 def test_custom_topic_exchange(self):
     print('test custom (topic) exchange')
     address = Address('test_12.topic/test.12')
     exchange = Exchange(address.exchange, policy='topic')
     exchange.durable = False
     exchange.declare(self.url)
     queue = Queue(address.queue)
     queue.durable = False
     queue.declare(self.url)
     exchange.bind(queue, self.url)
     self.producer_reader(address)
Ejemplo n.º 9
0
    def __enter__(self):
        """
        Enter the context.
          1. add the configured gofer connector.
          2. declare the agent queue.

        :return: self
        :rtype: Context
        """
        add_connector()
        queue = Queue(self.address, self.url)
        queue.declare()
        return self
Ejemplo n.º 10
0
 def teardown(self):
     """
     Teardown the broker model.
     """
     if self.managed < 2:
         return
     try:
         url = self.plugin.url
         queue = Queue(self.queue)
         queue.purge(url)
         queue.delete(url)
     except NotFound:
         pass
Ejemplo n.º 11
0
    def __enter__(self):
        """
        Enter the context.
          1. add the configured gofer connector.
          2. declare the agent queue.

        :return: self
        :rtype: Context
        """
        add_connector()
        queue = Queue(self.address, self.url)
        queue.declare()
        return self
Ejemplo n.º 12
0
    def __call__(self):
        """
        Trigger pulled.
        Execute the request.
        """
        if not self._pending:
            raise Exception('trigger already executed')
        self._pending = False

        # asynchronous
        if self._policy.reply:
            return self._send(reply=self._policy.reply)
        if self._policy.wait == Trigger.NOWAIT:
            return self._send()

        # synchronous
        queue = Queue()
        queue.durable = False
        queue.declare(self._policy.url)
        reply = queue.name

        if self._policy.exchange:
            exchange = Exchange(self._policy.exchange)
            exchange.bind(queue, self._policy.url)
            reply = '/'.join((self._policy.exchange, queue.name))

        try:
            return self._send(reply=reply, queue=queue)
        finally:
            queue.purge(self._policy.url)
            queue.delete(self._policy.url)
Ejemplo n.º 13
0
 def setup(self):
     """
     Setup the broker model.
     """
     if not self.managed:
         # not managed
         return
     url = self.plugin.url
     queue = Queue(self.queue)
     queue.auto_delete = self.expiration > 0
     queue.expiration = self.expiration
     queue.declare(url)
     if self.exchange:
         exchange = Exchange(self.exchange)
         exchange.bind(queue, url)
Ejemplo n.º 14
0
 def test_init(self):
     node = Queue()
     plugin = Mock(url='')
     consumer = RequestConsumer(node, plugin)
     self.assertEqual(node, consumer.node)
     self.assertEqual(plugin, consumer.plugin)
     self.assertEqual(consumer.scheduler, plugin.scheduler)
Ejemplo n.º 15
0
Archivo: context.py Proyecto: beav/pulp
 def __init__(self, consumer, **details):
     """
     :param consumer: A consumer DB model object.
     :type consumer: dict
     :param details: A dictionary of information to be round-tripped.
         Primarily used to correlate asynchronous replies.
     :type details: dict
     """
     self.route = 'pulp.agent.%s' % consumer['id']
     self.secret = str(consumer['_id'])
     self.url = Services.get_url()
     self.details = details
     self.reply_queue = ReplyHandler.REPLY_QUEUE
     self.authenticator = Authenticator()
     self.authenticator.load()
     queue = Queue(self.route)
     queue.declare(self.url)
Ejemplo n.º 16
0
    def delete_queue(url, name):
        """
        Purge and delete the agent queue.
        :param url: The broker URL.
        :type url: str
        :param name: The queue name.
        :type name: str
        """
        add_connector()
        queue = Queue(name, url)

        try:
            queue.purge()
            queue.delete()
        except NotFound:
            # queue may not exist
            pass
Ejemplo n.º 17
0
 def test_crud(self):
     print 'test CRUD'
     queue = Queue('test.13')
     queue.durable = False
     queue.declare(self.url)
     exchange = Exchange('test_crud_13.direct')
     exchange.declare(self.url)
     exchange.bind(queue, self.url)
     queue.delete(self.url)
     exchange.delete(self.url)
Ejemplo n.º 18
0
 def __init__(self, url, transport):
     """
     :param url: The broker URL.
     :type url: str
     :param transport: The gofer transport.
     :type transport: str
     """
     queue = Queue(Services.REPLY_QUEUE, transport=transport)
     self.consumer = ReplyConsumer(queue,
                                   url=url,
                                   transport=transport,
                                   authenticator=Authenticator())
Ejemplo n.º 19
0
    def test_send_not_addressed(self, send):
        node = Queue()
        plugin = Mock(url='')
        request = Document(replyto=None)
        status = 'rejected'
        consumer = RequestConsumer(node, plugin)

        # Test
        consumer.send(request, status)

        # Validation
        self.assertFalse(send.called)
Ejemplo n.º 20
0
    def test_no_route(self):
        node = Queue()
        plugin = Mock(url='')
        consumer = RequestConsumer(node, plugin)
        consumer.abort = Mock()

        # Test
        thread = consumer.no_route()
        thread.join()

        # Validation
        consumer.abort.assert_called_once_with()
        plugin.reload.assert_called_once_with()
Ejemplo n.º 21
0
    def test_dispatch(self):
        node = Queue()
        plugin = Mock(url='')
        request = Document()
        consumer = RequestConsumer(node, plugin)
        consumer.send = Mock()

        # Test
        consumer.dispatch(request)

        # Validation
        consumer.send.assert_called_once_with(request, 'accepted')
        plugin.scheduler.add.assert_called_once_with(request)
Ejemplo n.º 22
0
    def test_send(self, ts, _open, _close, send):
        send.side_effect = ValueError
        node = Queue()
        plugin = Mock(url='')
        request = Document(sn=1, replyto='elmer', data=123)
        status = 'rejected'
        details = dict(a=1)
        consumer = RequestConsumer(node, plugin)

        # Test
        consumer.send(request, status, **details)

        # Validation
        _open.assert_called_once_with()
        _close.assert_called_once_with()
Ejemplo n.º 23
0
 def test_crud(self):
     print "test CRUD"
     queue = Queue("test.13")
     queue.durable = False
     queue.declare(self.url)
     exchange = Exchange("test_crud_13.direct")
     exchange.declare(self.url)
     exchange.bind(queue, self.url)
     queue.delete(self.url)
     exchange.delete(self.url)
Ejemplo n.º 24
0
Archivo: base.py Proyecto: jortel/gofer
 def test_crud(self):
     print('test CRUD')
     queue = Queue('test.13')
     queue.durable = False
     queue.declare(self.url)
     exchange = Exchange('test_crud_13.direct')
     exchange.declare(self.url)
     exchange.bind(queue, self.url)
     queue.delete(self.url)
     exchange.delete(self.url)
Ejemplo n.º 25
0
 def producer_reader(self, address):
     print('using producer/reader')
     with Producer(url=self.url) as p:
         for x in range(0, N):
             print('#{} - sent: {}'.format(x, address))
             p.send(str(address))
     received = 0
     queue = Queue(address.queue)
     with Reader(queue, url=self.url) as r:
         while received < N:
             m, d = r.next()
             if m is None:
                 break
             m.ack()
             print('#{} - received: {}'.format(received, d))
             received += 1
     print('end')
Ejemplo n.º 26
0
 def producer_reader(self, address):
     print 'using producer/reader'
     with Producer(url=self.url) as p:
         for x in range(0, N):
             print '#%d - sent: %s' % (x, address)
             p.send(str(address))
     received = 0
     queue = Queue(address.queue)
     with Reader(queue, url=self.url) as r:
         while received < N:
             m, d = r.next()
             if m is None:
                 break
             m.ack()
             print '#%d - received: %s' % (received, d)
             received += 1
     print 'end'
Ejemplo n.º 27
0
 def producer_reader(self, address):
     print 'using producer/reader'
     with self.adapter.Sender(url=self.url) as p:
         for x in range(0, N):
             print '#%d - sent: %s' % (x, address)
             p.send(str(address), 'hello')
     received = 0
     queue = Queue(address.queue)
     with self.adapter.Reader(queue, url=self.url) as r:
         while received < N:
             m = r.get(1)
             if m is None:
                 break
             m.ack()
             print '#%d - received: %s' % (received, m)
             received += 1
     assert received == N
     print 'end'
Ejemplo n.º 28
0
 def teardown(self):
     """
     Teardown the broker model.
     """
     if self.managed < 2:
         return
     try:
         url = self.plugin.url
         queue = Queue(self.queue)
         queue.purge(url)
         queue.delete(url)
     except NotFound:
         pass
Ejemplo n.º 29
0
    def test_rejected(self):
        node = Queue()
        plugin = Mock(url='')
        code = '401'
        description = 'failed'
        details = dict(msg='failed')
        document = Document(field='value')
        consumer = RequestConsumer(node, plugin)
        consumer.send = Mock()

        # Test
        consumer.rejected(code, description, document, details)

        # Validation
        consumer.send.assert_called_once_with(
            document, 'rejected', **{
                'code': code,
                'description': description,
                'details': details,
            })
Ejemplo n.º 30
0
    def test_send(self, ts, _open, _close, send):
        node = Queue()
        plugin = Mock(url='')
        request = Document(sn=1, replyto='elmer', data=123)
        status = 'rejected'
        details = dict(a=1)
        consumer = RequestConsumer(node, plugin)

        # Test
        consumer.send(request, status, **details)

        # Validation
        _open.assert_called_once_with()
        send.assert_called_once_with(request.replyto,
                                     sn=request.sn,
                                     data=request.data,
                                     status=status,
                                     timestamp=ts.return_value,
                                     **details)
        _close.assert_called_once_with()
Ejemplo n.º 31
0
 def setup(self):
     """
     Setup the broker model.
     """
     if not self.managed:
         # not managed
         return
     url = self.plugin.url
     queue = Queue(self.queue)
     queue.auto_delete = self.expiration > 0
     queue.expiration = self.expiration
     queue.declare(url)
     if self.exchange:
         exchange = Exchange(self.exchange)
         exchange.bind(queue, url)
Ejemplo n.º 32
0
    def delete_queue(url, name):
        """
        Purge and delete the agent queue.
        :param url: The broker URL.
        :type url: str
        :param name: The queue name.
        :type name: str
        """
        add_connector()
        queue = Queue(name, url)

        try:
            queue.purge()
            queue.delete()
        except NotFound:
            # queue may not exist
            pass
Ejemplo n.º 33
0
 def __init__(self, url):
     queue = Queue(address.queue)
     Consumer.__init__(self, queue, url=url)
     self.received = 0
Ejemplo n.º 34
0

class Listener:
    def succeeded(self, reply):
        print reply

    def failed(self, reply):
        print reply

    def accepted(self, reply):
        print reply

    def started(self, reply):
        print reply

    def progress(self, reply):
        print reply


if __name__ == '__main__':
    tag = 'XYZ'
    print 'starting, uuid=%s' % tag
    queue = Queue(tag, url='tcp://localhost:5672')
    c = ReplyConsumer(queue)
    #c.start(Listener())
    c.start(onReply)
    while True:
        #print 'ReplyListener: sleeping...'
        sleep(10)
    c.stop()
Ejemplo n.º 35
0
    if options.auth:
        authenticator = TestAuthenticator()
    else:
        authenticator = None

    Agent.url = url
    Agent.address = address
    Agent.base_options['authenticator'] = authenticator

    # test_plugin_shutdown(1)
    # test_zombie()
    # test_memory()
    test_forked()

    queue = Queue(address.split('/')[-1].upper())
    queue.durable = False
    queue.declare(url)
    reply_consumer = ReplyConsumer(queue, url=url, authenticator=authenticator)
    reply_consumer.start(on_reply)

    test_cancel()
    demo_progress()

    # demo_authentication(yp)
    smoke_test()
    demo_constructors()
    test_triggers()
    demo_getitem()
    demo(Agent())
Ejemplo n.º 36
0
    for user in options.user:
        u, p = user.split(':')
        yp[u] = p

    if options.auth:
        authenticator = TestAuthenticator()
    else:
        authenticator = None

    Agent.url = url
    Agent.address = address
    Agent.base_options['authenticator'] = authenticator

    # test_memory()

    queue = Queue(address.split('/')[-1].upper())
    queue.durable = False
    queue.declare(url)
    reply_consumer = ReplyConsumer(queue, url=url, authenticator=authenticator)
    reply_consumer.start(on_reply)

    # demo_progress(1)
    # test_performance()

    demo_authentication(yp)
    smoke_test()
    demo_constructors()
    test_triggers()
    demo_getitem()

    n_threads = int(options.threads)
Ejemplo n.º 37
0
 def __init__(self, url):
     queue = Queue(self.CTAG)
     self.consumer = ReplyConsumer(queue, url=url)