Class BrokerRunning

  • All Implemented Interfaces:
    org.junit.rules.TestRule

    public final class BrokerRunning
    extends org.junit.rules.TestWatcher
    A rule that prevents integration tests from failing if the Rabbit broker application is not running or not accessible. If the Rabbit broker is not running in the background all the tests here will simply be skipped (by default) because of a violated assumption (showing as successful). Usage:
     @Rule
     public static BrokerRunning brokerIsRunning = BrokerRunning.isRunning();
    
     @Test
     public void testSendAndReceive() throws Exception {
            // ... test using RabbitTemplate etc.
     }
     
    The rule can be declared as static so that it only has to check once for all tests in the enclosing test case, but there isn't a lot of overhead in making it non-static.

    Use isRunningWithEmptyQueues(String...) to declare and/or purge test queue(s) when the rule is run.

    Call removeTestQueues(String...) from an @After method to remove those queues (and optionally others).

    If you wish to enforce the broker being available, for example, on a CI server, set the environment variable "RABBITMQ_SERVER_REQUIRED" to true and the tests will fail fast.

    Since:
    1.7
    Author:
    Dave Syer, Gary Russell, Artem Bilan
    • Method Detail

      • setEnvironmentVariableOverrides

        public static void setEnvironmentVariableOverrides​(Map<String,​String> environmentVariables)
        Set environment variable overrides for host, port etc. Will override any real environment variables, if present.

        The variables will only apply to rule instances that are created after this method is called. The overrides will remain until clearEnvironmentVariableOverrides() is called.

        Parameters:
        environmentVariables - the variables.
      • isRunningWithEmptyQueues

        public static BrokerRunning isRunningWithEmptyQueues​(String... names)
        Ensure the broker is running and has a empty queue(s) with the specified name(s) in the default exchange.
        Parameters:
        names - the queues to declare for the test.
        Returns:
        a new rule that assumes an existing running broker
      • isRunning

        public static BrokerRunning isRunning()
        Returns:
        a new rule that assumes an existing running broker
      • isNotRunning

        public static BrokerRunning isNotRunning()
        Returns:
        a new rule that assumes there is no existing broker
      • isBrokerAndManagementRunning

        public static BrokerRunning isBrokerAndManagementRunning()
        Returns:
        a new rule that assumes an existing broker with the management plugin
      • isBrokerAndManagementRunningWithEmptyQueues

        public static BrokerRunning isBrokerAndManagementRunningWithEmptyQueues​(String... queues)
        Parameters:
        queues - the queues.
        Returns:
        a new rule that assumes an existing broker with the management plugin with the provided queues declared (and emptied if needed)..
      • setPort

        public void setPort​(int port)
        Parameters:
        port - the port to set
      • setHostName

        public void setHostName​(String hostName)
        Parameters:
        hostName - the hostName to set
      • setUser

        public void setUser​(String user)
        Set the user for the amqp connection default "guest".
        Parameters:
        user - the user.
        Since:
        1.7.2
      • setPassword

        public void setPassword​(String password)
        Set the password for the amqp connection default "guest".
        Parameters:
        password - the password.
        Since:
        1.7.2
      • setAdminUri

        public void setAdminUri​(String adminUri)
        Set the uri for the REST API.
        Parameters:
        adminUri - the uri.
        Since:
        1.7.2
      • setAdminUser

        public void setAdminUser​(String user)
        Set the user for the management REST API connection default "guest".
        Parameters:
        user - the user.
        Since:
        1.7.2
      • setAdminPassword

        public void setAdminPassword​(String password)
        Set the password for the management REST API connection default "guest".
        Parameters:
        password - the password.
        Since:
        1.7.2
      • getPort

        public int getPort()
        Return the port.
        Returns:
        the port.
        Since:
        1.7.2
      • getHostName

        public String getHostName()
        Return the port.
        Returns:
        the port.
        Since:
        1.7.2
      • getUser

        public String getUser()
        Return the user.
        Returns:
        the user.
        Since:
        1.7.2
      • getPassword

        public String getPassword()
        Return the password.
        Returns:
        the password.
        Since:
        1.7.2
      • getAdminUser

        public String getAdminUser()
        Return the admin user.
        Returns:
        the user.
        Since:
        1.7.2
      • getAdminPassword

        public String getAdminPassword()
        Return the admin password.
        Returns:
        the password.
        Since:
        1.7.2
      • apply

        public org.junit.runners.model.Statement apply​(org.junit.runners.model.Statement base,
                                                       org.junit.runner.Description description)
        Specified by:
        apply in interface org.junit.rules.TestRule
        Overrides:
        apply in class org.junit.rules.TestWatcher
      • isUp

        public void isUp()
      • fatal

        public static boolean fatal()
      • generateId

        public String generateId()
        Generate the connection id for the connection used by the rule's connection factory.
        Returns:
        the id.
      • removeTestQueues

        public void removeTestQueues​(String... additionalQueues)
        Remove any test queues that were created by an isRunningWithEmptyQueues(String...) method.
        Parameters:
        additionalQueues - additional queues to remove that might have been created by tests.
      • purgeTestQueues

        public void purgeTestQueues()
        Delete and re-declare all the configured queues. Can be used between tests when a test might leave stale data and multiple tests use the same queue.
      • deleteQueues

        public void deleteQueues​(String... queuesToDelete)
        Delete arbitrary queues from the broker.
        Parameters:
        queuesToDelete - the queues to delete.
      • deleteExchanges

        public void deleteExchanges​(String... exchanges)
        Delete arbitrary exchanges from the broker.
        Parameters:
        exchanges - the exchanges to delete.
      • getConnectionFactory

        public com.rabbitmq.client.ConnectionFactory getConnectionFactory()
        Get the connection factory used by this rule.
        Returns:
        the connection factory.
      • getAdminUri

        public String getAdminUri()
        Return the admin uri.
        Returns:
        the uri.
        Since:
        1.7.2