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()
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
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)
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()
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)
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)
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)
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)
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)
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)