This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch camel-3.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.x by this push: new ace7020a11d CAMEL-19664: fix multiple concurrency issues in camel-test-infra-artemis (#10854) (#10883) ace7020a11d is described below commit ace7020a11d9c7a0875a887d0ef4f54506d5ef9d Author: Otavio Rodolfo Piske <orpi...@users.noreply.github.com> AuthorDate: Fri Jul 28 13:15:43 2023 +0200 CAMEL-19664: fix multiple concurrency issues in camel-test-infra-artemis (#10854) (#10883) --- .../services/AbstractArtemisEmbeddedService.java | 39 ++++++++++++---------- .../infra/artemis/services/ArtemisAMQPService.java | 2 +- .../infra/artemis/services/ArtemisMQTTService.java | 2 +- .../services/ArtemisPersistentVMService.java | 3 +- .../services/ArtemisTCPAllProtocolsService.java | 5 +-- .../infra/artemis/services/ArtemisVMService.java | 10 ++++-- 6 files changed, 35 insertions(+), 26 deletions(-) diff --git a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/AbstractArtemisEmbeddedService.java b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/AbstractArtemisEmbeddedService.java index b5556dfef53..e1319b2e210 100644 --- a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/AbstractArtemisEmbeddedService.java +++ b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/AbstractArtemisEmbeddedService.java @@ -41,36 +41,36 @@ import static org.junit.jupiter.api.Assertions.fail; public abstract class AbstractArtemisEmbeddedService implements ArtemisService, ConnectionFactoryAware { protected static final Logger LOG = LoggerFactory.getLogger(AbstractArtemisEmbeddedService.class); - protected static final LongAdder BROKER_COUNT = new LongAdder(); + private static final LongAdder BROKER_COUNT = new LongAdder(); - protected int tcpPort = AvailablePortFinder.getNextAvailable(); - protected EmbeddedActiveMQ embeddedBrokerService; - private Configuration artemisConfiguration; + protected final EmbeddedActiveMQ embeddedBrokerService; + private final Configuration artemisConfiguration; public AbstractArtemisEmbeddedService() { - defaultConfigturation(); - - embeddedBrokerService.setConfiguration(getConfiguration(artemisConfiguration, AvailablePortFinder.getNextAvailable())); + this(AvailablePortFinder.getNextAvailable()); } - public AbstractArtemisEmbeddedService(int port) { - defaultConfigturation(); + protected AbstractArtemisEmbeddedService(int port) { + embeddedBrokerService = new EmbeddedActiveMQ(); + artemisConfiguration = new ConfigurationImpl(); - embeddedBrokerService.setConfiguration(getConfiguration(artemisConfiguration, port)); + embeddedBrokerService.setConfiguration(configure(port)); } - private void defaultConfigturation() { - embeddedBrokerService = new EmbeddedActiveMQ(); + private synchronized Configuration configure(int port) { + final int brokerId = BROKER_COUNT.intValue(); + BROKER_COUNT.increment(); // Base configuration - artemisConfiguration = new ConfigurationImpl(); artemisConfiguration.setSecurityEnabled(false); - BROKER_COUNT.increment(); - artemisConfiguration.setBrokerInstance(new File("target", "artemis-" + BROKER_COUNT.intValue())); + artemisConfiguration.setBrokerInstance(new File("target", "artemis-" + brokerId)); artemisConfiguration.setJMXManagementEnabled(false); + artemisConfiguration.setMaxDiskUsage(98); + + return configure(artemisConfiguration, port, brokerId); } - protected abstract Configuration getConfiguration(Configuration artemisConfiguration, int port); + protected abstract Configuration configure(Configuration artemisConfiguration, int port, int brokerId); public void customConfiguration(Consumer<Configuration> configuration) { configuration.accept(artemisConfiguration); @@ -102,8 +102,11 @@ public abstract class AbstractArtemisEmbeddedService implements ArtemisService, @Override public void initialize() { try { - embeddedBrokerService.start(); - embeddedBrokerService.getActiveMQServer().waitForActivation(20, TimeUnit.SECONDS); + if (embeddedBrokerService.getActiveMQServer() == null || !embeddedBrokerService.getActiveMQServer().isStarted()) { + embeddedBrokerService.start(); + + embeddedBrokerService.getActiveMQServer().waitForActivation(20, TimeUnit.SECONDS); + } } catch (Exception e) { LOG.warn("Unable to start embedded Artemis broker: {}", e.getMessage(), e); fail(e.getMessage()); diff --git a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPService.java b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPService.java index 71c8e0c937d..39c949aa107 100644 --- a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPService.java +++ b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisAMQPService.java @@ -32,7 +32,7 @@ public class ArtemisAMQPService extends AbstractArtemisEmbeddedService { } @Override - protected Configuration getConfiguration(Configuration artemisConfiguration, int port) { + protected Configuration configure(Configuration artemisConfiguration, int port, int brokerId) { amqpPort = port; brokerURL = "tcp://0.0.0.0:" + amqpPort + "?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=AMQP;useEpoll=true;amqpCredits=1000;amqpMinCredits=300"; diff --git a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTService.java b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTService.java index e0d38e3c268..b0989bde725 100644 --- a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTService.java +++ b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisMQTTService.java @@ -34,7 +34,7 @@ public class ArtemisMQTTService extends AbstractArtemisEmbeddedService { } @Override - protected Configuration getConfiguration(Configuration configuration, int port) { + protected Configuration configure(Configuration configuration, int port, int brokerId) { this.port = port; brokerURL = "tcp://0.0.0.0:" + port; diff --git a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMService.java b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMService.java index db0bbd36a2b..d900a35544d 100644 --- a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMService.java +++ b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisPersistentVMService.java @@ -28,8 +28,7 @@ public class ArtemisPersistentVMService extends AbstractArtemisEmbeddedService { private String brokerURL; @Override - protected Configuration getConfiguration(Configuration configuration, int port) { - final int brokerId = super.BROKER_COUNT.intValue(); + protected Configuration configure(Configuration configuration, int port, int brokerId) { brokerURL = "vm://" + brokerId; configuration.setPersistenceEnabled(true); diff --git a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisTCPAllProtocolsService.java b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisTCPAllProtocolsService.java index ac494d1a41c..7af6e5ba13b 100644 --- a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisTCPAllProtocolsService.java +++ b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisTCPAllProtocolsService.java @@ -31,8 +31,9 @@ public class ArtemisTCPAllProtocolsService extends AbstractArtemisEmbeddedServic private int port; @Override - protected Configuration getConfiguration(Configuration configuration, int port) { - final int brokerId = super.BROKER_COUNT.intValue(); + protected Configuration configure(Configuration configuration, int port, int brokerId) { + this.port = port; + port = AvailablePortFinder.getNextAvailable(); brokerURL = "tcp://0.0.0.0:" + port; diff --git a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisVMService.java b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisVMService.java index 34117a09ac0..507a1a17e9d 100644 --- a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisVMService.java +++ b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisVMService.java @@ -19,19 +19,25 @@ package org.apache.camel.test.infra.artemis.services; import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.core.config.Configuration; import org.apache.activemq.artemis.core.settings.impl.AddressSettings; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import static org.junit.jupiter.api.Assertions.fail; public class ArtemisVMService extends AbstractArtemisEmbeddedService { + private static final Logger LOG = LoggerFactory.getLogger(ArtemisVMService.class); private String brokerURL; @Override - protected Configuration getConfiguration(Configuration configuration, int port) { - final int brokerId = super.BROKER_COUNT.intValue(); + protected Configuration configure(Configuration configuration, int port, int brokerId) { brokerURL = "vm://" + brokerId; + LOG.info("Creating a new Artemis VM-based broker"); configuration.setPersistenceEnabled(false); + configuration.setJournalMinFiles(10); + configuration.setSecurityEnabled(false); + try { configuration.addAcceptorConfiguration("in-vm", "vm://" + brokerId); } catch (Exception e) {