Esempio n. 1
0
    def clear_queue(self, queue_name: str) -> None:
        """Remove all messages in a queue.

        Args:
            queue_name: The queue name
        """
        self.logger.info("Clearing Queue: %s", queue_name)

        queue_dictionary = self._client.get_queue(self._virtual_host,
                                                  queue_name)
        number_of_messages = queue_dictionary.get("messages_ready", 0)

        while number_of_messages > 0:
            self.logger.debug("Getting the Next Message")
            messages = self._client.get_messages(self._virtual_host,
                                                 queue_name,
                                                 count=1,
                                                 requeue=False)
            if messages and len(messages) > 0:
                message = messages[0]
                try:
                    request = SchemaParser.parse_request(message["payload"],
                                                         from_string=True)
                    beer_garden.requests.cancel_request(request.id)
                except Exception as ex:
                    self.logger.exception(f"Error canceling message: {ex}")
            else:
                self.logger.debug(
                    "Race condition: The while loop thought there were more messages "
                    "to ingest but no more messages could be received.")
                break

            number_of_messages -= 1
Esempio n. 2
0
    def test_success(self, plugin, request_args):
        # Need to reset the real parser
        plugin.parser = SchemaParser()

        assert_request_equal(
            plugin._pre_process(json.dumps(request_args)),
            SchemaParser.parse_request(request_args),
        )
Esempio n. 3
0
    def _parse(self, message):
        """Parse a message using the standard SchemaParser

        Args:
            message: The raw (json) message body

        Returns:
            A Request model

        Raises:
            DiscardMessageException: The request failed to parse correctly
        """
        try:
            return SchemaParser.parse_request(message, from_string=True)
        except Exception as ex:
            self.logger.exception(
                "Unable to parse message body: {0}. Exception: {1}".format(
                    message, ex))
            raise DiscardMessageException("Error parsing message body")