From fe86d7b9da53347ef1b37d7f500e6ec9a9b60891 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Fri, 2 Sep 2016 16:45:03 -0400 Subject: [PATCH] AMQP-678: Move BrokerRunning @Rule to junit Jar JIRA: https://jira.spring.io/browse/AMQP-678 Clean Broker After Running Tests Remove redundant `foo` queue from `QueueParserIntegrationTests-context.xml` Convert `BrokerRunning` to use the amqp-client directly to avoid circular reference. Also `LongRunningIntegrationTest`. Polishing - PR Comments --- build.gradle | 20 +- settings.gradle | 1 + spring-rabbit-junit/README.adoc | 3 + .../amqp/rabbit/junit}/BrokerRunning.java | 240 ++++++++++++------ .../amqp/rabbit/junit}/BrokerTestUtils.java | 7 +- .../junit}/LongRunningIntegrationTest.java | 6 +- .../amqp/rabbit/junit/package-info.java | 4 + .../ExampleRabbitListenerCaptureTest.java | 1 + ...xampleRabbitListenerSpyAndCaptureTest.java | 1 + .../test/ExampleRabbitListenerSpyTest.java | 1 + .../amqp/rabbit/AsyncRabbitTemplateTests.java | 2 +- .../EnableRabbitCglibProxyTests.java | 2 +- .../EnableRabbitIdleContainerTests.java | 2 +- .../EnableRabbitIntegrationTests.java | 2 +- .../ExchangeParserIntegrationTests.java | 22 +- .../MismatchedQueueDeclarationTests.java | 2 +- .../config/QueueParserIntegrationTests.java | 6 +- .../connection/CachePropertiesTests.java | 2 +- ...hingConnectionFactoryIntegrationTests.java | 6 +- .../ConnectionFactoryLifecycleTests.java | 4 +- ...ueueConnectionFactoryIntegrationTests.java | 3 +- .../core/BatchingRabbitTemplateTests.java | 4 +- .../core/FixedReplyQueueDeadLetterTests.java | 2 +- .../core/RabbitAdminIntegrationTests.java | 4 +- .../amqp/rabbit/core/RabbitAdminTests.java | 2 +- .../core/RabbitBindingIntegrationTests.java | 15 +- .../core/RabbitManagementTemplateTests.java | 2 +- .../core/RabbitTemplateIntegrationTests.java | 4 +- ...itTemplatePerformanceIntegrationTests.java | 6 +- ...atePublisherCallbacksIntegrationTests.java | 4 +- ...tePublisherCallbacksIntegrationTests2.java | 4 +- ...BlockingQueueConsumerIntegrationTests.java | 6 +- .../ContainerInitializationTests.java | 2 +- .../JavaConfigFixedReplyQueueTests.java | 2 +- .../ListenFromAutoDeleteQueueTests.java | 2 +- ...ContainerErrorHandlerIntegrationTests.java | 6 +- ...nerContainerLifecycleIntegrationTests.java | 8 +- ...ontainerMultipleQueueIntegrationTests.java | 6 +- ...istenerContainerRetryIntegrationTests.java | 7 +- ...sageListenerManualAckIntegrationTests.java | 6 +- ...veryCachingConnectionIntegrationTests.java | 8 +- ...istenerRecoveryRepeatIntegrationTests.java | 6 +- ...MessageListenerTxSizeIntegrationTests.java | 6 +- ...ageListenerContainerIntegration2Tests.java | 8 +- ...sageListenerContainerIntegrationTests.java | 8 +- ...mpleMessageListenerContainerLongTests.java | 4 +- .../listener/StopStartIntegrationTests.java | 3 +- .../listener/UnackedRawIntegrationTests.java | 2 +- .../log4j/AmqpAppenderIntegrationTests.java | 2 +- .../rabbit/log4j2/test/AmqpAppenderTests.java | 2 +- .../logback/AmqpAppenderIntegrationTests.java | 2 +- .../amqp/rabbit/remoting/RemotingTests.java | 2 +- .../rabbit/retry/MissingIdRetryTests.java | 9 +- ...bitTransactionManagerIntegrationTests.java | 2 +- ...ExchangeParserIntegrationTests-context.xml | 4 +- .../QueueParserIntegrationTests-context.xml | 2 - src/reference/asciidoc/testing.adoc | 40 +++ src/reference/asciidoc/whats-new.adoc | 5 + 58 files changed, 357 insertions(+), 187 deletions(-) create mode 100644 spring-rabbit-junit/README.adoc rename {spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test => spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit}/BrokerRunning.java (51%) rename {spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test => spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit}/BrokerTestUtils.java (88%) rename {spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test => spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit}/LongRunningIntegrationTest.java (89%) create mode 100644 spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/package-info.java diff --git a/build.gradle b/build.gradle index e26d4fb8..9db508a8 100644 --- a/build.gradle +++ b/build.gradle @@ -104,7 +104,7 @@ subprojects { subproject -> springVersion = project.hasProperty('springVersion') ? project.springVersion : '4.3.4.RELEASE' - springRetryVersion = '1.2.0.RC1' + springRetryVersion = '1.2.0.BUILD-SNAPSHOT' } eclipse { @@ -241,6 +241,22 @@ project('spring-rabbit') { compile ("ch.qos.logback:logback-classic:$logbackVersion", optional) compile ("org.apache.logging.log4j:log4j-core:$log4j2Version", optional) + + testCompile project(":spring-rabbit-junit") + } + +} + +project('spring-rabbit-junit') { + description = 'Spring Rabbit JUnit Support' + + dependencies { + + compile "org.springframework:spring-core:$springVersion" + compile "junit:junit:$junitVersion" + compile "com.rabbitmq:amqp-client:$rabbitmqVersion" + compile "com.rabbitmq:http-client:$rabbitmqHttpClientVersion" + } } @@ -259,6 +275,7 @@ project('spring-rabbit-test') { exclude group: 'org.hamcrest', module: 'hamcrest-core' } testCompile project(":spring-rabbit").sourceSets.test.output + testCompile project(":spring-rabbit-junit") } @@ -455,4 +472,3 @@ task dist(dependsOn: assemble) { group = 'Distribution' description = 'Builds -dist, -docs and -schema distribution archives.' } - diff --git a/settings.gradle b/settings.gradle index 5a094dfd..a0f0f963 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,4 +2,5 @@ rootProject.name = 'spring-amqp-dist' include 'spring-amqp' include 'spring-rabbit' +include 'spring-rabbit-junit' include 'spring-rabbit-test' diff --git a/spring-rabbit-junit/README.adoc b/spring-rabbit-junit/README.adoc new file mode 100644 index 00000000..dfd6cedd --- /dev/null +++ b/spring-rabbit-junit/README.adoc @@ -0,0 +1,3 @@ += spring-rabbit-test + +This project provides testing support classes to help with testing `spring-rabbit` applications. diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerRunning.java b/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/BrokerRunning.java similarity index 51% rename from spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerRunning.java rename to spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/BrokerRunning.java index f8ed662b..d02c15cf 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerRunning.java +++ b/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/BrokerRunning.java @@ -14,13 +14,17 @@ * limitations under the License. */ -package org.springframework.amqp.rabbit.test; - -import static org.junit.Assert.fail; +package org.springframework.amqp.rabbit.junit; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.UUID; +import java.util.concurrent.TimeoutException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -30,12 +34,12 @@ import org.junit.rules.TestWatcher; import org.junit.runner.Description; import org.junit.runners.model.Statement; -import org.springframework.amqp.AmqpTimeoutException; -import org.springframework.amqp.core.Queue; -import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; -import org.springframework.amqp.rabbit.core.RabbitAdmin; +import org.springframework.util.Base64Utils; import org.springframework.util.StringUtils; +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.http.client.Client; /** @@ -65,9 +69,13 @@ import com.rabbitmq.http.client.Client; * @author Dave Syer * @author Gary Russell * + * @since 1.7 + * */ public final class BrokerRunning extends TestWatcher { + public static final String BROKER_REQUIRED = "RABBITMQ_SERVER_REQUIRED"; + private static final String DEFAULT_QUEUE_NAME = BrokerRunning.class.getName(); private static Log logger = LogFactory.getLog(BrokerRunning.class); @@ -84,36 +92,24 @@ public final class BrokerRunning extends TestWatcher { private final boolean management; - private final Queue[] queues; + private final String[] queues; - private final int DEFAULT_PORT = BrokerTestUtils.getPort(); + private final int defaultPort = BrokerTestUtils.getPort(); private int port; private String hostName = null; - private RabbitAdmin admin; + private ConnectionFactory connectionFactory; /** * Ensure the broker is running and has an empty queue with the specified name in the default exchange. * + * @param names the queues to declare for the test. * @return a new rule that assumes an existing running broker */ public static BrokerRunning isRunningWithEmptyQueues(String... names) { - Queue[] queues = new Queue[names.length]; - for (int i = 0; i < queues.length; i++) { - queues[i] = new Queue(names[i]); - } - return new BrokerRunning(true, true, queues); - } - - /** - * Ensure the broker is running and has an empty queue (which can be addressed via the default exchange). - * - * @return a new rule that assumes an existing running broker - */ - public static BrokerRunning isRunningWithEmptyQueues(Queue... queues) { - return new BrokerRunning(true, true, queues); + return new BrokerRunning(true, true, names); } /** @@ -132,34 +128,33 @@ public final class BrokerRunning extends TestWatcher { /** * @return a new rule that assumes an existing broker with the management plugin - * @since 1.5 */ public static BrokerRunning isBrokerAndManagementRunning() { return new BrokerRunning(true, false, true); } - private BrokerRunning(boolean assumeOnline, boolean purge, Queue... queues) { + private BrokerRunning(boolean assumeOnline, boolean purge, String... queues) { this(assumeOnline, purge, false, queues); } - private BrokerRunning(boolean assumeOnline, boolean purge, boolean management, Queue... queues) { + private BrokerRunning(boolean assumeOnline, boolean purge, boolean management, String... queues) { this.assumeOnline = assumeOnline; this.queues = queues; this.purge = purge; this.management = management; - setPort(DEFAULT_PORT); + setPort(this.defaultPort); } - private BrokerRunning(boolean assumeOnline, Queue... queues) { + private BrokerRunning(boolean assumeOnline, String... queues) { this(assumeOnline, false, queues); } private BrokerRunning(boolean assumeOnline) { - this(assumeOnline, new Queue(DEFAULT_QUEUE_NAME)); + this(assumeOnline, DEFAULT_QUEUE_NAME); } private BrokerRunning(boolean assumeOnline, boolean purge, boolean management) { - this(assumeOnline, purge, management, new Queue(DEFAULT_QUEUE_NAME)); + this(assumeOnline, purge, management, DEFAULT_QUEUE_NAME); } /** @@ -186,45 +181,42 @@ public final class BrokerRunning extends TestWatcher { public Statement apply(Statement base, Description description) { // Check at the beginning, so this can be used as a static field - if (assumeOnline) { - Assume.assumeTrue(brokerOnline.get(port)); + if (this.assumeOnline) { + Assume.assumeTrue(brokerOnline.get(this.port)); } else { - Assume.assumeTrue(brokerOffline.get(port)); + Assume.assumeTrue(brokerOffline.get(this.port)); } - CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); - connectionFactory.setHost("localhost"); + ConnectionFactory connectionFactory = getConnectionFactory(); + + Connection connection = null; + Channel channel = null; try { + connection = connectionFactory.newConnection(); + connection.setId(generateId()); + channel = connection.createChannel(); - connectionFactory.setPort(port); - if (StringUtils.hasText(hostName)) { - connectionFactory.setHost(hostName); - } - RabbitAdmin admin = new RabbitAdmin(connectionFactory); - this.admin = admin; + for (String queueName : this.queues) { - for (Queue queue : queues) { - String queueName = queue.getName(); - - if (purge) { + if (this.purge) { logger.debug("Deleting queue: " + queueName); // Delete completely - gets rid of consumers and bindings as well - admin.deleteQueue(queueName); + channel.queueDelete(queueName); } if (isDefaultQueue(queueName)) { // Just for test probe. - admin.deleteQueue(queueName); + channel.queueDelete(queueName); } else { - admin.declareQueue(queue); + channel.queueDeclare(queueName, true, false, false, null); } } - brokerOffline.put(port, false); - if (!assumeOnline) { - Assume.assumeTrue(brokerOffline.get(port)); + brokerOffline.put(this.port, false); + if (!this.assumeOnline) { + Assume.assumeTrue(brokerOffline.get(this.port)); } if (this.management) { @@ -235,45 +227,149 @@ public final class BrokerRunning extends TestWatcher { } } } - catch (AmqpTimeoutException e) { - fail("Timed out getting connection"); - } catch (Exception e) { logger.warn("Not executing tests because basic connectivity test failed", e); - brokerOnline.put(port, false); - if (assumeOnline) { + brokerOnline.put(this.port, false); + if (this.assumeOnline && !fatal()) { Assume.assumeNoException(e); } } finally { - connectionFactory.destroy(); + closeResources(connection, channel); } return super.apply(base, description); } + private boolean fatal() { + String serversRequired = System.getenv(BROKER_REQUIRED); + if (Boolean.parseBoolean(serversRequired)) { + logger.error("RABBITMQ IS REQUIRED BUT NOT AVAILABLE"); + return true; + } + else { + return false; + } + } + + public String generateId() { + UUID uuid = UUID.randomUUID(); + ByteBuffer bb = ByteBuffer.wrap(new byte[16]); + bb.putLong(uuid.getMostSignificantBits()) + .putLong(uuid.getLeastSignificantBits()); + return "SpringBrokerRunning." + Base64Utils.encodeToUrlSafeString(bb.array()).replaceAll("=", ""); + } + private boolean isDefaultQueue(String queue) { return DEFAULT_QUEUE_NAME.equals(queue); } - public RabbitAdmin getAdmin() { - return this.admin; - } - public void removeTestQueues(String... additionalQueues) { - logger.debug("deleting test queues: " + Arrays.toString(additionalQueues)); - CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); - connectionFactory.setHost("localhost"); - RabbitAdmin admin = new RabbitAdmin(connectionFactory); - for (Queue queue : this.queues) { - admin.deleteQueue(queue.getName()); - } + List queuesToRemove = Arrays.asList(this.queues); if (additionalQueues != null) { - for (String queueName : additionalQueues) { - admin.deleteQueue(queueName); + queuesToRemove = new ArrayList(queuesToRemove); + queuesToRemove.addAll(Arrays.asList(additionalQueues)); + } + logger.debug("deleting test queues: " + queuesToRemove); + ConnectionFactory connectionFactory = getConnectionFactory(); + Connection connection = null; + Channel channel = null; + + try { + connection = connectionFactory.newConnection(); + connection.setId(generateId() + ".queueDelete"); + channel = connection.createChannel(); + + for (String queue : queuesToRemove) { + channel.queueDelete(queue); + } + } + catch (Exception e) { + logger.warn("Failed to delete queues", e); + } + finally { + closeResources(connection, channel); + } + } + + public void deleteQueues(String... queues) { + ConnectionFactory connectionFactory = getConnectionFactory(); + Connection connection = null; + Channel channel = null; + + try { + connection = connectionFactory.newConnection(); + connection.setId(generateId() + ".queueDelete"); + channel = connection.createChannel(); + + for (String queue : queues) { + channel.queueDelete(queue); + } + } + catch (Exception e) { + logger.warn("Failed to delete queues", e); + } + finally { + closeResources(connection, channel); + } + } + + public void deleteExchanges(String... exchanges) { + ConnectionFactory connectionFactory = getConnectionFactory(); + Connection connection = null; + Channel channel = null; + + try { + connection = connectionFactory.newConnection(); + connection.setId(generateId() + ".exchangeDelete"); + channel = connection.createChannel(); + + for (String exchange : exchanges) { + channel.exchangeDelete(exchange); + } + } + catch (Exception e) { + logger.warn("Failed to delete queues", e); + } + finally { + closeResources(connection, channel); + } + } + + public ConnectionFactory getConnectionFactory() { + if (this.connectionFactory == null) { + this.connectionFactory = new ConnectionFactory(); + if (StringUtils.hasText(this.hostName)) { + this.connectionFactory.setHost(this.hostName); + } + else { + this.connectionFactory.setHost("localhost"); + } + this.connectionFactory.setPort(this.port); + } + return this.connectionFactory; + } + + private void closeResources(Connection connection, Channel channel) { + if (channel != null) { + try { + channel.close(); + } + catch (IOException e) { + // Ignore + } + catch (TimeoutException e) { + // Ignore + } + } + if (connection != null) { + try { + connection.close(); + } + catch (IOException e) { + // Ignore } } - connectionFactory.destroy(); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerTestUtils.java b/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/BrokerTestUtils.java similarity index 88% rename from spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerTestUtils.java rename to spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/BrokerTestUtils.java index a0fa4456..f0a7404d 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/BrokerTestUtils.java +++ b/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/BrokerTestUtils.java @@ -14,9 +14,7 @@ * limitations under the License. */ -package org.springframework.amqp.rabbit.test; - -import org.springframework.amqp.rabbit.connection.ConnectionFactory; +package org.springframework.amqp.rabbit.junit; /** * Global convenience class for all integration tests, carrying constants and other utilities for broker set up. @@ -34,7 +32,8 @@ public final class BrokerTestUtils { } /** - * The port that the broker is listening on (e.g. as input for a {@link ConnectionFactory}). + * The port that the broker is listening on (e.g. as input for a + * {@link com.rabbitmq.client.ConnectionFactory}). * * @return a port number */ diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/LongRunningIntegrationTest.java b/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/LongRunningIntegrationTest.java similarity index 89% rename from spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/LongRunningIntegrationTest.java rename to spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/LongRunningIntegrationTest.java index a3764296..152f7d44 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/test/LongRunningIntegrationTest.java +++ b/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/LongRunningIntegrationTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.amqp.rabbit.test; +package org.springframework.amqp.rabbit.junit; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -41,8 +41,8 @@ public class LongRunningIntegrationTest extends TestWatcher { private boolean shouldRun = false; public LongRunningIntegrationTest() { - for (String value: new String[]{System.getenv(RUN_LONG_PROP), System.getProperty(RUN_LONG_PROP)}) { - if ("true".equalsIgnoreCase(value)) { + for (String value: new String[] { System.getenv(RUN_LONG_PROP), System.getProperty(RUN_LONG_PROP) }) { + if (Boolean.parseBoolean(value)) { this.shouldRun = true; break; } diff --git a/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/package-info.java b/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/package-info.java new file mode 100644 index 00000000..108900af --- /dev/null +++ b/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/package-info.java @@ -0,0 +1,4 @@ +/** + * Provides support classes (Rules etc) for JUnit tests. + */ +package org.springframework.amqp.rabbit.junit; diff --git a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerCaptureTest.java b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerCaptureTest.java index a7f0affa..5e5d35ea 100644 --- a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerCaptureTest.java +++ b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerCaptureTest.java @@ -36,6 +36,7 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.test.RabbitListenerTestHarness.InvocationData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyAndCaptureTest.java b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyAndCaptureTest.java index 1336cd5f..86ddfd13 100644 --- a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyAndCaptureTest.java +++ b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyAndCaptureTest.java @@ -40,6 +40,7 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.test.RabbitListenerTestHarness.InvocationData; import org.springframework.amqp.rabbit.test.mockito.LatchCountDownAndCallRealMethodAnswer; import org.springframework.beans.factory.annotation.Autowired; diff --git a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyTest.java b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyTest.java index d9889b13..e793d753 100644 --- a/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyTest.java +++ b/spring-rabbit-test/src/test/java/org/springframework/amqp/rabbit/test/ExampleRabbitListenerSpyTest.java @@ -37,6 +37,7 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.test.mockito.LatchCountDownAndCallRealMethodAnswer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/AsyncRabbitTemplateTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/AsyncRabbitTemplateTests.java index 66fef45a..82def154 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/AsyncRabbitTemplateTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/AsyncRabbitTemplateTests.java @@ -49,9 +49,9 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; -import org.springframework.amqp.rabbit.test.BrokerRunning; import org.springframework.amqp.support.converter.SimpleMessageConverter; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.factory.annotation.Autowired; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitCglibProxyTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitCglibProxyTests.java index 88f5bcf8..b3aa4618 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitCglibProxyTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitCglibProxyTests.java @@ -30,7 +30,7 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.amqp.rabbit.test.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIdleContainerTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIdleContainerTests.java index 95af8787..b922b6bc 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIdleContainerTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIdleContainerTests.java @@ -36,10 +36,10 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.listener.ListenerContainerIdleEvent; import org.springframework.amqp.rabbit.listener.MessageListenerContainer; import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry; -import org.springframework.amqp.rabbit.test.BrokerRunning; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java index 267f5d77..8131f620 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java @@ -70,13 +70,13 @@ import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitManagementTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.listener.ConditionalRejectingErrorHandler; import org.springframework.amqp.rabbit.listener.MessageListenerContainer; import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar; import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException; -import org.springframework.amqp.rabbit.test.BrokerRunning; import org.springframework.amqp.rabbit.test.MessageTestUtils; import org.springframework.amqp.support.AmqpHeaders; import org.springframework.amqp.support.ConsumerTagStrategy; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ExchangeParserIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ExchangeParserIntegrationTests.java index 483f0a60..c9313c4d 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ExchangeParserIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/ExchangeParserIntegrationTests.java @@ -19,7 +19,9 @@ package org.springframework.amqp.rabbit.config; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; -import org.junit.Rule; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; @@ -27,12 +29,11 @@ import org.springframework.amqp.core.Exchange; import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.amqp.rabbit.test.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit4.SpringRunner; /** * @author Dave Syer @@ -40,13 +41,12 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * @author Gunnar Hillert * @author Artem Bilan */ -@ContextConfiguration -@RunWith(SpringJUnit4ClassRunner.class) +@RunWith(SpringRunner.class) @DirtiesContext public final class ExchangeParserIntegrationTests { - @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunning(); + @ClassRule + public static BrokerRunning brokerIsRunning = BrokerRunning.isRunning(); @Autowired private ConnectionFactory connectionFactory; @@ -69,6 +69,12 @@ public final class ExchangeParserIntegrationTests { @Qualifier("bucket.test") private Queue queue3; + @BeforeClass + @AfterClass + public static void clean() { + brokerIsRunning.deleteExchanges("fanoutTest", "directTest", "topicTest", "headersTest", "headersTestMulti"); + } + @Test public void testBindingsDeclared() throws Exception { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/MismatchedQueueDeclarationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/MismatchedQueueDeclarationTests.java index d0693ebd..2c300d0d 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/MismatchedQueueDeclarationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/MismatchedQueueDeclarationTests.java @@ -30,7 +30,7 @@ import org.junit.Test; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.SingleConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; -import org.springframework.amqp.rabbit.test.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.beans.factory.DisposableBean; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.env.StandardEnvironment; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserIntegrationTests.java index bda36872..9e9be445 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/config/QueueParserIntegrationTests.java @@ -27,8 +27,8 @@ import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; import org.springframework.core.io.ClassPathResource; @@ -74,7 +74,7 @@ public final class QueueParserIntegrationTests { assertEquals(null, result); connectionFactory.destroy(); - + brokerIsRunning.deleteQueues("arguments"); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachePropertiesTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachePropertiesTests.java index c6eed2bc..bb996cfd 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachePropertiesTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachePropertiesTests.java @@ -26,7 +26,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory.CacheMode; -import org.springframework.amqp.rabbit.test.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryIntegrationTests.java index fa8df18d..33a04e88 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactoryIntegrationTests.java @@ -61,8 +61,8 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory.Cache import org.springframework.amqp.rabbit.core.ChannelCallback; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.DirectFieldAccessor; @@ -106,7 +106,7 @@ public class CachingConnectionFactoryIntegrationTests { @After public void close() { if (!this.connectionFactory.getVirtualHost().equals("non-existent")) { - this.brokerIsRunning.getAdmin().deleteQueue(CF_INTEGRATION_TEST_QUEUE); + this.brokerIsRunning.removeTestQueues(); } assertEquals("bar", connectionFactory.getRabbitConnectionFactory().getClientProperties().get("foo")); connectionFactory.destroy(); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryLifecycleTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryLifecycleTests.java index 729f2628..ff7f4dd3 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryLifecycleTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/ConnectionFactoryLifecycleTests.java @@ -28,8 +28,8 @@ import org.junit.Test; import org.springframework.amqp.core.AnonymousQueue; import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.core.RabbitAdmin; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.context.SmartLifecycle; import org.springframework.context.annotation.AnnotationConfigApplicationContext; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/LocalizedQueueConnectionFactoryIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/LocalizedQueueConnectionFactoryIntegrationTests.java index ff92ae0e..6d8acff8 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/LocalizedQueueConnectionFactoryIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/connection/LocalizedQueueConnectionFactoryIntegrationTests.java @@ -27,7 +27,7 @@ import org.junit.Test; import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.amqp.rabbit.test.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerRunning; /** @@ -63,6 +63,7 @@ public class LocalizedQueueConnectionFactoryIntegrationTests { RabbitTemplate template = new RabbitTemplate(targetConnectionFactory); template.convertAndSend("", queue.getName(), "foo"); assertEquals("foo", template.receiveAndConvert(queue.getName())); + admin.deleteQueue(queue.getName()); } } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/BatchingRabbitTemplateTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/BatchingRabbitTemplateTests.java index 430deee5..380d9edd 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/BatchingRabbitTemplateTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/BatchingRabbitTemplateTests.java @@ -54,10 +54,10 @@ import org.springframework.amqp.core.MessageProperties; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.support.BatchingStrategy; import org.springframework.amqp.rabbit.core.support.SimpleBatchingStrategy; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.listener.ConditionalRejectingErrorHandler; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.support.postprocessor.AbstractCompressingPostProcessor; import org.springframework.amqp.support.postprocessor.DelegatingDecompressingPostProcessor; import org.springframework.amqp.support.postprocessor.GUnzipPostProcessor; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/FixedReplyQueueDeadLetterTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/FixedReplyQueueDeadLetterTests.java index 577e6021..93826b00 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/FixedReplyQueueDeadLetterTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/FixedReplyQueueDeadLetterTests.java @@ -34,9 +34,9 @@ import org.springframework.amqp.core.QueueBuilder; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.FixedReplyQueueDeadLetterTests.FixedReplyQueueDeadLetterConfig; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; -import org.springframework.amqp.rabbit.test.BrokerRunning; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminIntegrationTests.java index 92d8aec5..d4d3b23d 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminIntegrationTests.java @@ -49,8 +49,8 @@ import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.AutoRecoverConnectionNotCurrentlyOpenException; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.RabbitUtils; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.context.support.GenericApplicationContext; import com.rabbitmq.client.AMQP.Queue.DeclareOk; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminTests.java index 7c08b93a..6f56848d 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitAdminTests.java @@ -67,7 +67,7 @@ import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.connection.SingleConnectionFactory; -import org.springframework.amqp.rabbit.test.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.factory.config.ConfigurableBeanFactory; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitBindingIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitBindingIntegrationTests.java index 7903f18b..806994a3 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitBindingIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitBindingIntegrationTests.java @@ -32,11 +32,11 @@ import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.TopicExchange; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.RabbitAccessor; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.listener.ActiveObjectCounter; import org.springframework.amqp.rabbit.listener.BlockingQueueConsumer; import org.springframework.amqp.rabbit.support.DefaultMessagePropertiesConverter; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.support.converter.SimpleMessageConverter; import com.rabbitmq.client.Channel; @@ -55,7 +55,7 @@ public class RabbitBindingIntegrationTests { private RabbitTemplate template; @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue.getName()); @Before public void setup() { @@ -111,7 +111,7 @@ public class RabbitBindingIntegrationTests { } }); - + admin.deleteExchange("topic"); } @Test @@ -151,7 +151,7 @@ public class RabbitBindingIntegrationTests { } }); - + admin.deleteExchange("topic"); } @Test @@ -192,6 +192,7 @@ public class RabbitBindingIntegrationTests { assertEquals("message", result); consumer.stop(); + admin.deleteExchange("topic"); cachingConnectionFactory.destroy(); } @@ -249,7 +250,7 @@ public class RabbitBindingIntegrationTests { } }); - + admin.deleteExchange("topic"); } @Test @@ -283,7 +284,7 @@ public class RabbitBindingIntegrationTests { } }); - + admin.deleteExchange("fanout"); } private BlockingQueueConsumer createConsumer(RabbitAccessor accessor) { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitManagementTemplateTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitManagementTemplateTests.java index 909aa538..af806e04 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitManagementTemplateTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitManagementTemplateTests.java @@ -40,7 +40,7 @@ import org.springframework.amqp.core.Exchange; import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.QueueBuilder; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; -import org.springframework.amqp.rabbit.test.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import com.rabbitmq.client.Channel; import com.rabbitmq.client.DefaultConsumer; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateIntegrationTests.java index c150e747..3781ed2d 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplateIntegrationTests.java @@ -86,14 +86,14 @@ import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils; import org.springframework.amqp.rabbit.connection.RabbitResourceHolder; import org.springframework.amqp.rabbit.connection.SingleConnectionFactory; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; import org.springframework.amqp.rabbit.support.ConsumerCancelledException; import org.springframework.amqp.rabbit.support.DefaultMessagePropertiesConverter; import org.springframework.amqp.rabbit.support.MessagePropertiesConverter; import org.springframework.amqp.rabbit.support.PublisherCallbackChannelImpl; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.support.converter.SimpleMessageConverter; import org.springframework.amqp.support.postprocessor.GUnzipPostProcessor; import org.springframework.amqp.support.postprocessor.GZipPostProcessor; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePerformanceIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePerformanceIntegrationTests.java index edc95aa1..1f986b94 100755 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePerformanceIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePerformanceIntegrationTests.java @@ -25,10 +25,10 @@ import org.junit.Rule; import org.junit.Test; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; +import org.springframework.amqp.rabbit.junit.LongRunningIntegrationTest; import org.springframework.amqp.rabbit.test.Log4jLevelAdjuster; -import org.springframework.amqp.rabbit.test.LongRunningIntegrationTest; import org.springframework.amqp.rabbit.test.RepeatProcessor; import org.springframework.test.annotation.Repeat; import org.springframework.transaction.TransactionDefinition; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests.java index b9802788..d75c7fd6 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests.java @@ -66,14 +66,14 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ChannelProxy; import org.springframework.amqp.rabbit.core.RabbitTemplate.ConfirmCallback; import org.springframework.amqp.rabbit.core.RabbitTemplate.ReturnCallback; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; import org.springframework.amqp.rabbit.support.CorrelationData; import org.springframework.amqp.rabbit.support.PendingConfirm; import org.springframework.amqp.rabbit.support.PublisherCallbackChannel.Listener; import org.springframework.amqp.rabbit.support.PublisherCallbackChannelImpl; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.support.converter.SimpleMessageConverter; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.DirectFieldAccessor; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests2.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests2.java index b0fc097c..b5e73ae2 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests2.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/core/RabbitTemplatePublisherCallbacksIntegrationTests2.java @@ -29,8 +29,8 @@ import org.junit.Rule; import org.junit.Test; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import com.rabbitmq.client.AMQP.BasicProperties; import com.rabbitmq.client.Channel; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumerIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumerIntegrationTests.java index 76b19db0..66571abb 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumerIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/BlockingQueueConsumerIntegrationTests.java @@ -34,10 +34,10 @@ import org.springframework.amqp.core.AcknowledgeMode; import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.listener.exception.FatalListenerStartupException; import org.springframework.amqp.rabbit.support.DefaultMessagePropertiesConverter; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.rabbit.test.Log4jLevelAdjuster; import org.springframework.amqp.support.ConsumerTagStrategy; import org.springframework.amqp.utils.test.TestUtils; @@ -56,7 +56,7 @@ public class BlockingQueueConsumerIntegrationTests { private static Queue queue2 = new Queue("test.queue2"); @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue1, queue2); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue1.getName(), queue2.getName()); @Rule public Log4jLevelAdjuster logLevels = new Log4jLevelAdjuster(Level.INFO, RabbitTemplate.class, diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ContainerInitializationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ContainerInitializationTests.java index 0bbc0e32..6a559dfc 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ContainerInitializationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ContainerInitializationTests.java @@ -31,9 +31,9 @@ import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; import org.springframework.amqp.rabbit.listener.exception.FatalListenerStartupException; -import org.springframework.amqp.rabbit.test.BrokerRunning; import org.springframework.context.ApplicationContextException; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/JavaConfigFixedReplyQueueTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/JavaConfigFixedReplyQueueTests.java index 60cb7233..d9d8b305 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/JavaConfigFixedReplyQueueTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/JavaConfigFixedReplyQueueTests.java @@ -41,9 +41,9 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.listener.JavaConfigFixedReplyQueueTests.FixedReplyQueueConfig; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; -import org.springframework.amqp.rabbit.test.BrokerRunning; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ListenFromAutoDeleteQueueTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ListenFromAutoDeleteQueueTests.java index 51369453..21142960 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ListenFromAutoDeleteQueueTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/ListenFromAutoDeleteQueueTests.java @@ -41,7 +41,7 @@ import org.springframework.amqp.core.MessageListener; import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.amqp.rabbit.test.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.DirectFieldAccessor; import org.springframework.context.ConfigurableApplicationContext; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerErrorHandlerIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerErrorHandlerIntegrationTests.java index 9c478a94..ef5ccdf0 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerErrorHandlerIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerErrorHandlerIntegrationTests.java @@ -59,10 +59,10 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; import org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.support.converter.MessageConversionException; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.DirectFieldAccessor; @@ -90,7 +90,7 @@ public class MessageListenerContainerErrorHandlerIntegrationTests { private volatile CountDownLatch errorsHandled; @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue.getName()); @Before public void setUp() { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerLifecycleIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerLifecycleIntegrationTests.java index f3e45264..3b827c52 100755 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerLifecycleIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerLifecycleIntegrationTests.java @@ -50,12 +50,12 @@ import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; +import org.springframework.amqp.rabbit.junit.LongRunningIntegrationTest; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; import org.springframework.amqp.rabbit.listener.exception.FatalListenerStartupException; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.rabbit.test.Log4jLevelAdjuster; -import org.springframework.amqp.rabbit.test.LongRunningIntegrationTest; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.factory.DisposableBean; @@ -127,7 +127,7 @@ public class MessageListenerContainerLifecycleIntegrationTests { public LongRunningIntegrationTest longTests = new LongRunningIntegrationTest(); @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue.getName()); @Rule public Log4jLevelAdjuster logLevels = new Log4jLevelAdjuster(Level.INFO, RabbitTemplate.class, diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerMultipleQueueIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerMultipleQueueIntegrationTests.java index 0a8d495a..304a2bfb 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerMultipleQueueIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerMultipleQueueIntegrationTests.java @@ -36,9 +36,9 @@ import org.springframework.amqp.core.AcknowledgeMode; import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.rabbit.test.Log4jLevelAdjuster; import org.springframework.amqp.support.converter.SimpleMessageConverter; @@ -56,7 +56,7 @@ public class MessageListenerContainerMultipleQueueIntegrationTests { private static Queue queue2 = new Queue("test.queue.2"); @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue1, queue2); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue1.getName(), queue2.getName()); @Rule public Log4jLevelAdjuster logLevels = new Log4jLevelAdjuster(Level.INFO, RabbitTemplate.class, diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java index 05d47eb4..1962bf5e 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerContainerRetryIntegrationTests.java @@ -41,10 +41,10 @@ import org.springframework.amqp.rabbit.config.StatefulRetryOperationsInterceptor import org.springframework.amqp.rabbit.config.StatelessRetryOperationsInterceptorFactoryBean; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; import org.springframework.amqp.rabbit.retry.MessageRecoverer; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.rabbit.test.Log4jLevelAdjuster; import org.springframework.amqp.rabbit.test.RepeatProcessor; import org.springframework.amqp.support.converter.MessageConverter; @@ -71,7 +71,7 @@ public class MessageListenerContainerRetryIntegrationTests { private static Queue queue = new Queue("test.queue"); @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue.getName()); @Rule public Log4jLevelAdjuster logLevels = new Log4jLevelAdjuster(Level.ERROR, RabbitTemplate.class, @@ -293,6 +293,7 @@ public class MessageListenerContainerRetryIntegrationTests { this.failFrequency = failFrequency; } + @SuppressWarnings("unused") public void handleMessage(int value) throws Exception { logger.debug("Handling: [" + value + "], fails:" + count); if (value % failFrequency == 0) { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerManualAckIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerManualAckIntegrationTests.java index 1f89739c..9e5b960f 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerManualAckIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerManualAckIntegrationTests.java @@ -36,9 +36,9 @@ import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.rabbit.test.Log4jLevelAdjuster; import org.springframework.beans.factory.DisposableBean; @@ -75,7 +75,7 @@ public class MessageListenerManualAckIntegrationTests { SimpleMessageListenerContainer.class, BlockingQueueConsumer.class); @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue.getName()); @Before public void createConnectionFactory() { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryCachingConnectionIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryCachingConnectionIntegrationTests.java index 9af81a50..4bccfa95 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryCachingConnectionIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryCachingConnectionIntegrationTests.java @@ -49,11 +49,11 @@ import org.springframework.amqp.rabbit.connection.ConnectionProxy; import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; +import org.springframework.amqp.rabbit.junit.LongRunningIntegrationTest; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.rabbit.test.Log4jLevelAdjuster; -import org.springframework.amqp.rabbit.test.LongRunningIntegrationTest; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.factory.DisposableBean; import org.springframework.context.support.GenericApplicationContext; @@ -93,7 +93,7 @@ public class MessageListenerRecoveryCachingConnectionIntegrationTests { SimpleMessageListenerContainer.class, BlockingQueueConsumer.class, CachingConnectionFactory.class); @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue, sendQueue); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue.getName(), sendQueue.getName()); protected CachingConnectionFactory createConnectionFactory() { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryRepeatIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryRepeatIntegrationTests.java index 7632d92c..886b029e 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryRepeatIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerRecoveryRepeatIntegrationTests.java @@ -39,10 +39,10 @@ import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; import org.springframework.amqp.rabbit.listener.exception.FatalListenerExecutionException; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.rabbit.test.Log4jLevelAdjuster; import org.springframework.amqp.rabbit.test.RepeatProcessor; import org.springframework.beans.factory.DisposableBean; @@ -84,7 +84,7 @@ public class MessageListenerRecoveryRepeatIntegrationTests { SimpleMessageListenerContainer.class, BlockingQueueConsumer.class, MessageListenerRecoveryRepeatIntegrationTests.class); @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue, sendQueue); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue.getName(), sendQueue.getName()); @Rule public RepeatProcessor repeatProcessor = new RepeatProcessor(); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerTxSizeIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerTxSizeIntegrationTests.java index 3b622a64..18d8cebc 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerTxSizeIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/MessageListenerTxSizeIntegrationTests.java @@ -36,9 +36,9 @@ import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.rabbit.test.Log4jLevelAdjuster; import org.springframework.beans.factory.DisposableBean; @@ -75,7 +75,7 @@ public class MessageListenerTxSizeIntegrationTests { SimpleMessageListenerContainer.class, BlockingQueueConsumer.class); @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue.getName()); @Before public void createConnectionFactory() { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegration2Tests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegration2Tests.java index 70001a4e..5f5ee8c2 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegration2Tests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegration2Tests.java @@ -69,12 +69,12 @@ import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.connection.SingleConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; +import org.springframework.amqp.rabbit.junit.LongRunningIntegrationTest; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; import org.springframework.amqp.rabbit.support.ConsumerCancelledException; import org.springframework.amqp.rabbit.support.PublisherCallbackChannelImpl; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; -import org.springframework.amqp.rabbit.test.LongRunningIntegrationTest; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.factory.DisposableBean; @@ -106,7 +106,7 @@ public class SimpleMessageListenerContainerIntegration2Tests { private RabbitAdmin admin; @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue, queue1); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue.getName(), queue1.getName()); @Rule public LongRunningIntegrationTest longRunningIntegrationTest = new LongRunningIntegrationTest(); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegrationTests.java index 48e2d25a..db6961bb 100755 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerIntegrationTests.java @@ -45,11 +45,11 @@ import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; +import org.springframework.amqp.rabbit.junit.LongRunningIntegrationTest; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import org.springframework.amqp.rabbit.test.Log4jLevelAdjuster; -import org.springframework.amqp.rabbit.test.LongRunningIntegrationTest; import org.springframework.beans.factory.DisposableBean; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionException; @@ -91,7 +91,7 @@ public class SimpleMessageListenerContainerIntegrationTests { SimpleMessageListenerContainerIntegrationTests.class); @Rule - public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue); + public BrokerRunning brokerIsRunning = BrokerRunning.isRunningWithEmptyQueues(queue.getName()); @Rule public ExpectedException exception = ExpectedException.none(); diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerLongTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerLongTests.java index 45a7cd21..5261bded 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerLongTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/SimpleMessageListenerContainerLongTests.java @@ -33,9 +33,9 @@ import org.springframework.amqp.core.MessageListener; import org.springframework.amqp.rabbit.connection.SingleConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; +import org.springframework.amqp.rabbit.junit.LongRunningIntegrationTest; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; -import org.springframework.amqp.rabbit.test.BrokerRunning; -import org.springframework.amqp.rabbit.test.LongRunningIntegrationTest; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.test.util.ReflectionTestUtils; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/StopStartIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/StopStartIntegrationTests.java index c02c8ee3..bff62ef0 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/StopStartIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/StopStartIntegrationTests.java @@ -31,7 +31,7 @@ import org.springframework.amqp.core.MessageListener; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.amqp.rabbit.test.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; @@ -67,6 +67,7 @@ public class StopStartIntegrationTests { CachingConnectionFactory cf = new CachingConnectionFactory("localhost"); RabbitAdmin admin = new RabbitAdmin(cf); admin.deleteQueue("stop.start.queue"); + admin.deleteExchange("stop.start.exchange"); cf.destroy(); } diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/UnackedRawIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/UnackedRawIntegrationTests.java index cb159541..5c432c43 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/UnackedRawIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/UnackedRawIntegrationTests.java @@ -28,8 +28,8 @@ import org.junit.Before; import org.junit.Ignore; import org.junit.Test; +import org.springframework.amqp.rabbit.junit.BrokerTestUtils; import org.springframework.amqp.rabbit.support.Delivery; -import org.springframework.amqp.rabbit.test.BrokerTestUtils; import com.rabbitmq.client.AMQP.BasicProperties; import com.rabbitmq.client.Channel; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/log4j/AmqpAppenderIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/log4j/AmqpAppenderIntegrationTests.java index a6d182dd..73e5c53c 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/log4j/AmqpAppenderIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/log4j/AmqpAppenderIntegrationTests.java @@ -44,8 +44,8 @@ import org.junit.runner.RunWith; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageDeliveryMode; import org.springframework.amqp.core.MessageProperties; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; -import org.springframework.amqp.rabbit.test.BrokerRunning; import org.springframework.amqp.utils.test.TestUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/log4j2/test/AmqpAppenderTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/log4j2/test/AmqpAppenderTests.java index d04bd10b..deb6622b 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/log4j2/test/AmqpAppenderTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/log4j2/test/AmqpAppenderTests.java @@ -36,8 +36,8 @@ import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.log4j2.AmqpAppender; -import org.springframework.amqp.rabbit.test.BrokerRunning; import org.springframework.amqp.utils.test.TestUtils; /** diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/logback/AmqpAppenderIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/logback/AmqpAppenderIntegrationTests.java index d6480ec6..4391c884 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/logback/AmqpAppenderIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/logback/AmqpAppenderIntegrationTests.java @@ -36,10 +36,10 @@ import org.slf4j.MDC; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageProperties; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.rabbit.log4j.AmqpAppenderConfiguration; import org.springframework.amqp.rabbit.log4j.TestListener; -import org.springframework.amqp.rabbit.test.BrokerRunning; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.test.annotation.DirtiesContext; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/remoting/RemotingTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/remoting/RemotingTests.java index 8d6baf57..d38f9e87 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/remoting/RemotingTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/remoting/RemotingTests.java @@ -33,7 +33,7 @@ import org.junit.runner.RunWith; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; -import org.springframework.amqp.rabbit.test.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.remoting.RemoteProxyFailureException; import org.springframework.test.annotation.DirtiesContext; diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/retry/MissingIdRetryTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/retry/MissingIdRetryTests.java index 7763574e..3f553a09 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/retry/MissingIdRetryTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/retry/MissingIdRetryTests.java @@ -32,13 +32,11 @@ import org.junit.Test; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageProperties; import org.springframework.amqp.rabbit.config.StatefulRetryOperationsInterceptorFactoryBean; -import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; -import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; -import org.springframework.amqp.rabbit.test.BrokerRunning; import org.springframework.beans.DirectFieldAccessor; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; @@ -61,10 +59,7 @@ public class MissingIdRetryTests { @BeforeClass @AfterClass public static void setupAndCleanUp() { - CachingConnectionFactory cf = new CachingConnectionFactory("localhost"); - RabbitAdmin admin = new RabbitAdmin(cf); - admin.deleteQueue("retry.test.queue"); - cf.destroy(); + brokerIsRunning.deleteQueues("retry.test.queue", "retry.test.exchange"); } @SuppressWarnings("rawtypes") diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManagerIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManagerIntegrationTests.java index 7330db8f..9eaa77c8 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManagerIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/transaction/RabbitTransactionManagerIntegrationTests.java @@ -26,7 +26,7 @@ import org.junit.Test; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.amqp.rabbit.test.BrokerRunning; +import org.springframework.amqp.rabbit.junit.BrokerRunning; import org.springframework.beans.factory.DisposableBean; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallback; diff --git a/spring-rabbit/src/test/resources/org/springframework/amqp/rabbit/config/ExchangeParserIntegrationTests-context.xml b/spring-rabbit/src/test/resources/org/springframework/amqp/rabbit/config/ExchangeParserIntegrationTests-context.xml index c02862a5..b83ea0c0 100644 --- a/spring-rabbit/src/test/resources/org/springframework/amqp/rabbit/config/ExchangeParserIntegrationTests-context.xml +++ b/spring-rabbit/src/test/resources/org/springframework/amqp/rabbit/config/ExchangeParserIntegrationTests-context.xml @@ -5,7 +5,7 @@ xsi:schemaLocation="http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - + @@ -13,7 +13,7 @@ - + diff --git a/spring-rabbit/src/test/resources/org/springframework/amqp/rabbit/config/QueueParserIntegrationTests-context.xml b/spring-rabbit/src/test/resources/org/springframework/amqp/rabbit/config/QueueParserIntegrationTests-context.xml index 32fc2733..a50b813f 100644 --- a/spring-rabbit/src/test/resources/org/springframework/amqp/rabbit/config/QueueParserIntegrationTests-context.xml +++ b/spring-rabbit/src/test/resources/org/springframework/amqp/rabbit/config/QueueParserIntegrationTests-context.xml @@ -4,8 +4,6 @@ xsi:schemaLocation="http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - - diff --git a/src/reference/asciidoc/testing.adoc b/src/reference/asciidoc/testing.adoc index bca477b1..2ac96f4d 100644 --- a/src/reference/asciidoc/testing.adoc +++ b/src/reference/asciidoc/testing.adoc @@ -260,3 +260,43 @@ for the result. to suspend the test thread. <5> When the listener throws an exception, it is available in the `throwable` property of the invocation data. + +[[junit-rules]] +==== JUnit @Rules + +Spring AMQP _version 1.7_ provides an additional jar `spring-rabbit-junit`; this jar contains a couple of utility `@Rule` s for use when running JUnit tests. + +`BrokerRunning` provides a mechanism to allow tests to succeed when a broker is not running on `localhost`. + +It also has utility methods to delete queues and exchanges. + +Usage: + +[source, java] +---- + +@ClassRule +public static BrokerRunning brokerRunning = BrokerRunning.isRunningWithEmptyQueues("foo", "bar"); + +@AfterClass +public void tearDown() { + brokerRunning.removeTestQueues("some.other.queue.too") // removes foo, bar as well +} +---- + +Of course, there are times when you want tests to fail if there is no broker, such as a nightly CI build. +To disable the rule at runtime, set an environment variable `RABBITMQ_SERVER_REQUIRED` to `true`. + +There are several `isRunning...` static methods such as `isBrokerAndManagementRunning()` which verifies the broker has the management plugin enabled. + +`LongRunningIntegrationTest` is a rule that disables long running tests; you might want to use this on a developer system but ensure that the rule is disabled on, for example, nightly CI builds. + +Usage: + +[source, java] +---- +@Rule +public LongRunningIntegrationTest longTests = new LongRunningIntegrationTest(); +---- + +To disable the rule at runtime, set an environment variable `RUN_LONG_INTEGRATION_TESTS` to `true`. diff --git a/src/reference/asciidoc/whats-new.adoc b/src/reference/asciidoc/whats-new.adoc index 1174a2e7..b61f74cf 100644 --- a/src/reference/asciidoc/whats-new.adoc +++ b/src/reference/asciidoc/whats-new.adoc @@ -24,6 +24,11 @@ The framework is no longer compatible with previous versions. The minimum Jackson version is now `2.8`. The framework is no longer compatible with previous versions. +===== JUnit @Rules + +Rules that have up until now been used internally by the framework have now been made available in a separate jar `spring-rabbit-junit`. +See <> for more information. + ==== Earlier Releases See <> for changes in previous versions.