Esempio n. 1
0
 def test_collect_replies_no_replies(self, itermessages):
     conn, channel, queue = Mock(), Mock(), Mock()
     itermessages.return_value = []
     it = collect_replies(conn, channel, queue)
     with pytest.raises(StopIteration):
         next(it)
     channel.after_reply_message_received.assert_not_called()
Esempio n. 2
0
 def test_collect_replies_no_replies(self, itermessages):
     conn, channel, queue = Mock(), Mock(), Mock()
     itermessages.return_value = []
     it = collect_replies(conn, channel, queue)
     with pytest.raises(StopIteration):
         next(it)
     channel.after_reply_message_received.assert_not_called()
Esempio n. 3
0
    def retrieve_messages(self):
        """Process the message queue and ack the one that matches the
        correlation_id sent to the server.

        :correlation_id: Expected correlation id (uuid).
        :queue: The queue to read.
        :returns: JSON object retrieved from the queue.

        """

        logger.debug("Client queue: {!r}".format(self._client_queue))
        client_queue = self._queue
        logger.debug("connection is {!r}"
                     "is connected: {!r}".format(self._conn,
                                                 self._conn.connected))
        for i in collect_replies(self._conn,
                                 self._conn.channel(),
                                 client_queue,
                                 timeout=1,
                                 limit=1,
                                 callbacks=[self.ack_message]):
            logger.debug("Received {!r}".format(i))
            if self.reply is not None:
                response = self.reply
                self.reply = None
                try:
                    client_queue.purge()
                    client_queue.delete()
                    self._conn.release()
                except Exception:
                    logger.warn("Unable to purge and delete queues",
                                exc_info=True)
                return response
Esempio n. 4
0
    def retrieve_messages(self):
        """Process the message queue and ack the one that matches the
        correlation_id sent to the server.

        :correlation_id: Expected correlation id (uuid).
        :queue: The queue to read.
        :returns: JSON object retrieved from the queue.

        """

        logger.debug("Client queue: {!r}".format(self._client_queue))
        client_queue = self._queue
        logger.debug("connection is {!r}"
                     "is connected: {!r}".format(self._conn,
                                                 self._conn.connected))
        for i in collect_replies(self._conn,
                                 self._conn.channel(),
                                 client_queue,
                                 timeout=1,
                                 limit=1,
                                 callbacks=[self.ack_message]):
            logger.debug("Received {!r}".format(i))
            if self.reply is not None:
                response = self.reply
                self.reply = None
                try:
                    client_queue.purge()
                    client_queue.delete()
                    self._conn.release()
                except Exception:
                    logger.warn("Unable to purge and delete queues",
                                exc_info=True)
                return response
Esempio n. 5
0
    def test_collect_replies_no_replies(self, itermessages):
        conn, channel, queue = Mock(), Mock(), Mock()
        itermessages.return_value = []
        it = collect_replies(conn, channel, queue)
        with self.assertRaises(StopIteration):
            it.next()

        self.assertFalse(channel.after_reply_message_received.called)
Esempio n. 6
0
    def test_collect_replies_no_replies(self, itermessages):
        conn, channel, queue = Mock(), Mock(), Mock()
        itermessages.return_value = []
        it = collect_replies(conn, channel, queue)
        with self.assertRaises(StopIteration):
            it.next()

        self.assertFalse(channel.after_reply_message_received.called)
Esempio n. 7
0
 def test_collect_replies_no_ack(self, itermessages):
     conn, channel, queue = Mock(), Mock(), Mock()
     body, message = Mock(), Mock()
     itermessages.return_value = [(body, message)]
     it = collect_replies(conn, channel, queue)
     m = next(it)
     assert m is body
     itermessages.assert_called_with(conn, channel, queue, no_ack=True)
     message.ack.assert_not_called()
Esempio n. 8
0
 def test_collect_replies_no_ack(self, itermessages):
     conn, channel, queue = Mock(), Mock(), Mock()
     body, message = Mock(), Mock()
     itermessages.return_value = [(body, message)]
     it = collect_replies(conn, channel, queue)
     m = next(it)
     self.assertIs(m, body)
     itermessages.assert_called_with(conn, channel, queue, no_ack=True)
     self.assertFalse(message.ack.called)
Esempio n. 9
0
 def test_collect_replies_no_ack(self, itermessages):
     conn, channel, queue = Mock(), Mock(), Mock()
     body, message = Mock(), Mock()
     itermessages.return_value = [(body, message)]
     it = collect_replies(conn, channel, queue)
     m = next(it)
     self.assertIs(m, body)
     itermessages.assert_called_with(conn, channel, queue, no_ack=True)
     self.assertFalse(message.ack.called)
Esempio n. 10
0
 def test_collect_replies_no_ack(self, itermessages):
     conn, channel, queue = Mock(), Mock(), Mock()
     body, message = Mock(), Mock()
     itermessages.return_value = [(body, message)]
     it = collect_replies(conn, channel, queue)
     m = next(it)
     assert m is body
     itermessages.assert_called_with(conn, channel, queue, no_ack=True)
     message.ack.assert_not_called()
Esempio n. 11
0
    def _collect_replies(self, conn, channel, ticket, *args, **kwargs):
        kwargs.setdefault('timeout', self.default_timeout)

        if 'limit' not in kwargs and self.agent:
            kwargs['limit'] = self.agent.get_default_scatter_limit()
        if 'ignore_timeout' not in kwargs and not kwargs.get('limit', None):
            kwargs.setdefault('ignore_timeout', False)

        return collect_replies(conn, channel, self.get_reply_queue(ticket),
                               *args, **kwargs)
Esempio n. 12
0
    def _collect_replies(self, conn, channel, ticket, *args, **kwargs):
        kwargs.setdefault('timeout', self.default_timeout)

        if 'limit' not in kwargs and self.agent:
            kwargs['limit'] = self.agent.get_default_scatter_limit()
        if 'ignore_timeout' not in kwargs and not kwargs.get('limit', None):
            kwargs.setdefault('ignore_timeout', False)

        return collect_replies(conn, channel, self.get_reply_queue(ticket),
                               *args, **kwargs)
Esempio n. 13
0
    def test_collect_replies_with_ack(self, itermessages):
        conn, channel, queue = Mock(), Mock(), Mock()
        body, message = Mock(), Mock()
        itermessages.return_value = [(body, message)]
        it = collect_replies(conn, channel, queue, no_ack=False)
        m = next(it)
        assert m is body
        itermessages.assert_called_with(conn, channel, queue, no_ack=False)
        message.ack.assert_called_with()

        with pytest.raises(StopIteration):
            next(it)

        channel.after_reply_message_received.assert_called_with(queue.name)
Esempio n. 14
0
    def test_collect_replies_with_ack(self, itermessages):
        conn, channel, queue = Mock(), Mock(), Mock()
        body, message = Mock(), Mock()
        itermessages.return_value = [(body, message)]
        it = collect_replies(conn, channel, queue, no_ack=False)
        m = next(it)
        self.assertIs(m, body)
        itermessages.assert_called_with(conn, channel, queue, no_ack=False)
        message.ack.assert_called_with()

        with self.assertRaises(StopIteration):
            next(it)

        channel.after_reply_message_received.assert_called_with(queue.name)
Esempio n. 15
0
    def test_collect_replies_with_ack(self, itermessages):
        conn, channel, queue = Mock(), Mock(), Mock()
        body, message = Mock(), Mock()
        itermessages.return_value = [(body, message)]
        it = collect_replies(conn, channel, queue, no_ack=False)
        m = it.next()
        self.assertIs(m, body)
        itermessages.assert_called_with(conn, channel, queue, no_ack=False)
        message.ack.assert_called_with()

        with self.assertRaises(StopIteration):
            it.next()

        channel.after_reply_message_received.assert_called_with(queue.name)
Esempio n. 16
0
 def _collect_replies(self, conn, channel, ticket, *args, **kwargs):
     kwargs.setdefault('timeout', self.default_timeout)
     if 'limit' not in kwargs:
         kwargs['limit'] = self.get_default_scatter_limit()
     return collect_replies(conn, channel, self.get_reply_queue(ticket),
                            *args, **kwargs)
Esempio n. 17
0
 def _collect_replies(self, conn, channel, ticket, *args, **kwargs):
     kwargs.setdefault('timeout', self.default_timeout)
     if 'limit' not in kwargs:
         kwargs['limit'] = self.get_default_scatter_limit()
     return collect_replies(conn, channel, self.get_reply_queue(ticket),
                            *args, **kwargs)