From 7367bd745741ce613d21d1c49509fca778936678 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Tue, 14 Jul 2020 13:35:05 -0400 Subject: [PATCH] Always Remove Test Exchanges in ERIT - in case of dross left behind by a failed test run --- .../rabbit/junit/BrokerRunningSupport.java | 27 +++++++++++++++++++ .../EnableRabbitIntegrationTests.java | 13 +++++++++ 2 files changed, 40 insertions(+) diff --git a/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/BrokerRunningSupport.java b/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/BrokerRunningSupport.java index a629cf83..2852ef28 100644 --- a/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/BrokerRunningSupport.java +++ b/spring-rabbit-junit/src/main/java/org/springframework/amqp/rabbit/junit/BrokerRunningSupport.java @@ -442,6 +442,33 @@ public final class BrokerRunningSupport { } } + /** + * Remove exchanges from the broker. + * @param exchanges the exchanges. + * @since 2.3 + */ + public void removeExchanges(String... exchanges) { + LOGGER.debug("deleting test exchanges: " + Arrays.toString(exchanges)); + Connection connection = null; // NOSONAR (closeResources()) + Channel channel = null; + + try { + connection = getConnection(getConnectionFactory()); + connection.setId(generateId() + ".exchangeDelete"); + channel = connection.createChannel(); + + for (String exchange : exchanges) { + channel.exchangeDelete(exchange); + } + } + catch (Exception e) { + LOGGER.warn("Failed to delete exchanges", e); + } + finally { + closeResources(connection, channel); + } + } + /** * 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. 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 c89bdd4f..72e6c35a 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 @@ -225,6 +225,19 @@ public class EnableRabbitIntegrationTests { public static void setUp() { System.setProperty(RabbitListenerAnnotationBeanPostProcessor.RABBIT_EMPTY_STRING_ARGUMENTS_PROPERTY, "test-empty"); + RabbitAvailableCondition.getBrokerRunning().removeExchanges("auto.exch.tx", + "auto.exch", + "auto.exch.fanout", + "auto.exch", + "auto.exch", + "auto.start", + "auto.headers", + "auto.headers", + "auto.internal", + "multi.exch", + "multi.json.exch", + "multi.exch.tx", + "test.metaFanout"); } @AfterAll