diff --git a/.github/project.yml b/.github/project.yml index 538d5d2a..5efdcdb8 100644 --- a/.github/project.yml +++ b/.github/project.yml @@ -1,3 +1,3 @@ release: - current-version: 2.0.3 + current-version: 3.0.0.Alpha4 next-version: 999-SNAPSHOT diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cc6588cf..c9b67ee9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,34 +23,114 @@ on: - '.all-contributorsrc' jobs: - build: - + populate-cache: runs-on: ubuntu-latest + outputs: + cache-hit: ${{ steps.populate.outputs.cache-hit }} + steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up JDK 11 - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: - distribution: temurin java-version: 11 + distribution: 'temurin' + cache: 'maven' + id: setup - - name: Get Date - id: get-date + - name: Populate Maven Cache and run verify + id: populate run: | - echo "::set-output name=date::$(/bin/date -u "+%Y-%m")" - shell: bash - - name: Cache Maven Repository - id: cache-maven - uses: actions/cache@v2 + if [[ ${{ steps.setup.outputs.cache-hit }} != 'true' ]] + then + mvn -B dependency:go-offline verify -Dno-verify + echo "cache-hit=false" >> $GITHUB_OUTPUT + else + echo "cache-hit=true" >> $GITHUB_OUTPUT + fi + + build: + needs: populate-cache + runs-on: ubuntu-latest + strategy: + matrix: + integration-test-module: + - integration-tests/core/empty-config, + - integration-tests/core/with-default, + - integration-tests/core/with-default-and-external, + - integration-tests/core/with-default-change-url, + - integration-tests/core/with-external, + - integration-tests/core/without-default, + - integration-tests/jms/empty-config, + - integration-tests/jms/with-default, + - integration-tests/jms/with-default-and-external, + - integration-tests/jms/with-default-change-url, + - integration-tests/jms/with-external, + - integration-tests/jms/without-default + + steps: + - if: ${{ needs.populate-cache.outputs.cache-hit == 'true' }} + uses: actions/checkout@v3 + + - if: ${{ needs.populate-cache.outputs.cache-hit == 'true' }} + name: Set up JDK 11 + uses: actions/setup-java@v3 with: - path: ~/.m2/repository - # refresh cache every month to avoid unlimited growth - key: maven-repo-${{ runner.os }}-${{ steps.get-date.outputs.date }} + java-version: 11 + distribution: 'temurin' + cache: 'maven' - - name: Build with Maven - run: mvn -B formatter:validate impsort:check verify --file pom.xml + - if: ${{ needs.populate-cache.outputs.cache-hit == 'true' }} + name: Build with Maven (${{ matrix.integration-test-module }}) + run: | + mvn -B clean verify \ + -pl core/deployment,jms/deployment,integration-tests/camel-jms/with-default \ + -am \ + -Dno-format - - name: Build with Native - run: mvn -B verify --file pom.xml -Dnative -Dquarkus.native.container-build=true -Dnative.surefire.skip=true \ No newline at end of file + test-native: + needs: build + runs-on: ubuntu-latest + strategy: + matrix: + integration-test-module: + - integration-tests/core/empty-config, + - integration-tests/core/with-default, + - integration-tests/core/with-default-and-external, + - integration-tests/core/with-default-change-url, + - integration-tests/core/with-external, + - integration-tests/core/without-default, + - integration-tests/jms/empty-config, + - integration-tests/jms/with-default, + - integration-tests/jms/with-default-and-external, + - integration-tests/jms/with-default-change-url, + - integration-tests/jms/with-external, + - integration-tests/jms/without-default + + steps: + - uses: actions/checkout@v3 + + - name: Get Maven Cache + uses: actions/setup-java@v3 + with: + java-version: 11 + distribution: 'temurin' + cache: 'maven' + + - name: Set up GraalVM 17 + uses: graalvm/setup-graalvm@v1 + with: + version: 'latest' + java-version: 17 + components: 'native-image' + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Build with Maven (Native, ${{matrix.integration-test-module}}) + run: | + mvn -B verify \ + -pl core/deployment,jms/deployment,${{ matrix.integration-test-module }} \ + -am \ + -Dnative \ + -Dnative.surefire.skip \ No newline at end of file diff --git a/bom/pom.xml b/bom/pom.xml index a349e159..5d684472 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -69,7 +69,7 @@ org.apache.activemq - artemis-jms-client + artemis-jakarta-client ${artemis.version} diff --git a/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ArtemisCoreProcessor.java b/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ArtemisCoreProcessor.java index 952ea68e..1e1cb2f1 100644 --- a/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ArtemisCoreProcessor.java +++ b/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ArtemisCoreProcessor.java @@ -3,8 +3,8 @@ import java.util.*; import java.util.function.Supplier; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Default; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Default; import org.apache.activemq.artemis.api.core.ActiveMQBuffers; import org.apache.activemq.artemis.api.core.client.ServerLocator; diff --git a/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ShadowRunTimeConfigs.java b/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ShadowRunTimeConfigs.java index b1e7f68e..3a8f252b 100644 --- a/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ShadowRunTimeConfigs.java +++ b/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ShadowRunTimeConfigs.java @@ -12,7 +12,7 @@ *

* We use this configuration to access the configuration structure, and to extract the names of configurations * present at build-time, so we can create the {@link org.apache.activemq.artemis.api.core.client.ServerLocator} / - * {@link javax.jms.ConnectionFactory} beans. Most importantly, we only query the presence of keys and/or values, we do + * {@link jakarta.jms.ConnectionFactory} beans. Most importantly, we only query the presence of keys and/or values, we do * * not access values, since they could change at runtime. */ @SuppressWarnings("OptionalUsedAsFieldOrParameterType") diff --git a/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ShadowRuntimeConfig.java b/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ShadowRuntimeConfig.java index d36960b1..351515db 100644 --- a/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ShadowRuntimeConfig.java +++ b/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/ShadowRuntimeConfig.java @@ -12,7 +12,7 @@ *

* We use this configuration to access the configuration structure, and to extract the names of configurations * present at build-time, so we can create the {@link org.apache.activemq.artemis.api.core.client.ServerLocator} / - * {@link javax.jms.ConnectionFactory} beans. Most importantly, we only query the presence of keys and/or values, we do + * {@link jakarta.jms.ConnectionFactory} beans. Most importantly, we only query the presence of keys and/or values, we do * not access values, since they could change at runtime. */ @SuppressWarnings("OptionalUsedAsFieldOrParameterType") diff --git a/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/health/ArtemisHealthProcessor.java b/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/health/ArtemisHealthProcessor.java index ce946fc7..a61ba3b2 100644 --- a/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/health/ArtemisHealthProcessor.java +++ b/core/deployment/src/main/java/io/quarkus/artemis/core/deployment/health/ArtemisHealthProcessor.java @@ -5,7 +5,7 @@ import java.util.Optional; import java.util.Set; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; import io.quarkus.arc.deployment.SyntheticBeanBuildItem; import io.quarkus.artemis.core.deployment.ArtemisBootstrappedBuildItem; diff --git a/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisBuildTimeConfig.java b/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisBuildTimeConfig.java index 6d5ba0ea..0253e571 100644 --- a/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisBuildTimeConfig.java +++ b/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisBuildTimeConfig.java @@ -32,7 +32,7 @@ public class ArtemisBuildTimeConfig { public Optional healthExclude = Optional.empty(); /** - * Support to expose {@link javax.jms.XAConnectionFactory}. Is not activated by default. + * Support to expose {@link jakarta.jms.XAConnectionFactory}. Is not activated by default. */ @ConfigItem public Optional xaEnabled = Optional.empty(); diff --git a/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisRuntimeConfigs.java b/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisRuntimeConfigs.java index 8aec87c5..5bc7582d 100644 --- a/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisRuntimeConfigs.java +++ b/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisRuntimeConfigs.java @@ -26,7 +26,7 @@ public class ArtemisRuntimeConfigs { /** * Whether configurations ({@link org.apache.activemq.artemis.api.core.client.ServerLocator}s in case of the - * {@code artemis-core} extension, {@link javax.jms.ConnectionFactory}s in case of the + * {@code artemis-core} extension, {@link jakarta.jms.ConnectionFactory}s in case of the * {@code artemis-jms} extension) should be included in the health check. Defaults to {@code true} if not set. */ @ConfigItem(name = "health.external.enabled") diff --git a/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisUtil.java b/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisUtil.java index 2142d6d8..17550134 100644 --- a/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisUtil.java +++ b/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/ArtemisUtil.java @@ -3,7 +3,7 @@ import java.lang.annotation.Annotation; import java.util.*; -import javax.enterprise.inject.Any; +import jakarta.enterprise.inject.Any; import io.quarkus.arc.Arc; import io.quarkus.arc.InstanceHandle; diff --git a/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/health/ServerLocatorHealthCheck.java b/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/health/ServerLocatorHealthCheck.java index e60f973d..8da37d8b 100644 --- a/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/health/ServerLocatorHealthCheck.java +++ b/core/runtime/src/main/java/io/quarkus/artemis/core/runtime/health/ServerLocatorHealthCheck.java @@ -3,8 +3,8 @@ import java.lang.annotation.Annotation; import java.util.*; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Default; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Default; import org.apache.activemq.artemis.api.core.client.ClientSessionFactory; import org.apache.activemq.artemis.api.core.client.ServerLocator; diff --git a/docs/modules/ROOT/pages/includes/attributes.adoc b/docs/modules/ROOT/pages/includes/attributes.adoc index 0e8194f7..e57c5190 100644 --- a/docs/modules/ROOT/pages/includes/attributes.adoc +++ b/docs/modules/ROOT/pages/includes/attributes.adoc @@ -1,5 +1,5 @@ -:quarkus-version: 2.14.1.Final -:quarkus-artemis-version: 2.0.3 +:quarkus-version: 3.0.0.Alpha2 +:quarkus-artemis-version: 3.0.0.Alpha4 :quarkus-org-url: https://github.com/quarkusio :quarkus-base-url: {quarkus-org-url}/quarkus diff --git a/docs/modules/ROOT/pages/includes/quarkus-artemis-core.adoc b/docs/modules/ROOT/pages/includes/quarkus-artemis-core.adoc index 4178658a..f540b82b 100644 --- a/docs/modules/ROOT/pages/includes/quarkus-artemis-core.adoc +++ b/docs/modules/ROOT/pages/includes/quarkus-artemis-core.adoc @@ -181,7 +181,7 @@ a|icon:lock[title=Fixed at build time] [[quarkus-artemis-core_quarkus.artemis.xa [.description] -- -Support to expose `javax.jms.XAConnectionFactory`. Is not activated by default. +Support to expose `jakarta.jms.XAConnectionFactory`. Is not activated by default. ifdef::add-copy-button-to-env-var[] Environment variable: env_var_with_copy_button:+++QUARKUS_ARTEMIS_XA_ENABLED+++[] @@ -262,7 +262,7 @@ a| [[quarkus-artemis-core_quarkus.artemis.health.external.enabled]]`link:#quarku [.description] -- -Whether configurations (`org.apache.activemq.artemis.api.core.client.ServerLocator`s in case of the `artemis-core` extension, `javax.jms.ConnectionFactory`s in case of the `artemis-jms` extension) should be included in the health check. Defaults to `true` if not set. +Whether configurations (`org.apache.activemq.artemis.api.core.client.ServerLocator`s in case of the `artemis-core` extension, `jakarta.jms.ConnectionFactory`s in case of the `artemis-jms` extension) should be included in the health check. Defaults to `true` if not set. ifdef::add-copy-button-to-env-var[] Environment variable: env_var_with_copy_button:+++QUARKUS_ARTEMIS_HEALTH_EXTERNAL_ENABLED+++[] @@ -450,7 +450,7 @@ a|icon:lock[title=Fixed at build time] [[quarkus-artemis-core_quarkus.artemis.-c [.description] -- -Support to expose `javax.jms.XAConnectionFactory`. Is not activated by default. +Support to expose `jakarta.jms.XAConnectionFactory`. Is not activated by default. ifdef::add-copy-button-to-env-var[] Environment variable: env_var_with_copy_button:+++QUARKUS_ARTEMIS__CONFIGURATION_NAME__XA_ENABLED+++[] diff --git a/integration-tests/common-parent/pom.xml b/integration-tests/common-parent/pom.xml new file mode 100644 index 00000000..d87b3811 --- /dev/null +++ b/integration-tests/common-parent/pom.xml @@ -0,0 +1,183 @@ + + + 4.0.0 + + io.quarkiverse.artemis + quarkus-artemis-build-parent + 999-SNAPSHOT + ../../build-parent/pom.xml + + + quarkus-integration-test-artemis-common-parent + Quarkus - Artemis - Integration Tests - Common Parent + The Apache ActiveMQ Artemis integration tests common parent module + + pom + + + + + + io.smallrye + jandex-maven-plugin + ${jandex-maven-plugin.version} + + + make-index + + jandex + + + + + + + + + + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-camel-jms-common + ${project.version} + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-camel-jms-common + tests + test-jar + ${project.version} + test + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-common + ${project.version} + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-common + tests + test-jar + ${project.version} + test + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + ${project.version} + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + tests + test-jar + ${project.version} + test + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + ${project.version} + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + tests + test-jar + ${project.version} + test + + + + + + + + io.quarkus + quarkus-resteasy + + + + + io.quarkiverse.artemis + quarkus-test-artemis + test + + + + + io.quarkus + quarkus-smallrye-health + + + + + io.quarkus + quarkus-jackson + test + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + org.apache.activemq + artemis-server + test + + + org.jboss.logging + commons-logging-jboss-logging + test + + + + + + native-image + + + native + + + + + + maven-surefire-plugin + + ${native.surefire.skip} + + + + maven-failsafe-plugin + + + + integration-test + verify + + + + ${project.build.directory}/${project.build.finalName}-runner + org.jboss.logmanager.LogManager + ${maven.home} + + + + + + + + + native + + + + \ No newline at end of file diff --git a/integration-tests/common/pom.xml b/integration-tests/common/pom.xml new file mode 100644 index 00000000..0709dae3 --- /dev/null +++ b/integration-tests/common/pom.xml @@ -0,0 +1,43 @@ + + + 4.0.0 + + io.quarkiverse.artemis + quarkus-integration-test-artemis-common-parent + 999-SNAPSHOT + ../common-parent/pom.xml + + + quarkus-integration-test-artemis-common + Quarkus - Artemis - Integration Tests - Common + The Apache ActiveMQ Artemis integration tests common module + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + + + + + + + io.quarkus + quarkus-junit5 + compile + + + io.rest-assured + rest-assured + compile + + + \ No newline at end of file diff --git a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/BaseArtemisHealthCheckTest.java b/integration-tests/common/src/test/java/io/quarkus/it/artemis/common/ArtemisHealthCheckHelper.java similarity index 60% rename from integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/BaseArtemisHealthCheckTest.java rename to integration-tests/common/src/test/java/io/quarkus/it/artemis/common/ArtemisHealthCheckHelper.java index 9ea34e63..827e89d6 100644 --- a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/BaseArtemisHealthCheckTest.java +++ b/integration-tests/common/src/test/java/io/quarkus/it/artemis/common/ArtemisHealthCheckHelper.java @@ -1,30 +1,29 @@ -package io.quarkus.it.artemis.core.withdefault.changeurl; +package io.quarkus.it.artemis.common; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; import io.restassured.RestAssured; import io.restassured.common.mapper.TypeRef; import io.restassured.response.Response; -public abstract class BaseArtemisHealthCheckTest { - @Test - void testHealth() { - test("/q/health", Set.of("", "named-1")); +public class ArtemisHealthCheckHelper { + + public static void testCore(String endpoint, Set expectedConfigurations) { + test(endpoint, expectedConfigurations, "Artemis Core health check"); } - @Test - void testReady() { - test("/q/health/ready", Set.of("", "named-1")); + public static void testJms(String endpoint, Set expectedConfigurations) { + test(endpoint, expectedConfigurations, "Artemis JMS health check"); } - private static void test(String endpoint, Set expectedConfigurations) { + private static void test(String endpoint, Set expectedConfigurations, String healthCheckMessage) { Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); + Assertions.assertEquals(jakarta.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); Map body = response.as(new TypeRef<>() { }); @@ -34,14 +33,17 @@ private static void test(String endpoint, Set expectedConfigurations) { List> checks = (List>) body.get("checks"); Assertions.assertEquals(1, checks.size()); Map check = checks.get(0); - Assertions.assertEquals("Artemis Core health check", check.get("name")); + Assertions.assertEquals(healthCheckMessage, check.get("name")); @SuppressWarnings("unchecked") - Map data = (Map) check.get("data"); + Map data = (Map) check.getOrDefault("data", new HashMap<>()); Assertions.assertEquals(expectedConfigurations.size(), data.size()); Assertions.assertEquals(expectedConfigurations, data.keySet()); for (String namedConfiguration : expectedConfigurations) { Assertions.assertEquals("UP", data.get(namedConfiguration)); } } + + private ArtemisHealthCheckHelper() { + } } diff --git a/integration-tests/core/common/pom.xml b/integration-tests/core/common/pom.xml new file mode 100644 index 00000000..35813001 --- /dev/null +++ b/integration-tests/core/common/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + io.quarkiverse.artemis + quarkus-integration-test-artemis-common-parent + 999-SNAPSHOT + ../../common-parent/pom.xml + + + quarkus-integration-test-artemis-core-common + Quarkus - Artemis - Integration Tests - Core - Common + The Apache ActiveMQ Artemis Core integration tests common module + + + + + io.smallrye + jandex-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + + + + + + + io.quarkiverse.artemis + quarkus-artemis-core + + + io.quarkus + quarkus-junit5 + compile + + + io.rest-assured + rest-assured + compile + + + \ No newline at end of file diff --git a/integration-tests/core/common/src/main/java/io/quarkus/it/artemis/core/common/ArtemisCoreConsumerManager.java b/integration-tests/core/common/src/main/java/io/quarkus/it/artemis/core/common/ArtemisCoreConsumerManager.java new file mode 100644 index 00000000..bd47270f --- /dev/null +++ b/integration-tests/core/common/src/main/java/io/quarkus/it/artemis/core/common/ArtemisCoreConsumerManager.java @@ -0,0 +1,31 @@ +package io.quarkus.it.artemis.core.common; + +import org.apache.activemq.artemis.api.core.ActiveMQException; +import org.apache.activemq.artemis.api.core.client.ClientConsumer; +import org.apache.activemq.artemis.api.core.client.ClientMessage; +import org.apache.activemq.artemis.api.core.client.ClientSession; +import org.apache.activemq.artemis.api.core.client.ClientSessionFactory; +import org.apache.activemq.artemis.api.core.client.ServerLocator; + +public class ArtemisCoreConsumerManager { + private final ClientSessionFactory sessionFactory; + private final String queueName; + + public ArtemisCoreConsumerManager(ServerLocator serverLocator, String queueName) throws Exception { + sessionFactory = serverLocator.createSessionFactory(); + this.queueName = queueName; + } + + public String receive() { + try (ClientSession session = sessionFactory.createSession()) { + session.start(); + try (ClientConsumer consumer = session.createConsumer(queueName)) { + ClientMessage message = consumer.receive(1000L); + message.acknowledge(); + return message.getBodyBuffer().readString(); + } + } catch (ActiveMQException e) { + throw new RuntimeException("Could not receive message", e); + } + } +} diff --git a/integration-tests/core/common/src/main/java/io/quarkus/it/artemis/core/common/ArtemisCoreProducerManager.java b/integration-tests/core/common/src/main/java/io/quarkus/it/artemis/core/common/ArtemisCoreProducerManager.java new file mode 100644 index 00000000..ce646395 --- /dev/null +++ b/integration-tests/core/common/src/main/java/io/quarkus/it/artemis/core/common/ArtemisCoreProducerManager.java @@ -0,0 +1,30 @@ +package io.quarkus.it.artemis.core.common; + +import org.apache.activemq.artemis.api.core.ActiveMQException; +import org.apache.activemq.artemis.api.core.client.ClientMessage; +import org.apache.activemq.artemis.api.core.client.ClientProducer; +import org.apache.activemq.artemis.api.core.client.ClientSession; +import org.apache.activemq.artemis.api.core.client.ClientSessionFactory; +import org.apache.activemq.artemis.api.core.client.ServerLocator; + +public class ArtemisCoreProducerManager { + private final ClientSessionFactory sessionFactory; + private final String queueName; + + public ArtemisCoreProducerManager(ServerLocator serverLocator, String queueName) throws Exception { + this.sessionFactory = serverLocator.createSessionFactory(); + this.queueName = queueName; + } + + public void send(String body) { + try (ClientSession session = sessionFactory.createSession()) { + ClientMessage message = session.createMessage(true); + message.getBodyBuffer().writeString(body); + try (ClientProducer producer = session.createProducer(queueName)) { + producer.send(message); + } + } catch (ActiveMQException e) { + throw new RuntimeException("Could not send message", e); + } + } +} diff --git a/integration-tests/core/common/src/test/java/io/quarkus/it/artemis/core/common/ArtemisCoreHelper.java b/integration-tests/core/common/src/test/java/io/quarkus/it/artemis/core/common/ArtemisCoreHelper.java new file mode 100644 index 00000000..bcf23391 --- /dev/null +++ b/integration-tests/core/common/src/test/java/io/quarkus/it/artemis/core/common/ArtemisCoreHelper.java @@ -0,0 +1,62 @@ +package io.quarkus.it.artemis.core.common; + +import java.util.Random; + +import org.apache.activemq.artemis.api.core.ActiveMQException; +import org.apache.activemq.artemis.api.core.client.ActiveMQClient; +import org.apache.activemq.artemis.api.core.client.ClientMessage; +import org.apache.activemq.artemis.api.core.client.ClientSession; +import org.eclipse.microprofile.config.ConfigProvider; +import org.junit.jupiter.api.Assertions; + +import io.restassured.RestAssured; +import io.restassured.response.Response; + +public class ArtemisCoreHelper { + private static final Random RANDOM = new Random(); + + public String createBody() { + return Integer.toString(RANDOM.nextInt(Integer.MAX_VALUE), 16); + } + + public ClientSession createDefaultSession() throws Exception { + String url = ConfigProvider.getConfig().getValue("quarkus.artemis.url", String.class); + return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); + } + + public ClientSession createNamedOneSession() throws Exception { + String url = ConfigProvider.getConfig().getValue("quarkus.artemis.\"named-1\".url", String.class); + return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); + } + + public void sendAndVerify(ClientSession session, String addressName, String endpoint) throws ActiveMQException { + String body = createBody(); + try (ClientSession autoClosedSession = session) { + ClientMessage message = autoClosedSession.createMessage(true); + message.getBodyBuffer().writeString(body); + autoClosedSession.createProducer(addressName).send(message); + } + + Response response = RestAssured.with().get(endpoint); + Assertions.assertEquals(jakarta.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); + Assertions.assertEquals(body, response.getBody().asString()); + } + + public void receiveAndVerify(String endpoint, ClientSession session, String queueName) throws ActiveMQException { + String body = createBody(); + Response response = RestAssured.with().body(body).post(endpoint); + Assertions.assertEquals(jakarta.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); + + try (ClientSession autoClosedSession = session) { + session.start(); + ClientMessage message = autoClosedSession.createConsumer(queueName).receive(1000L); + message.acknowledge(); + Assertions.assertEquals(body, message.getBodyBuffer().readString()); + } + } + + public ClientSession createExternallyDefinedSession(String urlConfigName) throws Exception { + String url = ConfigProvider.getConfig().getValue(urlConfigName, String.class); + return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); + } +} diff --git a/integration-tests/core/empty-config/src/main/java/io/quarkus/it/artemis/core/empty/SomeEndpoint.java b/integration-tests/core/empty-config/src/main/java/io/quarkus/it/artemis/core/empty/SomeEndpoint.java index 326dd398..928527b5 100644 --- a/integration-tests/core/empty-config/src/main/java/io/quarkus/it/artemis/core/empty/SomeEndpoint.java +++ b/integration-tests/core/empty-config/src/main/java/io/quarkus/it/artemis/core/empty/SomeEndpoint.java @@ -1,7 +1,7 @@ package io.quarkus.it.artemis.core.empty; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; @Path("/artemis") @Produces(MediaType.TEXT_PLAIN) diff --git a/integration-tests/core/empty-config/src/test/java/io/quarkus/it/artemis/core/empty/BaseArtemisHealthCheckTest.java b/integration-tests/core/empty-config/src/test/java/io/quarkus/it/artemis/core/empty/BaseArtemisHealthCheckTest.java deleted file mode 100644 index 633037ea..00000000 --- a/integration-tests/core/empty-config/src/test/java/io/quarkus/it/artemis/core/empty/BaseArtemisHealthCheckTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.quarkus.it.artemis.core.empty; - -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.common.mapper.TypeRef; -import io.restassured.response.Response; - -public abstract class BaseArtemisHealthCheckTest { - @Test - void testHealth() { - testUpAndEmpty("/q/health"); - } - - @Test - void testReady() { - testUpAndEmpty("/q/health/ready"); - } - - private static void testUpAndEmpty(String endpoint) { - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - - Map body = response.as(new TypeRef<>() { - }); - Assertions.assertEquals("UP", body.get("status")); - - @SuppressWarnings("unchecked") - List> checks = (List>) body.get("checks"); - Assertions.assertEquals(1, checks.size()); - Map check = checks.get(0); - Assertions.assertEquals("Artemis Core health check", check.get("name")); - - @SuppressWarnings("unchecked") - Map data = (Map) check.getOrDefault("data", Map.of()); - Assertions.assertEquals(0, data.size()); - } -} diff --git a/integration-tests/core/empty-config/src/test/java/io/quarkus/it/artemis/core/empty/HealthCheckTest.java b/integration-tests/core/empty-config/src/test/java/io/quarkus/it/artemis/core/empty/HealthCheckTest.java index 75a127ab..8f879d4f 100644 --- a/integration-tests/core/empty-config/src/test/java/io/quarkus/it/artemis/core/empty/HealthCheckTest.java +++ b/integration-tests/core/empty-config/src/test/java/io/quarkus/it/artemis/core/empty/HealthCheckTest.java @@ -1,7 +1,21 @@ package io.quarkus.it.artemis.core.empty; +import java.util.Collections; + +import org.junit.jupiter.api.Test; + +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest -class HealthCheckTest extends BaseArtemisHealthCheckTest { +class HealthCheckTest { + @Test + void testHealth() { + ArtemisHealthCheckHelper.testCore("/q/health", Collections.emptySet()); + } + + @Test + void testReady() { + ArtemisHealthCheckHelper.testCore("/q/health/ready", Collections.emptySet()); + } } diff --git a/integration-tests/core/pom.xml b/integration-tests/core/pom.xml index 3755f639..acdec2fc 100644 --- a/integration-tests/core/pom.xml +++ b/integration-tests/core/pom.xml @@ -13,10 +13,11 @@ pom + common empty-config with-default - with-default-change-url with-default-and-external + with-default-change-url with-external without-default @@ -27,5 +28,12 @@ io.quarkiverse.artemis quarkus-artemis-core + + io.quarkiverse.artemis + quarkus-integration-test-artemis-common + tests + test-jar + test + diff --git a/integration-tests/core/with-default-and-external/pom.xml b/integration-tests/core/with-default-and-external/pom.xml index 11b38200..00d15615 100644 --- a/integration-tests/core/with-default-and-external/pom.xml +++ b/integration-tests/core/with-default-and-external/pom.xml @@ -11,4 +11,16 @@ Quarkus - Artemis - Integration Tests - Core - With default and external configuration The Apache ActiveMQ Artemis Core integration with default and external configuration tests module + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + tests + test-jar + + \ No newline at end of file diff --git a/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisConsumerManager.java b/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisConsumerManager.java deleted file mode 100644 index 28a7e5e3..00000000 --- a/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisConsumerManager.java +++ /dev/null @@ -1,61 +0,0 @@ -package io.quarkus.it.artemis.core.withdefaultandexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.*; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisConsumerManager { - static class Producer { - @Produces - @ApplicationScoped - ArtemisConsumerManager defaultConsumer(@SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) - throws Exception { - return new ArtemisConsumerManager(serverLocator, "test-core-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - ArtemisConsumerManager namedOneConsumer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) - throws Exception { - return new ArtemisConsumerManager(namedOneServerLocator, "test-core-named-1"); - } - - @Produces - @ApplicationScoped - @Identifier("externally-defined") - ArtemisConsumerManager externallyDefinedConsumer( - @Identifier("externally-defined") ServerLocator externallyAddedServerLocator) throws Exception { - return new ArtemisConsumerManager(externallyAddedServerLocator, "test-core-externally-defined"); - } - - Producer() { - } - } - - private final ClientSessionFactory sessionFactory; - private final String queueName; - - private ArtemisConsumerManager(ServerLocator serverLocator, String queueName) throws Exception { - sessionFactory = serverLocator.createSessionFactory(); - this.queueName = queueName; - } - - public String receive() { - try (ClientSession session = sessionFactory.createSession()) { - session.start(); - try (ClientConsumer consumer = session.createConsumer(queueName)) { - ClientMessage message = consumer.receive(1000L); - message.acknowledge(); - return message.getBodyBuffer().readString(); - } - } catch (ActiveMQException e) { - throw new RuntimeException("Could not receive message", e); - } - } -} diff --git a/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisEndpoint.java b/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisEndpoint.java index 9067fc63..1f0cfa5f 100644 --- a/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisEndpoint.java +++ b/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisEndpoint.java @@ -1,28 +1,30 @@ package io.quarkus.it.artemis.core.withdefaultandexternal; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import io.quarkus.it.artemis.core.common.ArtemisCoreConsumerManager; +import io.quarkus.it.artemis.core.common.ArtemisCoreProducerManager; import io.smallrye.common.annotation.Identifier; @Path("/artemis") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) public class ArtemisEndpoint { - private final ArtemisProducerManager defaultProducer; - private final ArtemisConsumerManager defaultConsumer; - private final ArtemisProducerManager namedOneProducer; - private final ArtemisConsumerManager namedOneConsumer; - private final ArtemisProducerManager externallyDefinedProducer; - private final ArtemisConsumerManager externallyDefinedConsumer; + private final ArtemisCoreProducerManager defaultProducer; + private final ArtemisCoreConsumerManager defaultConsumer; + private final ArtemisCoreProducerManager namedOneProducer; + private final ArtemisCoreConsumerManager namedOneConsumer; + private final ArtemisCoreProducerManager externallyDefinedProducer; + private final ArtemisCoreConsumerManager externallyDefinedConsumer; public ArtemisEndpoint( - ArtemisProducerManager defaultProducer, - ArtemisConsumerManager defaultConsumer, - @Identifier("named-1") ArtemisProducerManager namedOneProducer, - @Identifier("named-1") ArtemisConsumerManager namedOneConsumer, - @Identifier("externally-defined") ArtemisProducerManager externallyDefinedProducer, - @Identifier("externally-defined") ArtemisConsumerManager externallyDefinedConsumer) { + ArtemisCoreProducerManager defaultProducer, + ArtemisCoreConsumerManager defaultConsumer, + @Identifier("named-1") ArtemisCoreProducerManager namedOneProducer, + @Identifier("named-1") ArtemisCoreConsumerManager namedOneConsumer, + @Identifier("externally-defined") ArtemisCoreProducerManager externallyDefinedProducer, + @Identifier("externally-defined") ArtemisCoreConsumerManager externallyDefinedConsumer) { this.defaultProducer = defaultProducer; this.defaultConsumer = defaultConsumer; this.namedOneProducer = namedOneProducer; diff --git a/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisProducerManager.java b/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisProducerManager.java deleted file mode 100644 index 5fed4d26..00000000 --- a/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisProducerManager.java +++ /dev/null @@ -1,60 +0,0 @@ -package io.quarkus.it.artemis.core.withdefaultandexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.*; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisProducerManager { - static class Producer { - @Produces - @ApplicationScoped - public static ArtemisProducerManager defaultProducer( - @SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) throws Exception { - return new ArtemisProducerManager(serverLocator, "test-core-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - public static ArtemisProducerManager namedOneProducer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) - throws Exception { - return new ArtemisProducerManager(namedOneServerLocator, "test-core-named-1"); - } - - @Produces - @ApplicationScoped - @Identifier("externally-defined") - public static ArtemisProducerManager externallyAddedProducer( - @Identifier("externally-defined") ServerLocator externallyAddedServerLocator) throws Exception { - return new ArtemisProducerManager(externallyAddedServerLocator, "test-core-externally-defined"); - } - - Producer() { - } - } - - private final ClientSessionFactory sessionFactory; - private final String queueName; - - private ArtemisProducerManager(ServerLocator serverLocator, String queueName) throws Exception { - this.sessionFactory = serverLocator.createSessionFactory(); - this.queueName = queueName; - } - - public void send(String body) { - try (ClientSession session = sessionFactory.createSession()) { - ClientMessage message = session.createMessage(true); - message.getBodyBuffer().writeString(body); - try (ClientProducer producer = session.createProducer(queueName)) { - producer.send(message); - } - } catch (ActiveMQException e) { - throw new RuntimeException("Could not send message", e); - } - } -} diff --git a/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/BeanProducer.java b/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/BeanProducer.java new file mode 100644 index 00000000..f108d292 --- /dev/null +++ b/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/BeanProducer.java @@ -0,0 +1,73 @@ +package io.quarkus.it.artemis.core.withdefaultandexternal; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; + +import org.apache.activemq.artemis.api.core.client.*; +import org.eclipse.microprofile.config.inject.ConfigProperty; + +import io.quarkus.it.artemis.core.common.ArtemisCoreConsumerManager; +import io.quarkus.it.artemis.core.common.ArtemisCoreProducerManager; +import io.smallrye.common.annotation.Identifier; + +public class BeanProducer { + @Produces + @ApplicationScoped + @Identifier("externally-defined") + ServerLocator externallyDefinedServerLocator( + @ConfigProperty(name = "artemis.externally-defined.url") String externallyDefinedUrl) throws Exception { + return ActiveMQClient.createServerLocator(externallyDefinedUrl); + } + + @Produces + @ApplicationScoped + ArtemisCoreConsumerManager defaultConsumer(@SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) + throws Exception { + return new ArtemisCoreConsumerManager(serverLocator, "test-core-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + ArtemisCoreConsumerManager namedOneConsumer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) + throws Exception { + return new ArtemisCoreConsumerManager(namedOneServerLocator, "test-core-named-1"); + } + + @Produces + @ApplicationScoped + @Identifier("externally-defined") + ArtemisCoreConsumerManager externallyDefinedConsumer( + @Identifier("externally-defined") ServerLocator externallyAddedServerLocator) + throws Exception { + return new ArtemisCoreConsumerManager(externallyAddedServerLocator, "test-core-externally-defined"); + } + + @Produces + @ApplicationScoped + public static ArtemisCoreProducerManager defaultProducer( + @SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) throws Exception { + return new ArtemisCoreProducerManager(serverLocator, "test-core-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + public static ArtemisCoreProducerManager namedOneProducer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) + throws Exception { + return new ArtemisCoreProducerManager(namedOneServerLocator, "test-core-named-1"); + } + + @Produces + @ApplicationScoped + @Identifier("externally-defined") + public static ArtemisCoreProducerManager externallyAddedProducer( + @Identifier("externally-defined") ServerLocator externallyAddedServerLocator) throws Exception { + return new ArtemisCoreProducerManager(externallyAddedServerLocator, "test-core-externally-defined"); + } + + BeanProducer() { + } +} diff --git a/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ServerLocatorProducer.java b/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ServerLocatorProducer.java deleted file mode 100644 index 489e593d..00000000 --- a/integration-tests/core/with-default-and-external/src/main/java/io/quarkus/it/artemis/core/withdefaultandexternal/ServerLocatorProducer.java +++ /dev/null @@ -1,20 +0,0 @@ -package io.quarkus.it.artemis.core.withdefaultandexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.client.ActiveMQClient; -import org.apache.activemq.artemis.api.core.client.ServerLocator; -import org.eclipse.microprofile.config.inject.ConfigProperty; - -import io.smallrye.common.annotation.Identifier; - -public class ServerLocatorProducer { - @Produces - @ApplicationScoped - @Identifier("externally-defined") - ServerLocator externallyDefinedServerLocator( - @ConfigProperty(name = "artemis.externally-defined.url") String externallyDefinedUrl) throws Exception { - return ActiveMQClient.createServerLocator(externallyDefinedUrl); - } -} diff --git a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisHealthCheckHelper.java b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisHealthCheckHelper.java index 652341b9..3fc1cfcb 100644 --- a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisHealthCheckHelper.java +++ b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisHealthCheckHelper.java @@ -16,7 +16,7 @@ private ArtemisHealthCheckHelper() { public static void test(String endpoint, Set expectedConfigurations) { Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); + Assertions.assertEquals(jakarta.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); Map body = response.as(new TypeRef<>() { }); diff --git a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisHelper.java b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisHelper.java deleted file mode 100644 index 840d31e6..00000000 --- a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/ArtemisHelper.java +++ /dev/null @@ -1,25 +0,0 @@ -package io.quarkus.it.artemis.core.withdefaultandexternal; - -import java.util.Random; - -import org.apache.activemq.artemis.api.core.client.ActiveMQClient; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.eclipse.microprofile.config.ConfigProvider; - -public interface ArtemisHelper { - Random RANDOM = new Random(); - - default String createBody() { - return Integer.toString(RANDOM.nextInt(Integer.MAX_VALUE), 16); - } - - default ClientSession createDefaultSession() throws Exception { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.url", String.class); - return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); - } - - default ClientSession createNamedOneSession() throws Exception { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.\"named-1\".url", String.class); - return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); - } -} diff --git a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/BaseArtemisConsumerTest.java b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/BaseArtemisConsumerTest.java index c792e774..17b52d08 100644 --- a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/BaseArtemisConsumerTest.java +++ b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/BaseArtemisConsumerTest.java @@ -1,36 +1,17 @@ package io.quarkus.it.artemis.core.withdefaultandexternal; -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.ClientMessage; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisConsumerTest implements ArtemisHelper { +import io.quarkus.it.artemis.core.common.ArtemisCoreHelper; +public abstract class BaseArtemisConsumerTest extends ArtemisCoreHelper { @Test void testDefault() throws Exception { - test(createDefaultSession(), "test-core-default", "/artemis"); + sendAndVerify(createDefaultSession(), "test-core-default", "/artemis"); } @Test void testNamedOne() throws Exception { - test(createNamedOneSession(), "test-core-named-1", "/artemis/named-1"); - } - - protected void test(ClientSession session, String addressName, String endpoint) throws ActiveMQException { - String body = createBody(); - try (ClientSession autoClosedSession = session) { - ClientMessage message = autoClosedSession.createMessage(true); - message.getBodyBuffer().writeString(body); - autoClosedSession.createProducer(addressName).send(message); - } - - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - Assertions.assertEquals(body, response.getBody().asString()); + sendAndVerify(createNamedOneSession(), "test-core-named-1", "/artemis/named-1"); } } diff --git a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/BaseArtemisProducerTest.java b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/BaseArtemisProducerTest.java index 751d55a8..3d52d014 100644 --- a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/BaseArtemisProducerTest.java +++ b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/BaseArtemisProducerTest.java @@ -1,35 +1,17 @@ package io.quarkus.it.artemis.core.withdefaultandexternal; -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.ClientMessage; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; +import io.quarkus.it.artemis.core.common.ArtemisCoreHelper; -public abstract class BaseArtemisProducerTest implements ArtemisHelper { +public abstract class BaseArtemisProducerTest extends ArtemisCoreHelper { @Test void testDefault() throws Exception { - test(createDefaultSession(), "test-core-default", "/artemis"); + receiveAndVerify("/artemis", createDefaultSession(), "test-core-default"); } @Test void testNamedOne() throws Exception { - test(createNamedOneSession(), "test-core-named-1", "/artemis/named-1"); - } - - protected void test(ClientSession session, String queueName, String endpoint) throws ActiveMQException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (ClientSession autoClosedSession = session) { - session.start(); - ClientMessage message = autoClosedSession.createConsumer(queueName).receive(1000L); - message.acknowledge(); - Assertions.assertEquals(body, message.getBodyBuffer().readString()); - } + receiveAndVerify("/artemis/named-1", createNamedOneSession(), "test-core-named-1"); } } diff --git a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/devservices/DevservicesHealthCheckTest.java b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/devservices/DevservicesHealthCheckTest.java index 2515136d..ebe35453 100644 --- a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/devservices/DevservicesHealthCheckTest.java +++ b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/devservices/DevservicesHealthCheckTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; -import io.quarkus.it.artemis.core.withdefaultandexternal.ArtemisHealthCheckHelper; +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.TestProfile; @@ -13,11 +13,11 @@ class DevservicesHealthCheckTest { @Test void testHealth() { - ArtemisHealthCheckHelper.test("/q/health", Set.of("", "named-1")); + ArtemisHealthCheckHelper.testCore("/q/health", Set.of("", "named-1")); } @Test void testReady() { - ArtemisHealthCheckHelper.test("/q/health/ready", Set.of("", "named-1")); + ArtemisHealthCheckHelper.testCore("/q/health/ready", Set.of("", "named-1")); } } diff --git a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedConsumerTest.java b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedConsumerTest.java index fd3682ce..bb1d9fb8 100644 --- a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedConsumerTest.java +++ b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedConsumerTest.java @@ -1,8 +1,5 @@ package io.quarkus.it.artemis.core.withdefaultandexternal.embedded; -import org.apache.activemq.artemis.api.core.client.ActiveMQClient; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.eclipse.microprofile.config.ConfigProvider; import org.junit.jupiter.api.Test; import io.quarkus.artemis.test.ArtemisTestResource; @@ -17,11 +14,9 @@ class EmbeddedConsumerTest extends BaseArtemisConsumerTest { @Test void testExternallyDefined() throws Exception { - test(createExternallyDefinedSession(), "test-core-externally-defined", "/artemis/externally-defined"); - } - - private ClientSession createExternallyDefinedSession() throws Exception { - String url = ConfigProvider.getConfig().getValue("artemis.externally-defined.url", String.class); - return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); + sendAndVerify( + createExternallyDefinedSession("artemis.externally-defined.url"), + "test-core-externally-defined", + "/artemis/externally-defined"); } } diff --git a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedHealthCheckTest.java b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedHealthCheckTest.java index ad2d1bd7..a3e5e09b 100644 --- a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedHealthCheckTest.java +++ b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedHealthCheckTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.core.withdefaultandexternal.ArtemisHealthCheckHelper; +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @@ -16,11 +16,11 @@ class EmbeddedHealthCheckTest { @Test void testHealth() { - ArtemisHealthCheckHelper.test("/q/health", Set.of("", "named-1", "externally-defined")); + ArtemisHealthCheckHelper.testCore("/q/health", Set.of("", "named-1", "externally-defined")); } @Test void testReady() { - ArtemisHealthCheckHelper.test("/q/health/ready", Set.of("", "named-1", "externally-defined")); + ArtemisHealthCheckHelper.testCore("/q/health/ready", Set.of("", "named-1", "externally-defined")); } } diff --git a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedProducerTest.java b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedProducerTest.java index e2546706..2c7207c1 100644 --- a/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedProducerTest.java +++ b/integration-tests/core/with-default-and-external/src/test/java/io/quarkus/it/artemis/core/withdefaultandexternal/embedded/EmbeddedProducerTest.java @@ -1,8 +1,5 @@ package io.quarkus.it.artemis.core.withdefaultandexternal.embedded; -import org.apache.activemq.artemis.api.core.client.ActiveMQClient; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.eclipse.microprofile.config.ConfigProvider; import org.junit.jupiter.api.Test; import io.quarkus.artemis.test.ArtemisTestResource; @@ -17,11 +14,7 @@ class EmbeddedProducerTest extends BaseArtemisProducerTest { @Test void testExternallyDefined() throws Exception { - test(createExternallyDefinedSession(), "test-core-externally-defined", "/artemis/externally-defined"); - } - - private ClientSession createExternallyDefinedSession() throws Exception { - String url = ConfigProvider.getConfig().getValue("artemis.externally-defined.url", String.class); - return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); + receiveAndVerify("/artemis/externally-defined", createExternallyDefinedSession("artemis.externally-defined.url"), + "test-core-externally-defined"); } } diff --git a/integration-tests/core/with-default-change-url/pom.xml b/integration-tests/core/with-default-change-url/pom.xml index b947b2e2..bb6b3362 100644 --- a/integration-tests/core/with-default-change-url/pom.xml +++ b/integration-tests/core/with-default-change-url/pom.xml @@ -10,4 +10,17 @@ quarkus-integration-test-artemis-core-with-default-change-url Quarkus - Artemis - Integration Tests - Core - With default change url configuration The Apache ActiveMQ Artemis Core integration with default change url configuration tests module + + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + tests + test-jar + + diff --git a/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisConsumerManager.java b/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisConsumerManager.java deleted file mode 100644 index 2b48e6c4..00000000 --- a/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisConsumerManager.java +++ /dev/null @@ -1,53 +0,0 @@ -package io.quarkus.it.artemis.core.withdefault.changeurl; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.*; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisConsumerManager { - static class Producer { - @Produces - @ApplicationScoped - ArtemisConsumerManager defaultConsumer(@SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) - throws Exception { - return new ArtemisConsumerManager(serverLocator, "test-core-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - ArtemisConsumerManager namedOneConsumer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) - throws Exception { - return new ArtemisConsumerManager(namedOneServerLocator, "test-core-named-1"); - } - - Producer() { - } - } - - private final ClientSessionFactory sessionFactory; - private final String queueName; - - private ArtemisConsumerManager(ServerLocator serverLocator, String queueName) throws Exception { - sessionFactory = serverLocator.createSessionFactory(); - this.queueName = queueName; - } - - public String receive() { - try (ClientSession session = sessionFactory.createSession()) { - session.start(); - try (ClientConsumer consumer = session.createConsumer(queueName)) { - ClientMessage message = consumer.receive(1000L); - message.acknowledge(); - return message.getBodyBuffer().readString(); - } - } catch (ActiveMQException e) { - throw new RuntimeException("Could not receive message", e); - } - } -} diff --git a/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisEndpoint.java b/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisEndpoint.java index 75141af1..e36db0a4 100644 --- a/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisEndpoint.java +++ b/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisEndpoint.java @@ -1,24 +1,26 @@ package io.quarkus.it.artemis.core.withdefault.changeurl; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import io.quarkus.it.artemis.core.common.ArtemisCoreConsumerManager; +import io.quarkus.it.artemis.core.common.ArtemisCoreProducerManager; import io.smallrye.common.annotation.Identifier; @Path("/artemis") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) public class ArtemisEndpoint { - private final ArtemisProducerManager defaultProducer; - private final ArtemisConsumerManager defaultConsumer; - private final ArtemisProducerManager namedOneProducer; - private final ArtemisConsumerManager namedOneConsumer; + private final ArtemisCoreProducerManager defaultProducer; + private final ArtemisCoreConsumerManager defaultConsumer; + private final ArtemisCoreProducerManager namedOneProducer; + private final ArtemisCoreConsumerManager namedOneConsumer; public ArtemisEndpoint( - ArtemisProducerManager defaultProducer, - ArtemisConsumerManager defaultConsumer, - @Identifier("named-1") ArtemisProducerManager namedOneProducer, - @Identifier("named-1") ArtemisConsumerManager namedOneConsumer) { + ArtemisCoreProducerManager defaultProducer, + ArtemisCoreConsumerManager defaultConsumer, + @Identifier("named-1") ArtemisCoreProducerManager namedOneProducer, + @Identifier("named-1") ArtemisCoreConsumerManager namedOneConsumer) { this.defaultProducer = defaultProducer; this.defaultConsumer = defaultConsumer; this.namedOneProducer = namedOneProducer; diff --git a/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisProducerManager.java b/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisProducerManager.java deleted file mode 100644 index 874d42b9..00000000 --- a/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisProducerManager.java +++ /dev/null @@ -1,52 +0,0 @@ -package io.quarkus.it.artemis.core.withdefault.changeurl; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.*; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisProducerManager { - static class Producer { - @Produces - @ApplicationScoped - public static ArtemisProducerManager defaultProducer( - @SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) throws Exception { - return new ArtemisProducerManager(serverLocator, "test-core-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - public static ArtemisProducerManager namedOneProducer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) - throws Exception { - return new ArtemisProducerManager(namedOneServerLocator, "test-core-named-1"); - } - - Producer() { - } - } - - private final ClientSessionFactory sessionFactory; - private final String queueName; - - private ArtemisProducerManager(ServerLocator serverLocator, String queueName) throws Exception { - this.sessionFactory = serverLocator.createSessionFactory(); - this.queueName = queueName; - } - - public void send(String body) { - try (ClientSession session = sessionFactory.createSession()) { - ClientMessage message = session.createMessage(true); - message.getBodyBuffer().writeString(body); - try (ClientProducer producer = session.createProducer(queueName)) { - producer.send(message); - } - } catch (ActiveMQException e) { - throw new RuntimeException("Could not send message", e); - } - } -} diff --git a/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/BeanProducer.java b/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/BeanProducer.java new file mode 100644 index 00000000..674313d3 --- /dev/null +++ b/integration-tests/core/with-default-change-url/src/main/java/io/quarkus/it/artemis/core/withdefault/changeurl/BeanProducer.java @@ -0,0 +1,48 @@ +package io.quarkus.it.artemis.core.withdefault.changeurl; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; + +import org.apache.activemq.artemis.api.core.client.*; + +import io.quarkus.it.artemis.core.common.ArtemisCoreConsumerManager; +import io.quarkus.it.artemis.core.common.ArtemisCoreProducerManager; +import io.smallrye.common.annotation.Identifier; + +public class BeanProducer { + @Produces + @ApplicationScoped + ArtemisCoreConsumerManager defaultConsumer( + @SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) throws Exception { + return new ArtemisCoreConsumerManager(serverLocator, "test-core-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + ArtemisCoreConsumerManager namedOneConsumer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) + throws Exception { + return new ArtemisCoreConsumerManager(namedOneServerLocator, "test-core-named-1"); + } + + @Produces + @ApplicationScoped + public static ArtemisCoreProducerManager defaultProducer( + @SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) throws Exception { + return new ArtemisCoreProducerManager(serverLocator, "test-core-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + public static ArtemisCoreProducerManager namedOneProducer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) + throws Exception { + return new ArtemisCoreProducerManager(namedOneServerLocator, "test-core-named-1"); + } + + BeanProducer() { + } + +} diff --git a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisHelper.java b/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisHelper.java deleted file mode 100644 index 7142f83c..00000000 --- a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/ArtemisHelper.java +++ /dev/null @@ -1,24 +0,0 @@ -package io.quarkus.it.artemis.core.withdefault.changeurl; - -import java.util.Random; - -import org.apache.activemq.artemis.api.core.client.ActiveMQClient; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.eclipse.microprofile.config.ConfigProvider; - -public interface ArtemisHelper { - - default String createBody() { - return Integer.toString(new Random().nextInt(Integer.MAX_VALUE), 16); - } - - default ClientSession createDefaultSession() throws Exception { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.url", String.class); - return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); - } - - default ClientSession createNamedOneSession() throws Exception { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.\"named-1\".url", String.class); - return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); - } -} diff --git a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/BaseArtemisConsumerTest.java b/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/BaseArtemisConsumerTest.java deleted file mode 100644 index afea0557..00000000 --- a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/BaseArtemisConsumerTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.quarkus.it.artemis.core.withdefault.changeurl; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.ClientMessage; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisConsumerTest implements ArtemisHelper { - - @Test - void testDefault() throws Exception { - test(createDefaultSession(), "test-core-default", "/artemis"); - } - - @Test - void testNamedOne() throws Exception { - test(createNamedOneSession(), "test-core-named-1", "/artemis/named-1"); - } - - private void test(ClientSession session, String addressName, String endpoint) throws ActiveMQException { - String body = createBody(); - try (ClientSession autoClosedSession = session) { - ClientMessage message = autoClosedSession.createMessage(true); - message.getBodyBuffer().writeString(body); - autoClosedSession.createProducer(addressName).send(message); - } - - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - Assertions.assertEquals(body, response.getBody().asString()); - } -} diff --git a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/BaseArtemisProducerTest.java b/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/BaseArtemisProducerTest.java deleted file mode 100644 index 7793f44f..00000000 --- a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/BaseArtemisProducerTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.quarkus.it.artemis.core.withdefault.changeurl; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.ClientMessage; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisProducerTest implements ArtemisHelper { - @Test - void testDefault() throws Exception { - test(createDefaultSession(), "/artemis", "test-core-default"); - } - - @Test - void testNamedOne() throws Exception { - test(createNamedOneSession(), "/artemis/named-1", "test-core-named-1"); - } - - private void test(ClientSession session, String endpoint, String queueName) throws ActiveMQException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (ClientSession autoClosedSession = session) { - session.start(); - ClientMessage message = autoClosedSession.createConsumer(queueName).receive(1000L); - message.acknowledge(); - Assertions.assertEquals(body, message.getBodyBuffer().readString()); - } - } -} diff --git a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedConsumerTest.java b/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedConsumerTest.java index e2850fe2..aa137a6d 100644 --- a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedConsumerTest.java +++ b/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedConsumerTest.java @@ -1,12 +1,23 @@ package io.quarkus.it.artemis.core.withdefault.changeurl.embedded; +import org.junit.jupiter.api.Test; + import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.core.withdefault.changeurl.BaseArtemisConsumerTest; +import io.quarkus.it.artemis.core.common.ArtemisCoreHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest @QuarkusTestResource(ArtemisTestResource.class) @QuarkusTestResource(NamedOneArtemisTestResource.class) -class EmbeddedConsumerTest extends BaseArtemisConsumerTest { +class EmbeddedConsumerTest extends ArtemisCoreHelper { + @Test + void testDefault() throws Exception { + sendAndVerify(createDefaultSession(), "test-core-default", "/artemis"); + } + + @Test + void testNamedOne() throws Exception { + sendAndVerify(createNamedOneSession(), "test-core-named-1", "/artemis/named-1"); + } } diff --git a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedHealthCheckTest.java b/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedHealthCheckTest.java index 51723758..92fb8a86 100644 --- a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedHealthCheckTest.java +++ b/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedHealthCheckTest.java @@ -1,12 +1,25 @@ package io.quarkus.it.artemis.core.withdefault.changeurl.embedded; +import java.util.Set; + +import org.junit.jupiter.api.Test; + import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.core.withdefault.changeurl.BaseArtemisHealthCheckTest; +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest @QuarkusTestResource(ArtemisTestResource.class) @QuarkusTestResource(NamedOneArtemisTestResource.class) -class EmbeddedHealthCheckTest extends BaseArtemisHealthCheckTest { +class EmbeddedHealthCheckTest { + @Test + void testHealth() { + ArtemisHealthCheckHelper.testCore("/q/health", Set.of("", "named-1")); + } + + @Test + void testReady() { + ArtemisHealthCheckHelper.testCore("/q/health/ready", Set.of("", "named-1")); + } } diff --git a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedProducerTest.java b/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedProducerTest.java index 772c9ce7..37ebc6aa 100644 --- a/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedProducerTest.java +++ b/integration-tests/core/with-default-change-url/src/test/java/io/quarkus/it/artemis/core/withdefault/changeurl/embedded/EmbeddedProducerTest.java @@ -1,12 +1,23 @@ package io.quarkus.it.artemis.core.withdefault.changeurl.embedded; +import org.junit.jupiter.api.Test; + import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.core.withdefault.changeurl.BaseArtemisProducerTest; +import io.quarkus.it.artemis.core.common.ArtemisCoreHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest @QuarkusTestResource(ArtemisTestResource.class) @QuarkusTestResource(NamedOneArtemisTestResource.class) -class EmbeddedProducerTest extends BaseArtemisProducerTest { +class EmbeddedProducerTest extends ArtemisCoreHelper { + @Test + void testDefault() throws Exception { + receiveAndVerify("/artemis", createDefaultSession(), "test-core-default"); + } + + @Test + void testNamedOne() throws Exception { + receiveAndVerify("/artemis/named-1", createNamedOneSession(), "test-core-named-1"); + } } diff --git a/integration-tests/core/with-default/pom.xml b/integration-tests/core/with-default/pom.xml index 2d30da6c..d3fabf2b 100644 --- a/integration-tests/core/with-default/pom.xml +++ b/integration-tests/core/with-default/pom.xml @@ -10,4 +10,17 @@ quarkus-integration-test-artemis-core-with-default Quarkus - Artemis - Integration Tests - Core - With default configuration The Apache ActiveMQ Artemis Core integration with default configuration tests module + + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + tests + test-jar + + diff --git a/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/ArtemisConsumerManager.java b/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/ArtemisConsumerManager.java deleted file mode 100644 index ce1cc948..00000000 --- a/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/ArtemisConsumerManager.java +++ /dev/null @@ -1,53 +0,0 @@ -package io.quarkus.it.artemis.core.withdefault; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.*; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisConsumerManager { - static class Producer { - @Produces - @ApplicationScoped - ArtemisConsumerManager defaultConsumer(@SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) - throws Exception { - return new ArtemisConsumerManager(serverLocator, "test-core-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - ArtemisConsumerManager namedOneConsumer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) - throws Exception { - return new ArtemisConsumerManager(namedOneServerLocator, "test-core-named-1"); - } - - Producer() { - } - } - - private final ClientSessionFactory sessionFactory; - private final String queueName; - - private ArtemisConsumerManager(ServerLocator serverLocator, String queueName) throws Exception { - sessionFactory = serverLocator.createSessionFactory(); - this.queueName = queueName; - } - - public String receive() { - try (ClientSession session = sessionFactory.createSession()) { - session.start(); - try (ClientConsumer consumer = session.createConsumer(queueName)) { - ClientMessage message = consumer.receive(1000L); - message.acknowledge(); - return message.getBodyBuffer().readString(); - } - } catch (ActiveMQException e) { - throw new RuntimeException("Could not receive message", e); - } - } -} diff --git a/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/ArtemisEndpoint.java b/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/ArtemisEndpoint.java index 4657711a..a22fec67 100644 --- a/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/ArtemisEndpoint.java +++ b/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/ArtemisEndpoint.java @@ -1,24 +1,26 @@ package io.quarkus.it.artemis.core.withdefault; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import io.quarkus.it.artemis.core.common.ArtemisCoreConsumerManager; +import io.quarkus.it.artemis.core.common.ArtemisCoreProducerManager; import io.smallrye.common.annotation.Identifier; @Path("/artemis") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) public class ArtemisEndpoint { - private final ArtemisProducerManager defaultProducer; - private final ArtemisConsumerManager defaultConsumer; - private final ArtemisProducerManager namedOneProducer; - private final ArtemisConsumerManager namedOneConsumer; + private final ArtemisCoreProducerManager defaultProducer; + private final ArtemisCoreConsumerManager defaultConsumer; + private final ArtemisCoreProducerManager namedOneProducer; + private final ArtemisCoreConsumerManager namedOneConsumer; public ArtemisEndpoint( - ArtemisProducerManager defaultProducer, - ArtemisConsumerManager defaultConsumer, - @Identifier("named-1") ArtemisProducerManager namedOneProducer, - @Identifier("named-1") ArtemisConsumerManager namedOneConsumer) { + ArtemisCoreProducerManager defaultProducer, + ArtemisCoreConsumerManager defaultConsumer, + @Identifier("named-1") ArtemisCoreProducerManager namedOneProducer, + @Identifier("named-1") ArtemisCoreConsumerManager namedOneConsumer) { this.defaultProducer = defaultProducer; this.defaultConsumer = defaultConsumer; this.namedOneProducer = namedOneProducer; diff --git a/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/ArtemisProducerManager.java b/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/ArtemisProducerManager.java deleted file mode 100644 index 027990bc..00000000 --- a/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/ArtemisProducerManager.java +++ /dev/null @@ -1,52 +0,0 @@ -package io.quarkus.it.artemis.core.withdefault; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.*; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisProducerManager { - static class Producer { - @Produces - @ApplicationScoped - public static ArtemisProducerManager defaultProducer( - @SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) throws Exception { - return new ArtemisProducerManager(serverLocator, "test-core-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - public static ArtemisProducerManager namedOneProducer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) - throws Exception { - return new ArtemisProducerManager(namedOneServerLocator, "test-core-named-1"); - } - - Producer() { - } - } - - private final ClientSessionFactory sessionFactory; - private final String queueName; - - private ArtemisProducerManager(ServerLocator serverLocator, String queueName) throws Exception { - this.sessionFactory = serverLocator.createSessionFactory(); - this.queueName = queueName; - } - - public void send(String body) { - try (ClientSession session = sessionFactory.createSession()) { - ClientMessage message = session.createMessage(true); - message.getBodyBuffer().writeString(body); - try (ClientProducer producer = session.createProducer(queueName)) { - producer.send(message); - } - } catch (ActiveMQException e) { - throw new RuntimeException("Could not send message", e); - } - } -} diff --git a/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/BeanProducer.java b/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/BeanProducer.java new file mode 100644 index 00000000..80ca8533 --- /dev/null +++ b/integration-tests/core/with-default/src/main/java/io/quarkus/it/artemis/core/withdefault/BeanProducer.java @@ -0,0 +1,47 @@ +package io.quarkus.it.artemis.core.withdefault; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; + +import org.apache.activemq.artemis.api.core.client.*; + +import io.quarkus.it.artemis.core.common.ArtemisCoreConsumerManager; +import io.quarkus.it.artemis.core.common.ArtemisCoreProducerManager; +import io.smallrye.common.annotation.Identifier; + +public class BeanProducer { + @Produces + @ApplicationScoped + ArtemisCoreConsumerManager defaultConsumer(@SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) + throws Exception { + return new ArtemisCoreConsumerManager(serverLocator, "test-core-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + ArtemisCoreConsumerManager namedOneConsumer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) + throws Exception { + return new ArtemisCoreConsumerManager(namedOneServerLocator, "test-core-named-1"); + } + + @Produces + @ApplicationScoped + public static ArtemisCoreProducerManager defaultProducer( + @SuppressWarnings("CdiInjectionPointsInspection") ServerLocator serverLocator) throws Exception { + return new ArtemisCoreProducerManager(serverLocator, "test-core-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + public static ArtemisCoreProducerManager namedOneProducer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) + throws Exception { + return new ArtemisCoreProducerManager(namedOneServerLocator, "test-core-named-1"); + } + + BeanProducer() { + } +} diff --git a/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/ArtemisHelper.java b/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/ArtemisHelper.java deleted file mode 100644 index f174ab55..00000000 --- a/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/ArtemisHelper.java +++ /dev/null @@ -1,24 +0,0 @@ -package io.quarkus.it.artemis.core.withdefault; - -import java.util.Random; - -import org.apache.activemq.artemis.api.core.client.ActiveMQClient; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.eclipse.microprofile.config.ConfigProvider; - -public interface ArtemisHelper { - - default String createBody() { - return Integer.toString(new Random().nextInt(Integer.MAX_VALUE), 16); - } - - default ClientSession createDefaultSession() throws Exception { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.url", String.class); - return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); - } - - default ClientSession createNamedOneSession() throws Exception { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.\"named-1\".url", String.class); - return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); - } -} diff --git a/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisConsumerTest.java b/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisConsumerTest.java index e3a25c35..4a17436f 100644 --- a/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisConsumerTest.java +++ b/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisConsumerTest.java @@ -1,36 +1,17 @@ package io.quarkus.it.artemis.core.withdefault; -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.ClientMessage; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisConsumerTest implements ArtemisHelper { +import io.quarkus.it.artemis.core.common.ArtemisCoreHelper; +public abstract class BaseArtemisConsumerTest extends ArtemisCoreHelper { @Test void testDefault() throws Exception { - test(createDefaultSession(), "test-core-default", "/artemis"); + sendAndVerify(createDefaultSession(), "test-core-default", "/artemis"); } @Test void testNamedOne() throws Exception { - test(createNamedOneSession(), "test-core-named-1", "/artemis/named-1"); - } - - private void test(ClientSession session, String addressName, String endpoint) throws ActiveMQException { - String body = createBody(); - try (ClientSession autoClosedSession = session) { - ClientMessage message = autoClosedSession.createMessage(true); - message.getBodyBuffer().writeString(body); - autoClosedSession.createProducer(addressName).send(message); - } - - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - Assertions.assertEquals(body, response.getBody().asString()); + sendAndVerify(createNamedOneSession(), "test-core-named-1", "/artemis/named-1"); } } diff --git a/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisHealthCheckTest.java b/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisHealthCheckTest.java index 39606653..21ff2cb2 100644 --- a/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisHealthCheckTest.java +++ b/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisHealthCheckTest.java @@ -1,47 +1,19 @@ package io.quarkus.it.artemis.core.withdefault; -import java.util.List; -import java.util.Map; import java.util.Set; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.common.mapper.TypeRef; -import io.restassured.response.Response; +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; public abstract class BaseArtemisHealthCheckTest { @Test void testHealth() { - test("/q/health", Set.of("", "named-1")); + ArtemisHealthCheckHelper.testCore("/q/health", Set.of("", "named-1")); } @Test void testReady() { - test("/q/health/ready", Set.of("", "named-1")); - } - - private static void test(String endpoint, Set expectedConfigurations) { - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - - Map body = response.as(new TypeRef<>() { - }); - Assertions.assertEquals("UP", body.get("status")); - - @SuppressWarnings("unchecked") - List> checks = (List>) body.get("checks"); - Assertions.assertEquals(1, checks.size()); - Map check = checks.get(0); - Assertions.assertEquals("Artemis Core health check", check.get("name")); - - @SuppressWarnings("unchecked") - Map data = (Map) check.get("data"); - Assertions.assertEquals(expectedConfigurations.size(), data.size()); - Assertions.assertEquals(expectedConfigurations, data.keySet()); - for (String namedConfiguration : expectedConfigurations) { - Assertions.assertEquals("UP", data.get(namedConfiguration)); - } + ArtemisHealthCheckHelper.testCore("/q/health/ready", Set.of("", "named-1")); } } diff --git a/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisProducerTest.java b/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisProducerTest.java index 721e35ab..bc25a037 100644 --- a/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisProducerTest.java +++ b/integration-tests/core/with-default/src/test/java/io/quarkus/it/artemis/core/withdefault/BaseArtemisProducerTest.java @@ -1,35 +1,17 @@ package io.quarkus.it.artemis.core.withdefault; -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.ClientMessage; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; +import io.quarkus.it.artemis.core.common.ArtemisCoreHelper; -public abstract class BaseArtemisProducerTest implements ArtemisHelper { +public abstract class BaseArtemisProducerTest extends ArtemisCoreHelper { @Test void testDefault() throws Exception { - test(createDefaultSession(), "/artemis", "test-core-default"); + receiveAndVerify("/artemis", createDefaultSession(), "test-core-default"); } @Test void testNamedOne() throws Exception { - test(createNamedOneSession(), "/artemis/named-1", "test-core-named-1"); - } - - private void test(ClientSession session, String endpoint, String queueName) throws ActiveMQException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (ClientSession autoClosedSession = session) { - session.start(); - ClientMessage message = autoClosedSession.createConsumer(queueName).receive(1000L); - message.acknowledge(); - Assertions.assertEquals(body, message.getBodyBuffer().readString()); - } + receiveAndVerify("/artemis/named-1", createNamedOneSession(), "test-core-named-1"); } } diff --git a/integration-tests/core/with-external/pom.xml b/integration-tests/core/with-external/pom.xml index 6a3b0d1a..03b9839c 100644 --- a/integration-tests/core/with-external/pom.xml +++ b/integration-tests/core/with-external/pom.xml @@ -11,4 +11,16 @@ Quarkus - Artemis - Integration Tests - Core - With external configuration The Apache ActiveMQ Artemis Core integration with external configuration tests module + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + tests + test-jar + + \ No newline at end of file diff --git a/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ArtemisConsumerManager.java b/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ArtemisConsumerManager.java deleted file mode 100644 index 3b193344..00000000 --- a/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ArtemisConsumerManager.java +++ /dev/null @@ -1,46 +0,0 @@ -package io.quarkus.it.artemis.core.withexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.*; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisConsumerManager { - static class Producer { - - @Produces - @ApplicationScoped - @Identifier("externally-defined") - ArtemisConsumerManager externallyDefinedConsumer( - @Identifier("externally-defined") ServerLocator externallyAddedServerLocator) throws Exception { - return new ArtemisConsumerManager(externallyAddedServerLocator, "test-core-externally-defined"); - } - - Producer() { - } - } - - private final ClientSessionFactory sessionFactory; - private final String queueName; - - private ArtemisConsumerManager(ServerLocator serverLocator, String queueName) throws Exception { - sessionFactory = serverLocator.createSessionFactory(); - this.queueName = queueName; - } - - public String receive() { - try (ClientSession session = sessionFactory.createSession()) { - session.start(); - try (ClientConsumer consumer = session.createConsumer(queueName)) { - ClientMessage message = consumer.receive(1000L); - message.acknowledge(); - return message.getBodyBuffer().readString(); - } - } catch (ActiveMQException e) { - throw new RuntimeException("Could not receive message", e); - } - } -} diff --git a/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ArtemisEndpoint.java b/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ArtemisEndpoint.java index 63015e7a..bb668e1f 100644 --- a/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ArtemisEndpoint.java +++ b/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ArtemisEndpoint.java @@ -1,20 +1,22 @@ package io.quarkus.it.artemis.core.withexternal; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import io.quarkus.it.artemis.core.common.ArtemisCoreConsumerManager; +import io.quarkus.it.artemis.core.common.ArtemisCoreProducerManager; import io.smallrye.common.annotation.Identifier; @Path("/artemis") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) public class ArtemisEndpoint { - private final ArtemisProducerManager externallyDefinedProducer; - private final ArtemisConsumerManager externallyDefinedConsumer; + private final ArtemisCoreProducerManager externallyDefinedProducer; + private final ArtemisCoreConsumerManager externallyDefinedConsumer; public ArtemisEndpoint( - @Identifier("externally-defined") ArtemisProducerManager externallyDefinedProducer, - @Identifier("externally-defined") ArtemisConsumerManager externallyDefinedConsumer) { + @Identifier("externally-defined") ArtemisCoreProducerManager externallyDefinedProducer, + @Identifier("externally-defined") ArtemisCoreConsumerManager externallyDefinedConsumer) { this.externallyDefinedProducer = externallyDefinedProducer; this.externallyDefinedConsumer = externallyDefinedConsumer; } diff --git a/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ArtemisProducerManager.java b/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ArtemisProducerManager.java deleted file mode 100644 index 59ed277f..00000000 --- a/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ArtemisProducerManager.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.quarkus.it.artemis.core.withexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.*; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisProducerManager { - static class Producer { - @Produces - @ApplicationScoped - @Identifier("externally-defined") - public static ArtemisProducerManager externallyAddedProducer( - @Identifier("externally-defined") ServerLocator externallyAddedServerLocator) - throws Exception { - return new ArtemisProducerManager(externallyAddedServerLocator, "test-core-externally-defined"); - } - - Producer() { - } - } - - private final ClientSessionFactory sessionFactory; - private final String queueName; - - private ArtemisProducerManager(ServerLocator serverLocator, String queueName) throws Exception { - this.sessionFactory = serverLocator.createSessionFactory(); - this.queueName = queueName; - } - - public void send(String body) { - try (ClientSession session = sessionFactory.createSession()) { - ClientMessage message = session.createMessage(true); - message.getBodyBuffer().writeString(body); - try (ClientProducer producer = session.createProducer(queueName)) { - producer.send(message); - } - } catch (ActiveMQException e) { - throw new RuntimeException("Could not send message", e); - } - } -} diff --git a/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/BeanProducer.java b/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/BeanProducer.java new file mode 100644 index 00000000..5456f555 --- /dev/null +++ b/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/BeanProducer.java @@ -0,0 +1,42 @@ +package io.quarkus.it.artemis.core.withexternal; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; + +import org.apache.activemq.artemis.api.core.client.ActiveMQClient; +import org.apache.activemq.artemis.api.core.client.ServerLocator; +import org.eclipse.microprofile.config.inject.ConfigProperty; + +import io.quarkus.it.artemis.core.common.ArtemisCoreConsumerManager; +import io.quarkus.it.artemis.core.common.ArtemisCoreProducerManager; +import io.smallrye.common.annotation.Identifier; + +public class BeanProducer { + @Produces + @ApplicationScoped + @Identifier("externally-defined") + ServerLocator externallyDefinedServerLocator( + @ConfigProperty(name = "artemis.externally-defined.url") String externallyDefinedUrl) throws Exception { + return ActiveMQClient.createServerLocator(externallyDefinedUrl); + } + + @Produces + @ApplicationScoped + @Identifier("externally-defined") + ArtemisCoreConsumerManager externallyDefinedConsumer( + @Identifier("externally-defined") ServerLocator externallyAddedServerLocator) throws Exception { + return new ArtemisCoreConsumerManager(externallyAddedServerLocator, "test-core-externally-defined"); + } + + @Produces + @ApplicationScoped + @Identifier("externally-defined") + public static ArtemisCoreProducerManager externallyAddedProducer( + @Identifier("externally-defined") ServerLocator externallyAddedServerLocator) + throws Exception { + return new ArtemisCoreProducerManager(externallyAddedServerLocator, "test-core-externally-defined"); + } + + BeanProducer() { + } +} diff --git a/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ServerLocatorProducer.java b/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ServerLocatorProducer.java deleted file mode 100644 index 0e129538..00000000 --- a/integration-tests/core/with-external/src/main/java/io/quarkus/it/artemis/core/withexternal/ServerLocatorProducer.java +++ /dev/null @@ -1,20 +0,0 @@ -package io.quarkus.it.artemis.core.withexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.client.ActiveMQClient; -import org.apache.activemq.artemis.api.core.client.ServerLocator; -import org.eclipse.microprofile.config.inject.ConfigProperty; - -import io.smallrye.common.annotation.Identifier; - -public class ServerLocatorProducer { - @Produces - @ApplicationScoped - @Identifier("externally-defined") - ServerLocator externallyDefinedServerLocator( - @ConfigProperty(name = "artemis.externally-defined.url") String externallyDefinedUrl) throws Exception { - return ActiveMQClient.createServerLocator(externallyDefinedUrl); - } -} diff --git a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/ArtemisHelper.java b/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/ArtemisHelper.java deleted file mode 100644 index 1ed3895f..00000000 --- a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/ArtemisHelper.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.quarkus.it.artemis.core.withexternal; - -import java.util.Random; - -import org.apache.activemq.artemis.api.core.client.ActiveMQClient; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.eclipse.microprofile.config.ConfigProvider; - -public interface ArtemisHelper { - default String createBody() { - return Integer.toString(new Random().nextInt(Integer.MAX_VALUE), 16); - } - - default ClientSession createExternallyDefinedSession() throws Exception { - String url = ConfigProvider.getConfig().getValue("artemis.externally-defined.url", String.class); - return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); - } -} diff --git a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/BaseArtemisConsumerTest.java b/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/BaseArtemisConsumerTest.java deleted file mode 100644 index 2890a7b6..00000000 --- a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/BaseArtemisConsumerTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.quarkus.it.artemis.core.withexternal; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.ClientMessage; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisConsumerTest implements ArtemisHelper { - @Test - void testExternallyDefined() throws Exception { - test(createExternallyDefinedSession(), "test-core-externally-defined", "/artemis/externally-defined"); - } - - protected void test(ClientSession session, String addressName, String endpoint) throws ActiveMQException { - String body = createBody(); - try (ClientSession autoClosedSession = session) { - ClientMessage message = autoClosedSession.createMessage(true); - message.getBodyBuffer().writeString(body); - autoClosedSession.createProducer(addressName).send(message); - } - - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - Assertions.assertEquals(body, response.getBody().asString()); - } -} diff --git a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/BaseArtemisHealthCheckTest.java b/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/BaseArtemisHealthCheckTest.java deleted file mode 100644 index f8fad99c..00000000 --- a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/BaseArtemisHealthCheckTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.quarkus.it.artemis.core.withexternal; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.common.mapper.TypeRef; -import io.restassured.response.Response; - -public abstract class BaseArtemisHealthCheckTest { - @Test - void testHealth() { - test("/q/health", Set.of("externally-defined")); - } - - @Test - void testReady() { - test("/q/health/ready", Set.of("externally-defined")); - } - - private static void test(String endpoint, Set expectedConfigurations) { - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - - Map body = response.as(new TypeRef<>() { - }); - Assertions.assertEquals("UP", body.get("status")); - - @SuppressWarnings("unchecked") - List> checks = (List>) body.get("checks"); - Assertions.assertEquals(1, checks.size()); - Map check = checks.get(0); - Assertions.assertEquals("Artemis Core health check", check.get("name")); - - @SuppressWarnings("unchecked") - Map data = (Map) check.get("data"); - Assertions.assertEquals(expectedConfigurations.size(), data.size()); - Assertions.assertEquals(expectedConfigurations, data.keySet()); - for (String namedConfiguration : expectedConfigurations) { - Assertions.assertEquals("UP", data.get(namedConfiguration)); - } - } -} diff --git a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/BaseArtemisProducerTest.java b/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/BaseArtemisProducerTest.java deleted file mode 100644 index 27dd379a..00000000 --- a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/BaseArtemisProducerTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.quarkus.it.artemis.core.withexternal; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.ClientMessage; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisProducerTest implements ArtemisHelper { - @Test - void testExternallyDefined() throws Exception { - test(createExternallyDefinedSession(), "/artemis/externally-defined", "test-core-externally-defined"); - } - - protected void test(ClientSession session, String endpoint, String queueName) throws ActiveMQException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (ClientSession autoClosedSession = session) { - session.start(); - ClientMessage message = autoClosedSession.createConsumer(queueName).receive(1000L); - message.acknowledge(); - Assertions.assertEquals(body, message.getBodyBuffer().readString()); - } - } -} diff --git a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedConsumerTest.java b/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedConsumerTest.java index 810c2900..59eb8650 100644 --- a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedConsumerTest.java +++ b/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedConsumerTest.java @@ -1,13 +1,19 @@ package io.quarkus.it.artemis.core.withexternal.embedded; -import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.core.withexternal.BaseArtemisConsumerTest; +import org.junit.jupiter.api.Test; + +import io.quarkus.it.artemis.core.common.ArtemisCoreHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest -@QuarkusTestResource(ArtemisTestResource.class) -@QuarkusTestResource(NamedOneArtemisTestResource.class) @QuarkusTestResource(ExternallyDefinedArtemisTestResource.class) -class EmbeddedConsumerTest extends BaseArtemisConsumerTest { +class EmbeddedConsumerTest extends ArtemisCoreHelper { + @Test + void testExternallyDefined() throws Exception { + sendAndVerify( + createExternallyDefinedSession("artemis.externally-defined.url"), + "test-core-externally-defined", + "/artemis/externally-defined"); + } } diff --git a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedHealthCheckTest.java b/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedHealthCheckTest.java index 9224ab85..a9cec7e1 100644 --- a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedHealthCheckTest.java +++ b/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedHealthCheckTest.java @@ -1,13 +1,23 @@ package io.quarkus.it.artemis.core.withexternal.embedded; -import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.core.withexternal.BaseArtemisHealthCheckTest; +import java.util.Set; + +import org.junit.jupiter.api.Test; + +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest -@QuarkusTestResource(ArtemisTestResource.class) -@QuarkusTestResource(NamedOneArtemisTestResource.class) @QuarkusTestResource(ExternallyDefinedArtemisTestResource.class) -class EmbeddedHealthCheckTest extends BaseArtemisHealthCheckTest { +class EmbeddedHealthCheckTest { + @Test + void testHealth() { + ArtemisHealthCheckHelper.testCore("/q/health", Set.of("externally-defined")); + } + + @Test + void testReady() { + ArtemisHealthCheckHelper.testCore("/q/health/ready", Set.of("externally-defined")); + } } diff --git a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedProducerTest.java b/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedProducerTest.java index fde2e576..9e20e4d7 100644 --- a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedProducerTest.java +++ b/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/EmbeddedProducerTest.java @@ -1,13 +1,17 @@ package io.quarkus.it.artemis.core.withexternal.embedded; -import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.core.withexternal.BaseArtemisProducerTest; +import org.junit.jupiter.api.Test; + +import io.quarkus.it.artemis.core.common.ArtemisCoreHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest -@QuarkusTestResource(ArtemisTestResource.class) -@QuarkusTestResource(NamedOneArtemisTestResource.class) @QuarkusTestResource(ExternallyDefinedArtemisTestResource.class) -class EmbeddedProducerTest extends BaseArtemisProducerTest { +class EmbeddedProducerTest extends ArtemisCoreHelper { + @Test + void testExternallyDefined() throws Exception { + receiveAndVerify("/artemis/externally-defined", createExternallyDefinedSession("artemis.externally-defined.url"), + "test-core-externally-defined"); + } } diff --git a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/NamedOneArtemisTestResource.java b/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/NamedOneArtemisTestResource.java deleted file mode 100644 index 21274a98..00000000 --- a/integration-tests/core/with-external/src/test/java/io/quarkus/it/artemis/core/withexternal/embedded/NamedOneArtemisTestResource.java +++ /dev/null @@ -1,9 +0,0 @@ -package io.quarkus.it.artemis.core.withexternal.embedded; - -import io.quarkus.artemis.test.ArtemisTestResource; - -public class NamedOneArtemisTestResource extends ArtemisTestResource { - public NamedOneArtemisTestResource() { - super("named-1"); - } -} diff --git a/integration-tests/core/without-default/pom.xml b/integration-tests/core/without-default/pom.xml index 0a593f0f..13f9f257 100644 --- a/integration-tests/core/without-default/pom.xml +++ b/integration-tests/core/without-default/pom.xml @@ -10,4 +10,17 @@ quarkus-integration-test-artemis-core-without-default Quarkus - Artemis - Integration Tests - Core - Without default configuration The Apache ActiveMQ Artemis Core integration tests without default configuration module + + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-core-common + tests + test-jar + + diff --git a/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisConsumerManager.java b/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisConsumerManager.java deleted file mode 100644 index 98edd3cc..00000000 --- a/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisConsumerManager.java +++ /dev/null @@ -1,46 +0,0 @@ -package io.quarkus.it.artemis.core.withoutdefault; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.*; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisConsumerManager { - static class Producer { - @Produces - @ApplicationScoped - @Identifier("named-1") - ArtemisConsumerManager namedOneConsumer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) - throws Exception { - return new ArtemisConsumerManager(namedOneServerLocator, "test-core-named-1"); - } - - Producer() { - } - } - - private final ClientSessionFactory sessionFactory; - private final String queueName; - - private ArtemisConsumerManager(ServerLocator serverLocator, String queueName) throws Exception { - sessionFactory = serverLocator.createSessionFactory(); - this.queueName = queueName; - } - - public String receive() { - try (ClientSession session = sessionFactory.createSession()) { - session.start(); - try (ClientConsumer consumer = session.createConsumer(queueName)) { - ClientMessage message = consumer.receive(1000L); - message.acknowledge(); - return message.getBodyBuffer().readString(); - } - } catch (ActiveMQException e) { - throw new RuntimeException("Could not receive message", e); - } - } -} diff --git a/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisEndpoint.java b/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisEndpoint.java index fb4bd6b7..e59441c2 100644 --- a/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisEndpoint.java +++ b/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisEndpoint.java @@ -1,20 +1,22 @@ package io.quarkus.it.artemis.core.withoutdefault; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import io.quarkus.it.artemis.core.common.ArtemisCoreConsumerManager; +import io.quarkus.it.artemis.core.common.ArtemisCoreProducerManager; import io.smallrye.common.annotation.Identifier; @Path("/artemis") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) public class ArtemisEndpoint { - private final ArtemisProducerManager namedOneProducer; - private final ArtemisConsumerManager namedOneConsumer; + private final ArtemisCoreProducerManager namedOneProducer; + private final ArtemisCoreConsumerManager namedOneConsumer; public ArtemisEndpoint( - @Identifier("named-1") ArtemisProducerManager namedOneProducer, - @Identifier("named-1") ArtemisConsumerManager namedOneConsumer) { + @Identifier("named-1") ArtemisCoreProducerManager namedOneProducer, + @Identifier("named-1") ArtemisCoreConsumerManager namedOneConsumer) { this.namedOneProducer = namedOneProducer; this.namedOneConsumer = namedOneConsumer; } diff --git a/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisProducerManager.java b/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisProducerManager.java deleted file mode 100644 index 4ea4d03a..00000000 --- a/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisProducerManager.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.quarkus.it.artemis.core.withoutdefault; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; - -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.*; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisProducerManager { - static class Producer { - @Produces - @ApplicationScoped - @Identifier("named-1") - public static ArtemisProducerManager namedOneProducer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) - throws Exception { - return new ArtemisProducerManager(namedOneServerLocator, "test-core-named-1"); - } - - Producer() { - } - } - - private final ClientSessionFactory sessionFactory; - private final String queueName; - - private ArtemisProducerManager(ServerLocator serverLocator, String queueName) throws Exception { - this.sessionFactory = serverLocator.createSessionFactory(); - this.queueName = queueName; - } - - public void send(String body) { - try (ClientSession session = sessionFactory.createSession()) { - ClientMessage message = session.createMessage(true); - message.getBodyBuffer().writeString(body); - try (ClientProducer producer = session.createProducer(queueName)) { - producer.send(message); - } - } catch (ActiveMQException e) { - throw new RuntimeException("Could not send message", e); - } - } -} diff --git a/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/BeanProducer.java b/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/BeanProducer.java new file mode 100644 index 00000000..eb7cce6e --- /dev/null +++ b/integration-tests/core/without-default/src/main/java/io/quarkus/it/artemis/core/withoutdefault/BeanProducer.java @@ -0,0 +1,33 @@ +package io.quarkus.it.artemis.core.withoutdefault; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; + +import org.apache.activemq.artemis.api.core.client.*; + +import io.quarkus.it.artemis.core.common.ArtemisCoreConsumerManager; +import io.quarkus.it.artemis.core.common.ArtemisCoreProducerManager; +import io.smallrye.common.annotation.Identifier; + +public class BeanProducer { + @Produces + @ApplicationScoped + @Identifier("named-1") + ArtemisCoreConsumerManager namedOneConsumer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) + throws Exception { + return new ArtemisCoreConsumerManager(namedOneServerLocator, "test-core-named-1"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + public static ArtemisCoreProducerManager namedOneProducer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ServerLocator namedOneServerLocator) + throws Exception { + return new ArtemisCoreProducerManager(namedOneServerLocator, "test-core-named-1"); + } + + BeanProducer() { + } +} diff --git a/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisHelper.java b/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisHelper.java deleted file mode 100644 index 67157dfd..00000000 --- a/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/ArtemisHelper.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.quarkus.it.artemis.core.withoutdefault; - -import java.util.Random; - -import org.apache.activemq.artemis.api.core.client.ActiveMQClient; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.eclipse.microprofile.config.ConfigProvider; - -public interface ArtemisHelper { - default String createBody() { - return Integer.toString(new Random().nextInt(Integer.MAX_VALUE), 16); - } - - default ClientSession createNamedOneSession() throws Exception { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.\"named-1\".url", String.class); - return ActiveMQClient.createServerLocator(url).createSessionFactory().createSession(); - } -} diff --git a/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisConsumerTest.java b/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisConsumerTest.java index 37c99bd8..e2ea38cd 100644 --- a/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisConsumerTest.java +++ b/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisConsumerTest.java @@ -1,30 +1,12 @@ package io.quarkus.it.artemis.core.withoutdefault; -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.ClientMessage; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; +import io.quarkus.it.artemis.core.common.ArtemisCoreHelper; -public abstract class BaseArtemisConsumerTest implements ArtemisHelper { +public abstract class BaseArtemisConsumerTest extends ArtemisCoreHelper { @Test void testNamedOne() throws Exception { - test(createNamedOneSession(), "test-core-named-1", "/artemis/named-1"); - } - - private void test(ClientSession session, String addressName, String endpoint) throws ActiveMQException { - String body = createBody(); - try (ClientSession autoClosedSession = session) { - ClientMessage message = autoClosedSession.createMessage(true); - message.getBodyBuffer().writeString(body); - autoClosedSession.createProducer(addressName).send(message); - } - - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - Assertions.assertEquals(body, response.getBody().asString()); + sendAndVerify(createNamedOneSession(), "test-core-named-1", "/artemis/named-1"); } } diff --git a/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisHealthCheckTest.java b/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisHealthCheckTest.java index 88298aa1..9f9e782c 100644 --- a/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisHealthCheckTest.java +++ b/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisHealthCheckTest.java @@ -1,47 +1,19 @@ package io.quarkus.it.artemis.core.withoutdefault; -import java.util.List; -import java.util.Map; import java.util.Set; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.common.mapper.TypeRef; -import io.restassured.response.Response; +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; public abstract class BaseArtemisHealthCheckTest { @Test void testHealth() { - test("/q/health", Set.of("named-1")); + ArtemisHealthCheckHelper.testCore("/q/health", Set.of("named-1")); } @Test void testReady() { - test("/q/health/ready", Set.of("named-1")); - } - - private static void test(String endpoint, Set expectedConfigurations) { - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - - Map body = response.as(new TypeRef<>() { - }); - Assertions.assertEquals("UP", body.get("status")); - - @SuppressWarnings("unchecked") - List> checks = (List>) body.get("checks"); - Assertions.assertEquals(1, checks.size()); - Map check = checks.get(0); - Assertions.assertEquals("Artemis Core health check", check.get("name")); - - @SuppressWarnings("unchecked") - Map data = (Map) check.get("data"); - Assertions.assertEquals(expectedConfigurations.size(), data.size()); - Assertions.assertEquals(expectedConfigurations, data.keySet()); - for (String namedConfiguration : expectedConfigurations) { - Assertions.assertEquals("UP", data.get(namedConfiguration)); - } + ArtemisHealthCheckHelper.testCore("/q/health/ready", Set.of("named-1")); } } diff --git a/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisProducerTest.java b/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisProducerTest.java index 2d9c0fcb..9f24cc91 100644 --- a/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisProducerTest.java +++ b/integration-tests/core/without-default/src/test/java/io/quarkus/it/artemis/core/withoutdefault/BaseArtemisProducerTest.java @@ -1,30 +1,12 @@ package io.quarkus.it.artemis.core.withoutdefault; -import org.apache.activemq.artemis.api.core.ActiveMQException; -import org.apache.activemq.artemis.api.core.client.ClientMessage; -import org.apache.activemq.artemis.api.core.client.ClientSession; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; +import io.quarkus.it.artemis.core.common.ArtemisCoreHelper; -public abstract class BaseArtemisProducerTest implements ArtemisHelper { +public abstract class BaseArtemisProducerTest extends ArtemisCoreHelper { @Test void testNamedOne() throws Exception { - test(createNamedOneSession(), "/artemis/named-1", "test-core-named-1"); - } - - private void test(ClientSession session, String endpoint, String queueName) throws ActiveMQException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (ClientSession autoClosedSession = session) { - session.start(); - ClientMessage message = autoClosedSession.createConsumer(queueName).receive(1000L); - message.acknowledge(); - Assertions.assertEquals(body, message.getBodyBuffer().readString()); - } + receiveAndVerify("/artemis/named-1", createNamedOneSession(), "test-core-named-1"); } } diff --git a/integration-tests/jms/common/pom.xml b/integration-tests/jms/common/pom.xml new file mode 100644 index 00000000..948f62d0 --- /dev/null +++ b/integration-tests/jms/common/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + io.quarkiverse.artemis + quarkus-integration-test-artemis-common-parent + 999-SNAPSHOT + ../../common-parent/pom.xml + + + quarkus-integration-test-artemis-jms-common + Quarkus - Artemis - Integration Tests - JMS - Common + The Apache ActiveMQ Artemis JMS integration tests common module + + + + + io.smallrye + jandex-maven-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + + + + + + + io.quarkiverse.artemis + quarkus-artemis-jms + + + io.quarkus + quarkus-junit5 + compile + + + io.rest-assured + rest-assured + compile + + + \ No newline at end of file diff --git a/integration-tests/jms/common/src/main/java/io/quarkus/it/artemis/jms/common/ArtemisJmsConsumerManager.java b/integration-tests/jms/common/src/main/java/io/quarkus/it/artemis/jms/common/ArtemisJmsConsumerManager.java new file mode 100644 index 00000000..1d96c59b --- /dev/null +++ b/integration-tests/jms/common/src/main/java/io/quarkus/it/artemis/jms/common/ArtemisJmsConsumerManager.java @@ -0,0 +1,25 @@ +package io.quarkus.it.artemis.jms.common; + +import jakarta.jms.ConnectionFactory; +import jakarta.jms.JMSConsumer; +import jakarta.jms.JMSContext; +import jakarta.jms.JMSException; + +public class ArtemisJmsConsumerManager { + private final ConnectionFactory connectionFactory; + private final String queueName; + + public ArtemisJmsConsumerManager(ConnectionFactory connectionFactory, String queueName) { + this.connectionFactory = connectionFactory; + this.queueName = queueName; + } + + public String receive() { + try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE); + JMSConsumer consumer = context.createConsumer(context.createQueue(queueName))) { + return consumer.receive(1000L).getBody(String.class); + } catch (JMSException e) { + throw new RuntimeException("Could not receive message", e); + } + } +} diff --git a/integration-tests/jms/common/src/main/java/io/quarkus/it/artemis/jms/common/ArtemisJmsProducerManager.java b/integration-tests/jms/common/src/main/java/io/quarkus/it/artemis/jms/common/ArtemisJmsProducerManager.java new file mode 100644 index 00000000..3648d0ea --- /dev/null +++ b/integration-tests/jms/common/src/main/java/io/quarkus/it/artemis/jms/common/ArtemisJmsProducerManager.java @@ -0,0 +1,26 @@ +package io.quarkus.it.artemis.jms.common; + +import jakarta.jms.ConnectionFactory; +import jakarta.jms.JMSContext; +import jakarta.jms.JMSProducer; + +public class ArtemisJmsProducerManager { + private final ConnectionFactory connectionFactory; + private final String queueName; + + public ArtemisJmsProducerManager(ConnectionFactory connectionFactory, String queueName) { + this.connectionFactory = connectionFactory; + this.queueName = queueName; + } + + public void send(String body) { + try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE)) { + send(context, body); + } + } + + protected void send(JMSContext context, String body) { + JMSProducer producer = context.createProducer(); + producer.send(context.createQueue(queueName), body); + } +} \ No newline at end of file diff --git a/integration-tests/jms/common/src/main/java/io/quarkus/it/artemis/jms/common/ArtemisJmsXaProducerManager.java b/integration-tests/jms/common/src/main/java/io/quarkus/it/artemis/jms/common/ArtemisJmsXaProducerManager.java new file mode 100644 index 00000000..32191d70 --- /dev/null +++ b/integration-tests/jms/common/src/main/java/io/quarkus/it/artemis/jms/common/ArtemisJmsXaProducerManager.java @@ -0,0 +1,52 @@ +package io.quarkus.it.artemis.jms.common; + +import jakarta.jms.ConnectionFactory; +import jakarta.jms.XAConnectionFactory; +import jakarta.jms.XAJMSContext; +import jakarta.transaction.RollbackException; +import jakarta.transaction.Synchronization; +import jakarta.transaction.SystemException; +import jakarta.transaction.TransactionManager; + +public class ArtemisJmsXaProducerManager extends ArtemisJmsProducerManager { + + private final XAConnectionFactory xaConnectionFactory; + private final TransactionManager tm; + + /** + * This constructor exists solely for CDI ("You need to manually add a non-private no-args constructor"). + */ + @SuppressWarnings("unused") + ArtemisJmsXaProducerManager() { + this(null, null, null, null); + } + + public ArtemisJmsXaProducerManager( + ConnectionFactory connectionFactory, + XAConnectionFactory xaConnectionFactory, + TransactionManager tm, + String queueName) { + super(connectionFactory, queueName); + this.xaConnectionFactory = xaConnectionFactory; + this.tm = tm; + } + + public void sendXA(String body) throws SystemException, RollbackException { + XAJMSContext context = xaConnectionFactory.createXAContext(); + tm.getTransaction().enlistResource(context.getXAResource()); + tm.getTransaction().registerSynchronization(new Synchronization() { + @Override + public void beforeCompletion() { + } + + @Override + public void afterCompletion(int i) { + context.close(); + } + }); + send(context, body); + if (body.equals("fail")) { + tm.setRollbackOnly(); + } + } +} diff --git a/integration-tests/jms/common/src/test/java/io/quarkus/it/artemis/jms/common/ArtemisJmsHelper.java b/integration-tests/jms/common/src/test/java/io/quarkus/it/artemis/jms/common/ArtemisJmsHelper.java new file mode 100644 index 00000000..b19f0f63 --- /dev/null +++ b/integration-tests/jms/common/src/test/java/io/quarkus/it/artemis/jms/common/ArtemisJmsHelper.java @@ -0,0 +1,72 @@ +package io.quarkus.it.artemis.jms.common; + +import java.util.Random; + +import jakarta.jms.JMSConsumer; +import jakarta.jms.JMSContext; +import jakarta.jms.JMSException; +import jakarta.jms.Message; + +import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; +import org.eclipse.microprofile.config.ConfigProvider; +import org.junit.jupiter.api.Assertions; + +import io.restassured.RestAssured; +import io.restassured.response.Response; + +public class ArtemisJmsHelper { + private static final Random RANDOM = new Random(); + + public String createBody() { + return Integer.toString(RANDOM.nextInt(Integer.MAX_VALUE), 16); + } + + public JMSContext createDefaultContext() { + String url = ConfigProvider.getConfig().getValue("quarkus.artemis.url", String.class); + return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); + } + + public JMSContext createNamedOneContext() { + String url = ConfigProvider.getConfig().getValue("quarkus.artemis.\"named-1\".url", String.class); + return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); + } + + public JMSContext createExternallyDefinedContext(String urlConfigName) { + String url = ConfigProvider.getConfig().getValue(urlConfigName, String.class); + return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); + } + + public void sendAndVerify(JMSContext context, String queueName, String endpoint) { + String body = createBody(); + try (JMSContext ignored = context) { + context.createProducer().send(context.createQueue(queueName), body); + } + + Response response = RestAssured.with().get(endpoint); + Assertions.assertEquals(jakarta.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); + Assertions.assertEquals(body, response.getBody().asString()); + } + + public void receiveAndVerify(String endpoint, JMSContext context, String queueName) throws JMSException { + String body = createBody(); + Response response = RestAssured.with().body(body).post(endpoint); + Assertions.assertEquals(jakarta.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); + + try (JMSContext autoClosedContext = context) { + JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); + Message message = consumer.receive(1000L); + Assertions.assertEquals(body, message.getBody(String.class)); + } + } + + public void testRollback(String endpoint, JMSContext context, String queueName) { + Response response = RestAssured.with().body("fail").post(endpoint); + Assertions.assertEquals(jakarta.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); + + try (JMSContext autoClosedContext = context) { + JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); + Message message = consumer.receive(1000L); + Assertions.assertNull(message); + } + } +} diff --git a/integration-tests/jms/empty-config/src/main/java/io/quarkus/it/artemis/jms/empty/SomeEndpoint.java b/integration-tests/jms/empty-config/src/main/java/io/quarkus/it/artemis/jms/empty/SomeEndpoint.java index 265a354b..853487ac 100644 --- a/integration-tests/jms/empty-config/src/main/java/io/quarkus/it/artemis/jms/empty/SomeEndpoint.java +++ b/integration-tests/jms/empty-config/src/main/java/io/quarkus/it/artemis/jms/empty/SomeEndpoint.java @@ -1,7 +1,7 @@ package io.quarkus.it.artemis.jms.empty; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; @Path("/artemis") @Consumes(MediaType.TEXT_PLAIN) diff --git a/integration-tests/jms/empty-config/src/test/java/io/quarkus/it/artemis/jms/empty/BaseArtemisHealthCheckTest.java b/integration-tests/jms/empty-config/src/test/java/io/quarkus/it/artemis/jms/empty/BaseArtemisHealthCheckTest.java deleted file mode 100644 index e7d73054..00000000 --- a/integration-tests/jms/empty-config/src/test/java/io/quarkus/it/artemis/jms/empty/BaseArtemisHealthCheckTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.quarkus.it.artemis.jms.empty; - -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.common.mapper.TypeRef; -import io.restassured.response.Response; - -public abstract class BaseArtemisHealthCheckTest { - @Test - void testHealth() { - testUpAndEmpty("/q/health"); - } - - @Test - void testReady() { - testUpAndEmpty("/q/health/ready"); - } - - private static void testUpAndEmpty(String endpoint) { - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - - Map body = response.as(new TypeRef<>() { - }); - Assertions.assertEquals("UP", body.get("status")); - - @SuppressWarnings("unchecked") - List> checks = (List>) body.get("checks"); - Assertions.assertEquals(1, checks.size()); - Map check = checks.get(0); - Assertions.assertEquals("Artemis JMS health check", check.get("name")); - - @SuppressWarnings("unchecked") - Map data = (Map) check.getOrDefault("data", Map.of()); - Assertions.assertEquals(0, data.size()); - } -} diff --git a/integration-tests/jms/empty-config/src/test/java/io/quarkus/it/artemis/jms/empty/HealthCheckTest.java b/integration-tests/jms/empty-config/src/test/java/io/quarkus/it/artemis/jms/empty/HealthCheckTest.java index 20a4f037..6410dbd9 100644 --- a/integration-tests/jms/empty-config/src/test/java/io/quarkus/it/artemis/jms/empty/HealthCheckTest.java +++ b/integration-tests/jms/empty-config/src/test/java/io/quarkus/it/artemis/jms/empty/HealthCheckTest.java @@ -1,7 +1,21 @@ package io.quarkus.it.artemis.jms.empty; +import java.util.Collections; + +import org.junit.jupiter.api.Test; + +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest -class HealthCheckTest extends BaseArtemisHealthCheckTest { +class HealthCheckTest { + @Test + void testHealth() { + ArtemisHealthCheckHelper.testJms("/q/health", Collections.emptySet()); + } + + @Test + void testReady() { + ArtemisHealthCheckHelper.testJms("/q/health/ready", Collections.emptySet()); + } } diff --git a/integration-tests/jms/pom.xml b/integration-tests/jms/pom.xml index eeb9d211..dc4d6e10 100644 --- a/integration-tests/jms/pom.xml +++ b/integration-tests/jms/pom.xml @@ -13,10 +13,11 @@ pom + common empty-config with-default - with-default-change-url with-default-and-external + with-default-change-url with-external without-default @@ -34,5 +35,12 @@ io.quarkiverse.artemis quarkus-artemis-jms + + io.quarkiverse.artemis + quarkus-integration-test-artemis-common + tests + test-jar + test + diff --git a/integration-tests/jms/with-default-and-external/pom.xml b/integration-tests/jms/with-default-and-external/pom.xml index e9d7c866..52f11946 100644 --- a/integration-tests/jms/with-default-and-external/pom.xml +++ b/integration-tests/jms/with-default-and-external/pom.xml @@ -10,4 +10,18 @@ quarkus-integration-test-artemis-jms-with-default-and-external Quarkus - Artemis - Integration Tests - JMS - With default and external configuration The Apache ActiveMQ Artemis JMS integration tests with default and external configuration module + + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + tests + test-jar + test + + \ No newline at end of file diff --git a/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisConsumerManager.java b/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisConsumerManager.java deleted file mode 100644 index c6da6993..00000000 --- a/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisConsumerManager.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefaultandexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.jms.ConnectionFactory; -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisConsumerManager { - static class Producer { - @Produces - @ApplicationScoped - ArtemisConsumerManager defaultConsumerManager( - @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory connectionFactory) { - return new ArtemisConsumerManager(connectionFactory, "test-jms-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - ArtemisConsumerManager namedOneConsumerManager( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory) { - return new ArtemisConsumerManager(namedOneConnectionFactory, "test-jms-named-1"); - } - - @Produces - @ApplicationScoped - @Identifier("externally-defined") - ArtemisConsumerManager externallyDefinedManager( - @Identifier("externally-defined") ConnectionFactory namedOneConnectionFactory) { - return new ArtemisConsumerManager(namedOneConnectionFactory, "test-jms-externally-defined"); - } - - Producer() { - } - } - - private final ConnectionFactory connectionFactory; - private final String queueName; - - public ArtemisConsumerManager(ConnectionFactory connectionFactory, String queueName) { - this.connectionFactory = connectionFactory; - this.queueName = queueName; - } - - public String receive() { - try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE); - JMSConsumer consumer = context.createConsumer(context.createQueue(queueName))) { - return consumer.receive(1000L).getBody(String.class); - } catch (JMSException e) { - throw new RuntimeException("Could not receive message", e); - } - } -} diff --git a/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisEndpoint.java b/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisEndpoint.java index acc45886..763b1acf 100644 --- a/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisEndpoint.java +++ b/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisEndpoint.java @@ -1,29 +1,31 @@ package io.quarkus.it.artemis.jms.withdefaultandexternal; -import javax.transaction.Transactional; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.transaction.Transactional; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import io.quarkus.it.artemis.jms.common.ArtemisJmsConsumerManager; +import io.quarkus.it.artemis.jms.common.ArtemisJmsXaProducerManager; import io.smallrye.common.annotation.Identifier; @Path("/artemis") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) public class ArtemisEndpoint { - private final ArtemisProducerManager defaultProducer; - private final ArtemisConsumerManager defaultConsumer; - private final ArtemisProducerManager namedOneProducer; - private final ArtemisConsumerManager namedOneConsumer; - private final ArtemisProducerManager externallyDefinedProducer; - private final ArtemisConsumerManager externallyDefinedConsumer; + private final ArtemisJmsXaProducerManager defaultProducer; + private final ArtemisJmsConsumerManager defaultConsumer; + private final ArtemisJmsXaProducerManager namedOneProducer; + private final ArtemisJmsConsumerManager namedOneConsumer; + private final ArtemisJmsXaProducerManager externallyDefinedProducer; + private final ArtemisJmsConsumerManager externallyDefinedConsumer; public ArtemisEndpoint( - ArtemisProducerManager defaultProducer, - ArtemisConsumerManager defaultConsumer, - @Identifier("named-1") ArtemisProducerManager namedOneProducer, - @Identifier("named-1") ArtemisConsumerManager namedOneConsumer, - @Identifier("externally-defined") ArtemisProducerManager externallyDefinedProducer, - @Identifier("externally-defined") ArtemisConsumerManager externallyDefinedConsumer) { + ArtemisJmsXaProducerManager defaultProducer, + ArtemisJmsConsumerManager defaultConsumer, + @Identifier("named-1") ArtemisJmsXaProducerManager namedOneProducer, + @Identifier("named-1") ArtemisJmsConsumerManager namedOneConsumer, + @Identifier("externally-defined") ArtemisJmsXaProducerManager externallyDefinedProducer, + @Identifier("externally-defined") ArtemisJmsConsumerManager externallyDefinedConsumer) { this.defaultProducer = defaultProducer; this.defaultConsumer = defaultConsumer; this.namedOneProducer = namedOneProducer; diff --git a/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisProducerManager.java b/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisProducerManager.java deleted file mode 100644 index 22e1d842..00000000 --- a/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisProducerManager.java +++ /dev/null @@ -1,101 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefaultandexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.jms.*; -import javax.transaction.RollbackException; -import javax.transaction.Synchronization; -import javax.transaction.SystemException; -import javax.transaction.TransactionManager; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisProducerManager { - static class Producer { - @Produces - @ApplicationScoped - public ArtemisProducerManager defaultProducer( - @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory defaultConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") XAConnectionFactory defaultXaConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { - return new ArtemisProducerManager(defaultConnectionFactory, defaultXaConnectionFactory, tm, "test-jms-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - public ArtemisProducerManager namedOneProducer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") XAConnectionFactory namedOneXaConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { - return new ArtemisProducerManager( - namedOneConnectionFactory, - namedOneXaConnectionFactory, - tm, - "test-jms-named-1"); - } - - @Produces - @ApplicationScoped - @Identifier("externally-defined") - public ArtemisProducerManager externallyDefinedProducer( - @Identifier("externally-defined") ConnectionFactory externallyDefinedConnectionFactory, - @Identifier("externally-defined") XAConnectionFactory externallyDefinedXaConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { - return new ArtemisProducerManager( - externallyDefinedConnectionFactory, - externallyDefinedXaConnectionFactory, - tm, - "test-jms-externally-defined"); - } - - Producer() { - } - } - - private final ConnectionFactory connectionFactory; - private final XAConnectionFactory xaConnectionFactory; - private final TransactionManager tm; - private final String queueName; - - public ArtemisProducerManager( - ConnectionFactory connectionFactory, - XAConnectionFactory xaConnectionFactory, - TransactionManager tm, - String queueName) { - this.connectionFactory = connectionFactory; - this.xaConnectionFactory = xaConnectionFactory; - this.tm = tm; - this.queueName = queueName; - } - - private void send(JMSContext context, String body) { - JMSProducer producer = context.createProducer(); - producer.send(context.createQueue(queueName), body); - } - - public void send(String body) { - try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE)) { - send(context, body); - } - } - - public void sendXA(String body) throws SystemException, RollbackException { - XAJMSContext context = xaConnectionFactory.createXAContext(); - tm.getTransaction().enlistResource(context.getXAResource()); - tm.getTransaction().registerSynchronization(new Synchronization() { - @Override - public void beforeCompletion() { - } - - @Override - public void afterCompletion(int i) { - context.close(); - } - }); - send(context, body); - if (body.equals("fail")) { - tm.setRollbackOnly(); - } - } -} diff --git a/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BeanProducer.java b/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BeanProducer.java new file mode 100644 index 00000000..1aff8189 --- /dev/null +++ b/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BeanProducer.java @@ -0,0 +1,90 @@ +package io.quarkus.it.artemis.jms.withdefaultandexternal; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; +import jakarta.enterprise.inject.Typed; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.XAConnectionFactory; +import jakarta.transaction.TransactionManager; + +import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; +import org.eclipse.microprofile.config.inject.ConfigProperty; + +import io.quarkus.it.artemis.jms.common.ArtemisJmsConsumerManager; +import io.quarkus.it.artemis.jms.common.ArtemisJmsXaProducerManager; +import io.smallrye.common.annotation.Identifier; + +public class BeanProducer { + @Produces + @Typed({ XAConnectionFactory.class, ConnectionFactory.class }) + @ApplicationScoped + @Identifier("externally-defined") + ActiveMQConnectionFactory externallyDefinedConnectionFactory( + @ConfigProperty(name = "artemis.externally-defined.url") String externallyDefinedUrl) { + return new ActiveMQConnectionFactory(externallyDefinedUrl); + } + + @Produces + @ApplicationScoped + ArtemisJmsConsumerManager defaultConsumerManager( + @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory connectionFactory) { + return new ArtemisJmsConsumerManager(connectionFactory, "test-jms-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + ArtemisJmsConsumerManager namedOneConsumerManager( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory) { + return new ArtemisJmsConsumerManager(namedOneConnectionFactory, "test-jms-named-1"); + } + + @Produces + @ApplicationScoped + @Identifier("externally-defined") + ArtemisJmsConsumerManager externallyDefinedConsumer( + @Identifier("externally-defined") ConnectionFactory namedOneConnectionFactory) { + return new ArtemisJmsConsumerManager(namedOneConnectionFactory, "test-jms-externally-defined"); + } + + @Produces + @ApplicationScoped + public ArtemisJmsXaProducerManager defaultProducer( + @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory defaultConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") XAConnectionFactory defaultXaConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { + return new ArtemisJmsXaProducerManager(defaultConnectionFactory, defaultXaConnectionFactory, tm, + "test-jms-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + public ArtemisJmsXaProducerManager namedOneProducer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") XAConnectionFactory namedOneXaConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { + return new ArtemisJmsXaProducerManager( + namedOneConnectionFactory, + namedOneXaConnectionFactory, + tm, + "test-jms-named-1"); + } + + @Produces + @ApplicationScoped + @Identifier("externally-defined") + public ArtemisJmsXaProducerManager externallyDefinedProducer( + @Identifier("externally-defined") ConnectionFactory externallyDefinedConnectionFactory, + @Identifier("externally-defined") XAConnectionFactory externallyDefinedXaConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { + return new ArtemisJmsXaProducerManager( + externallyDefinedConnectionFactory, + externallyDefinedXaConnectionFactory, + tm, + "test-jms-externally-defined"); + } + + BeanProducer() { + } +} diff --git a/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ConnectionFactoryProducer.java b/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ConnectionFactoryProducer.java deleted file mode 100644 index 87761e06..00000000 --- a/integration-tests/jms/with-default-and-external/src/main/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ConnectionFactoryProducer.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefaultandexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.enterprise.inject.Typed; -import javax.jms.ConnectionFactory; -import javax.jms.XAConnectionFactory; - -import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; -import org.eclipse.microprofile.config.inject.ConfigProperty; - -import io.smallrye.common.annotation.Identifier; - -public class ConnectionFactoryProducer { - @Produces - @Typed({ XAConnectionFactory.class, ConnectionFactory.class }) - @ApplicationScoped - @Identifier("externally-defined") - ActiveMQConnectionFactory externallyDefinedConnectionFactory( - @ConfigProperty(name = "artemis.externally-defined.url") String externallyDefinedUrl) { - return new ActiveMQConnectionFactory(externallyDefinedUrl, null, null); - } -} diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisHealthCheckHelper.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisHealthCheckHelper.java deleted file mode 100644 index 5d18c963..00000000 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisHealthCheckHelper.java +++ /dev/null @@ -1,37 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefaultandexternal; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.junit.jupiter.api.Assertions; - -import io.restassured.RestAssured; -import io.restassured.common.mapper.TypeRef; -import io.restassured.response.Response; - -public abstract class ArtemisHealthCheckHelper { - - public static void test(String endpoint, Set expectedConfigurations) { - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - - Map body = response.as(new TypeRef<>() { - }); - Assertions.assertEquals("UP", body.get("status")); - - @SuppressWarnings("unchecked") - List> checks = (List>) body.get("checks"); - Assertions.assertEquals(1, checks.size()); - Map check = checks.get(0); - Assertions.assertEquals("Artemis JMS health check", check.get("name")); - - @SuppressWarnings("unchecked") - Map data = (Map) check.get("data"); - Assertions.assertEquals(expectedConfigurations.size(), data.size()); - Assertions.assertEquals(expectedConfigurations, data.keySet()); - for (String namedConfiguration : expectedConfigurations) { - Assertions.assertEquals("UP", data.get(namedConfiguration)); - } - } -} diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisHelper.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisHelper.java deleted file mode 100644 index 01a9679e..00000000 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/ArtemisHelper.java +++ /dev/null @@ -1,25 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefaultandexternal; - -import java.util.Random; - -import javax.jms.JMSContext; - -import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; -import org.eclipse.microprofile.config.ConfigProvider; - -public interface ArtemisHelper { - - default String createBody() { - return Integer.toString(new Random().nextInt(Integer.MAX_VALUE), 16); - } - - default JMSContext createDefaultContext() { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.url", String.class); - return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); - } - - default JMSContext createNamedOneContext() { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.\"named-1\".url", String.class); - return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); - } -} diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BaseArtemisConsumerTest.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BaseArtemisConsumerTest.java index 9592fc72..423ed491 100644 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BaseArtemisConsumerTest.java +++ b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BaseArtemisConsumerTest.java @@ -1,32 +1,17 @@ package io.quarkus.it.artemis.jms.withdefaultandexternal; -import javax.jms.JMSContext; - -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; +import io.quarkus.it.artemis.jms.common.ArtemisJmsHelper; -public abstract class BaseArtemisConsumerTest implements ArtemisHelper { +public abstract class BaseArtemisConsumerTest extends ArtemisJmsHelper { @Test void testDefault() { - test(createDefaultContext(), "test-jms-default", "/artemis"); + sendAndVerify(createDefaultContext(), "test-jms-default", "/artemis"); } @Test void testNamedOne() { - test(createNamedOneContext(), "test-jms-named-1", "/artemis/named-1"); - } - - protected void test(JMSContext context, String queueName, String endpoint) { - String body = createBody(); - try (JMSContext ignored = context) { - context.createProducer().send(context.createQueue(queueName), body); - } - - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - Assertions.assertEquals(body, response.getBody().asString()); + sendAndVerify(createNamedOneContext(), "test-jms-named-1", "/artemis/named-1"); } } diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BaseArtemisProducerTest.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BaseArtemisProducerTest.java index 8488ef2d..0b90aece 100644 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BaseArtemisProducerTest.java +++ b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BaseArtemisProducerTest.java @@ -1,36 +1,37 @@ package io.quarkus.it.artemis.jms.withdefaultandexternal; -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; -import javax.jms.Message; - -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; +import io.quarkus.it.artemis.jms.common.ArtemisJmsHelper; -abstract public class BaseArtemisProducerTest implements ArtemisHelper { +abstract public class BaseArtemisProducerTest extends ArtemisJmsHelper { @Test void testDefault() throws Exception { - test(createDefaultContext(), "test-jms-default", "/artemis"); + receiveAndVerify("/artemis", createDefaultContext(), "test-jms-default"); } @Test void testNamedOne() throws Exception { - test(createNamedOneContext(), "test-jms-named-1", "/artemis/named-1"); + receiveAndVerify("/artemis/named-1", createNamedOneContext(), "test-jms-named-1"); + } + + @Test + void testXADefault() throws Exception { + receiveAndVerify("/artemis/xa", createDefaultContext(), "test-jms-default"); + } + + @Test + void testXANamedOne() throws Exception { + receiveAndVerify("/artemis/named-1/xa", createNamedOneContext(), "test-jms-named-1"); } - protected void test(JMSContext context, String queueName, String endpoint) throws JMSException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); + @Test + void testRollbackDefault() { + testRollback("/artemis/xa", createDefaultContext(), "test-jms-default"); + } - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertEquals(body, message.getBody(String.class)); - } + @Test + void testRollbackNamedOne() { + testRollback("/artemis/named-1/xa", createNamedOneContext(), "test-jms-named-1"); } } diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BaseArtemisProducerXATest.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BaseArtemisProducerXATest.java deleted file mode 100644 index 5c5e338c..00000000 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/BaseArtemisProducerXATest.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefaultandexternal; - -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; -import javax.jms.Message; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisProducerXATest extends BaseArtemisProducerTest { - @Test - void testXADefault() throws Exception { - testXA(createDefaultContext(), "/artemis/xa", "test-jms-default"); - } - - @Test - void testXANamedOne() throws Exception { - testXA(createNamedOneContext(), "/artemis/named-1/xa", "test-jms-named-1"); - } - - protected void testXA(JMSContext context, String endpoint, String queueName) throws JMSException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertEquals(body, message.getBody(String.class)); - } - } - - @Test - public void testRollbackDefault() { - testRollback(createDefaultContext(), "/artemis/xa", "test-jms-default"); - } - - @Test - public void testRollbackNamedOne() { - testRollback(createNamedOneContext(), "/artemis/named-1/xa", "test-jms-named-1"); - } - - protected void testRollback(JMSContext context, String endpoint, String queueName) { - Response response = RestAssured.with().body("fail").post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertNull(message); - } - } -} diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/devservices/DevservicesHealthCheckTest.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/devservices/DevservicesHealthCheckTest.java index 73e19819..8a928855 100644 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/devservices/DevservicesHealthCheckTest.java +++ b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/devservices/DevservicesHealthCheckTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; -import io.quarkus.it.artemis.jms.withdefaultandexternal.ArtemisHealthCheckHelper; +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.TestProfile; @@ -13,11 +13,11 @@ class DevservicesHealthCheckTest { @Test void testHealth() { - ArtemisHealthCheckHelper.test("/q/health", Set.of("", "named-1")); + ArtemisHealthCheckHelper.testJms("/q/health", Set.of("", "named-1")); } @Test void testReady() { - ArtemisHealthCheckHelper.test("/q/health/ready", Set.of("", "named-1")); + ArtemisHealthCheckHelper.testJms("/q/health/ready", Set.of("", "named-1")); } } diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/devservices/DevservicesProducerXATest.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/devservices/DevservicesProducerXATest.java deleted file mode 100644 index 6f655882..00000000 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/devservices/DevservicesProducerXATest.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefaultandexternal.devservices; - -import io.quarkus.it.artemis.jms.withdefaultandexternal.BaseArtemisProducerXATest; -import io.quarkus.test.junit.QuarkusTest; -import io.quarkus.test.junit.TestProfile; - -@QuarkusTest -@TestProfile(DevservicesArtemisEnabled.class) -class DevservicesProducerXATest extends BaseArtemisProducerXATest { -} diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedConsumerTest.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedConsumerTest.java index 25cab3d4..6ad99caa 100644 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedConsumerTest.java +++ b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedConsumerTest.java @@ -1,9 +1,5 @@ package io.quarkus.it.artemis.jms.withdefaultandexternal.embedded; -import javax.jms.JMSContext; - -import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; -import org.eclipse.microprofile.config.ConfigProvider; import org.junit.jupiter.api.Test; import io.quarkus.artemis.test.ArtemisTestResource; @@ -18,11 +14,9 @@ class EmbeddedConsumerTest extends BaseArtemisConsumerTest { @Test void testExternallyDefined() { - test(createExternallyDefinedContext(), "test-jms-externally-defined", "/artemis/externally-defined"); - } - - private JMSContext createExternallyDefinedContext() { - String url = ConfigProvider.getConfig().getValue("artemis.externally-defined.url", String.class); - return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); + sendAndVerify( + createExternallyDefinedContext("artemis.externally-defined.url"), + "test-jms-externally-defined", + "/artemis/externally-defined"); } } diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedHealthCheckTest.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedHealthCheckTest.java index 028473fc..0e5dca64 100644 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedHealthCheckTest.java +++ b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedHealthCheckTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.jms.withdefaultandexternal.ArtemisHealthCheckHelper; +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @@ -13,14 +13,14 @@ @QuarkusTestResource(ArtemisTestResource.class) @QuarkusTestResource(NamedOneArtemisTestResource.class) @QuarkusTestResource(ExternallyDefinedArtemisTestResource.class) -class EmbeddedHealthCheckTest extends ArtemisHealthCheckHelper { +class EmbeddedHealthCheckTest { @Test void testHealth() { - ArtemisHealthCheckHelper.test("/q/health", Set.of("", "named-1", "externally-defined")); + ArtemisHealthCheckHelper.testJms("/q/health", Set.of("", "named-1", "externally-defined")); } @Test void testReady() { - ArtemisHealthCheckHelper.test("/q/health/ready", Set.of("", "named-1", "externally-defined")); + ArtemisHealthCheckHelper.testJms("/q/health/ready", Set.of("", "named-1", "externally-defined")); } } diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerITCase.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerITCase.java index c71cff3e..24955259 100644 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerITCase.java +++ b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerITCase.java @@ -4,5 +4,4 @@ @QuarkusIntegrationTest class EmbeddedProducerITCase extends EmbeddedProducerTest { - } diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerTest.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerTest.java index a7b004ba..e6aa25cf 100644 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerTest.java +++ b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerTest.java @@ -1,9 +1,5 @@ package io.quarkus.it.artemis.jms.withdefaultandexternal.embedded; -import javax.jms.JMSContext; - -import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; -import org.eclipse.microprofile.config.ConfigProvider; import org.junit.jupiter.api.Test; import io.quarkus.artemis.test.ArtemisTestResource; @@ -18,11 +14,9 @@ class EmbeddedProducerTest extends BaseArtemisProducerTest { @Test void testExternallyDefined() throws Exception { - test(createExternallyDefinedContext(), "test-jms-externally-defined", "/artemis/externally-defined"); - } - - private JMSContext createExternallyDefinedContext() { - String url = ConfigProvider.getConfig().getValue("artemis.externally-defined.url", String.class); - return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); + receiveAndVerify( + "/artemis/externally-defined", + createExternallyDefinedContext("artemis.externally-defined.url"), + "test-jms-externally-defined"); } } diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerXAITCase.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerXAITCase.java deleted file mode 100644 index 8a6cbd13..00000000 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerXAITCase.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefaultandexternal.embedded; - -import io.quarkus.test.junit.QuarkusIntegrationTest; - -@QuarkusIntegrationTest -class EmbeddedProducerXAITCase extends EmbeddedProducerXATest { -} diff --git a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerXATest.java b/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerXATest.java deleted file mode 100644 index 6efebd5b..00000000 --- a/integration-tests/jms/with-default-and-external/src/test/java/io/quarkus/it/artemis/jms/withdefaultandexternal/embedded/EmbeddedProducerXATest.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefaultandexternal.embedded; - -import javax.jms.JMSContext; - -import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; -import org.eclipse.microprofile.config.ConfigProvider; -import org.junit.jupiter.api.Test; - -import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.jms.withdefaultandexternal.BaseArtemisProducerXATest; -import io.quarkus.test.common.QuarkusTestResource; -import io.quarkus.test.junit.QuarkusTest; - -@QuarkusTest -@QuarkusTestResource(ArtemisTestResource.class) -@QuarkusTestResource(NamedOneArtemisTestResource.class) -@QuarkusTestResource(ExternallyDefinedArtemisTestResource.class) -class EmbeddedProducerXATest extends BaseArtemisProducerXATest { - @Test - void testXAExternallyDefined() throws Exception { - testXA(createExternallyDefinedContext(), "/artemis/externally-defined/xa", "test-jms-externally-defined"); - } - - @Test - void testRollbackExternallyDefined() { - testRollback(createNamedOneContext(), "/artemis/externally-defined/xa", "test-jms-externally-defined"); - } - - private JMSContext createExternallyDefinedContext() { - String url = ConfigProvider.getConfig().getValue("artemis.externally-defined.url", String.class); - return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); - } -} diff --git a/integration-tests/jms/with-default-change-url/pom.xml b/integration-tests/jms/with-default-change-url/pom.xml index 1e231959..d2cfbab1 100644 --- a/integration-tests/jms/with-default-change-url/pom.xml +++ b/integration-tests/jms/with-default-change-url/pom.xml @@ -10,4 +10,18 @@ quarkus-integration-test-artemis-jms-with-default-change-url Quarkus - Artemis - Integration Tests - JMS - With default change url configuration The Apache ActiveMQ Artemis JMS integration tests with default change url configuration module + + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + tests + test-jar + test + + diff --git a/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisConsumerManager.java b/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisConsumerManager.java deleted file mode 100644 index 6f64b97c..00000000 --- a/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisConsumerManager.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.changeurl; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.jms.ConnectionFactory; -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisConsumerManager { - static class Producer { - @Produces - @ApplicationScoped - ArtemisConsumerManager defaultConsumerManager( - @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory connectionFactory) { - return new ArtemisConsumerManager(connectionFactory, "test-jms-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - ArtemisConsumerManager namedOneConsumerManager( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory) { - return new ArtemisConsumerManager(namedOneConnectionFactory, "test-jms-named-1"); - } - - Producer() { - } - } - - private final ConnectionFactory connectionFactory; - private final String queueName; - - public ArtemisConsumerManager(ConnectionFactory connectionFactory, String queueName) { - this.connectionFactory = connectionFactory; - this.queueName = queueName; - } - - public String receive() { - try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE); - JMSConsumer consumer = context.createConsumer(context.createQueue(queueName))) { - return consumer.receive(1000L).getBody(String.class); - } catch (JMSException e) { - throw new RuntimeException("Could not receive message", e); - } - } -} diff --git a/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisEndpoint.java b/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisEndpoint.java index c4dff15e..741de851 100644 --- a/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisEndpoint.java +++ b/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisEndpoint.java @@ -1,25 +1,27 @@ package io.quarkus.it.artemis.jms.withdefault.changeurl; -import javax.transaction.Transactional; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.transaction.Transactional; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import io.quarkus.it.artemis.jms.common.ArtemisJmsConsumerManager; +import io.quarkus.it.artemis.jms.common.ArtemisJmsXaProducerManager; import io.smallrye.common.annotation.Identifier; @Path("/artemis") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) public class ArtemisEndpoint { - private final ArtemisProducerManager defaultProducer; - private final ArtemisConsumerManager defaultConsumer; - private final ArtemisProducerManager namedOneProducer; - private final ArtemisConsumerManager namedOneConsumer; + private final ArtemisJmsXaProducerManager defaultProducer; + private final ArtemisJmsConsumerManager defaultConsumer; + private final ArtemisJmsXaProducerManager namedOneProducer; + private final ArtemisJmsConsumerManager namedOneConsumer; public ArtemisEndpoint( - ArtemisProducerManager defaultProducer, - ArtemisConsumerManager defaultConsumer, - @Identifier("named-1") ArtemisProducerManager namedOneProducer, - @Identifier("named-1") ArtemisConsumerManager namedOneConsumer) { + ArtemisJmsXaProducerManager defaultProducer, + ArtemisJmsConsumerManager defaultConsumer, + @Identifier("named-1") ArtemisJmsXaProducerManager namedOneProducer, + @Identifier("named-1") ArtemisJmsConsumerManager namedOneConsumer) { this.defaultProducer = defaultProducer; this.defaultConsumer = defaultConsumer; this.namedOneProducer = namedOneProducer; diff --git a/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisProducerManager.java b/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisProducerManager.java deleted file mode 100644 index 41ce57bd..00000000 --- a/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisProducerManager.java +++ /dev/null @@ -1,87 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.changeurl; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.jms.*; -import javax.transaction.RollbackException; -import javax.transaction.Synchronization; -import javax.transaction.SystemException; -import javax.transaction.TransactionManager; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisProducerManager { - static class Producer { - @Produces - @ApplicationScoped - ArtemisProducerManager defaultProducer( - @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory defaultConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") XAConnectionFactory defaultXaConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { - return new ArtemisProducerManager(defaultConnectionFactory, defaultXaConnectionFactory, tm, "test-jms-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - ArtemisProducerManager namedOneProducer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") XAConnectionFactory namedOneXaConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { - return new ArtemisProducerManager( - namedOneConnectionFactory, - namedOneXaConnectionFactory, - tm, - "test-jms-named-1"); - } - - Producer() { - } - } - - private final ConnectionFactory connectionFactory; - private final XAConnectionFactory xaConnectionFactory; - private final TransactionManager tm; - private final String queueName; - - private ArtemisProducerManager( - ConnectionFactory connectionFactory, - XAConnectionFactory xaConnectionFactory, - TransactionManager tm, - String queueName) { - this.connectionFactory = connectionFactory; - this.xaConnectionFactory = xaConnectionFactory; - this.tm = tm; - this.queueName = queueName; - } - - private void send(JMSContext context, String body) { - JMSProducer producer = context.createProducer(); - producer.send(context.createQueue(queueName), body); - } - - public void send(String body) { - try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE)) { - send(context, body); - } - } - - public void sendXA(String body) throws SystemException, RollbackException { - XAJMSContext context = xaConnectionFactory.createXAContext(); - tm.getTransaction().enlistResource(context.getXAResource()); - tm.getTransaction().registerSynchronization(new Synchronization() { - @Override - public void beforeCompletion() { - } - - @Override - public void afterCompletion(int i) { - context.close(); - } - }); - send(context, body); - if (body.equals("fail")) { - tm.setRollbackOnly(); - } - } -} diff --git a/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BeanProducer.java b/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BeanProducer.java new file mode 100644 index 00000000..16d78bdc --- /dev/null +++ b/integration-tests/jms/with-default-change-url/src/main/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BeanProducer.java @@ -0,0 +1,56 @@ +package io.quarkus.it.artemis.jms.withdefault.changeurl; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.XAConnectionFactory; +import jakarta.transaction.TransactionManager; + +import io.quarkus.it.artemis.jms.common.ArtemisJmsConsumerManager; +import io.quarkus.it.artemis.jms.common.ArtemisJmsXaProducerManager; +import io.smallrye.common.annotation.Identifier; + +public class BeanProducer { + @Produces + @ApplicationScoped + ArtemisJmsConsumerManager defaultConsumerManager( + @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory connectionFactory) { + return new ArtemisJmsConsumerManager(connectionFactory, "test-jms-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + ArtemisJmsConsumerManager namedOneConsumerManager( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory) { + return new ArtemisJmsConsumerManager(namedOneConnectionFactory, "test-jms-named-1"); + } + + @Produces + @ApplicationScoped + ArtemisJmsXaProducerManager defaultProducer( + @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory defaultConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") XAConnectionFactory defaultXaConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { + return new ArtemisJmsXaProducerManager(defaultConnectionFactory, defaultXaConnectionFactory, tm, + "test-jms-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + ArtemisJmsXaProducerManager namedOneProducer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") XAConnectionFactory namedOneXaConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { + return new ArtemisJmsXaProducerManager( + namedOneConnectionFactory, + namedOneXaConnectionFactory, + tm, + "test-jms-named-1"); + } + + BeanProducer() { + } + +} diff --git a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisHelper.java b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisHelper.java deleted file mode 100644 index 11299636..00000000 --- a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/ArtemisHelper.java +++ /dev/null @@ -1,25 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.changeurl; - -import java.util.Random; - -import javax.jms.JMSContext; - -import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; -import org.eclipse.microprofile.config.ConfigProvider; - -public interface ArtemisHelper { - - default String createBody() { - return Integer.toString(new Random().nextInt(Integer.MAX_VALUE), 16); - } - - default JMSContext createDefaultContext() { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.url", String.class); - return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); - } - - default JMSContext createNamedOnContext() { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.\"named-1\".url", String.class); - return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); - } -} diff --git a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisConsumerTest.java b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisConsumerTest.java deleted file mode 100644 index b9b621dc..00000000 --- a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisConsumerTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.changeurl; - -import javax.jms.JMSContext; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisConsumerTest implements ArtemisHelper { - @Test - void testDefault() { - test(createDefaultContext(), "test-jms-default", "/artemis"); - } - - @Test - void testNamedOne() { - test(createNamedOnContext(), "test-jms-named-1", "/artemis/named-1"); - } - - private void test(JMSContext context, String queueName, String endpoint) { - String body = createBody(); - try (JMSContext ignored = context) { - context.createProducer().send(context.createQueue(queueName), body); - } - - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - Assertions.assertEquals(body, response.getBody().asString()); - } -} diff --git a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisHealthCheckTest.java b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisHealthCheckTest.java deleted file mode 100644 index 209f5a63..00000000 --- a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisHealthCheckTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.changeurl; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.common.mapper.TypeRef; -import io.restassured.response.Response; - -public abstract class BaseArtemisHealthCheckTest { - @Test - void testHealth() { - test("/q/health", Set.of("", "named-1")); - } - - @Test - void testReady() { - test("/q/health/ready", Set.of("", "named-1")); - } - - private static void test(String endpoint, Set expectedConfigurations) { - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - - Map body = response.as(new TypeRef<>() { - }); - Assertions.assertEquals("UP", body.get("status")); - - @SuppressWarnings("unchecked") - List> checks = (List>) body.get("checks"); - Assertions.assertEquals(1, checks.size()); - Map check = checks.get(0); - Assertions.assertEquals("Artemis JMS health check", check.get("name")); - - @SuppressWarnings("unchecked") - Map data = (Map) check.get("data"); - Assertions.assertEquals(expectedConfigurations.size(), data.size()); - Assertions.assertEquals(expectedConfigurations, data.keySet()); - for (String namedConfiguration : expectedConfigurations) { - Assertions.assertEquals("UP", data.get(namedConfiguration)); - } - } -} \ No newline at end of file diff --git a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisProducerTest.java b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisProducerTest.java deleted file mode 100644 index c1aa30cc..00000000 --- a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisProducerTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.changeurl; - -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; -import javax.jms.Message; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -abstract public class BaseArtemisProducerTest implements ArtemisHelper { - @Test - void testDefault() throws Exception { - test(createDefaultContext(), "/artemis", "test-jms-default"); - } - - @Test - void testNamedOne() throws Exception { - test(createNamedOnContext(), "/artemis/named-1", "test-jms-named-1"); - } - - private void test(JMSContext context, String endpoint, String queueName) throws JMSException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertEquals(body, message.getBody(String.class)); - } - } -} diff --git a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisProducerXATest.java b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisProducerXATest.java deleted file mode 100644 index e4474726..00000000 --- a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/BaseArtemisProducerXATest.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.changeurl; - -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; -import javax.jms.Message; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisProducerXATest extends BaseArtemisProducerTest { - @Test - void testXADefault() throws Exception { - testXA(createDefaultContext(), "/artemis/xa", "test-jms-default"); - } - - @Test - void testXANamedOne() throws Exception { - testXA(createNamedOnContext(), "/artemis/named-1/xa", "test-jms-named-1"); - } - - private void testXA(JMSContext context, String endpoint, String queueName) throws JMSException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertEquals(body, message.getBody(String.class)); - } - } - - @Test - public void testRollbackDefault() { - testRollback(createDefaultContext(), "/artemis/xa", "test-jms-default"); - } - - @Test - public void testRollbackNamedOne() { - testRollback(createNamedOnContext(), "/artemis/named-1/xa", "test-jms-named-1"); - } - - private void testRollback(JMSContext context, String endpoint, String queueName) { - Response response = RestAssured.with().body("fail").post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertNull(message); - } - } -} diff --git a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedConsumerTest.java b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedConsumerTest.java index d63e7cb7..be6e89c8 100644 --- a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedConsumerTest.java +++ b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedConsumerTest.java @@ -1,12 +1,23 @@ package io.quarkus.it.artemis.jms.withdefault.changeurl.embedded; +import org.junit.jupiter.api.Test; + import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.jms.withdefault.changeurl.BaseArtemisConsumerTest; +import io.quarkus.it.artemis.jms.common.ArtemisJmsHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest @QuarkusTestResource(ArtemisTestResource.class) @QuarkusTestResource(NamedOneArtemisTestResource.class) -class EmbeddedConsumerTest extends BaseArtemisConsumerTest { +class EmbeddedConsumerTest extends ArtemisJmsHelper { + @Test + void testDefault() { + sendAndVerify(createDefaultContext(), "test-jms-default", "/artemis"); + } + + @Test + void testNamedOne() { + sendAndVerify(createNamedOneContext(), "test-jms-named-1", "/artemis/named-1"); + } } diff --git a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedHealthCheckTest.java b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedHealthCheckTest.java index 132eb6da..ebb1f1f3 100644 --- a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedHealthCheckTest.java +++ b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedHealthCheckTest.java @@ -1,12 +1,25 @@ package io.quarkus.it.artemis.jms.withdefault.changeurl.embedded; +import java.util.Set; + +import org.junit.jupiter.api.Test; + import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.jms.withdefault.changeurl.BaseArtemisHealthCheckTest; +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest @QuarkusTestResource(ArtemisTestResource.class) @QuarkusTestResource(NamedOneArtemisTestResource.class) -class EmbeddedHealthCheckTest extends BaseArtemisHealthCheckTest { +class EmbeddedHealthCheckTest { + @Test + void testHealth() { + ArtemisHealthCheckHelper.testJms("/q/health", Set.of("", "named-1")); + } + + @Test + void testReady() { + ArtemisHealthCheckHelper.testJms("/q/health/ready", Set.of("", "named-1")); + } } diff --git a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerITCase.java b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerITCase.java index cec65228..1bc4b1a8 100644 --- a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerITCase.java +++ b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerITCase.java @@ -4,5 +4,4 @@ @QuarkusIntegrationTest class EmbeddedProducerITCase extends EmbeddedProducerTest { - } diff --git a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerTest.java b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerTest.java index 22922564..aca0f8d4 100644 --- a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerTest.java +++ b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerTest.java @@ -1,12 +1,43 @@ package io.quarkus.it.artemis.jms.withdefault.changeurl.embedded; +import org.junit.jupiter.api.Test; + import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.jms.withdefault.changeurl.BaseArtemisProducerTest; +import io.quarkus.it.artemis.jms.common.ArtemisJmsHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest @QuarkusTestResource(ArtemisTestResource.class) @QuarkusTestResource(NamedOneArtemisTestResource.class) -class EmbeddedProducerTest extends BaseArtemisProducerTest { +class EmbeddedProducerTest extends ArtemisJmsHelper { + @Test + void testDefault() throws Exception { + receiveAndVerify("/artemis", createDefaultContext(), "test-jms-default"); + } + + @Test + void testNamedOne() throws Exception { + receiveAndVerify("/artemis/named-1", createNamedOneContext(), "test-jms-named-1"); + } + + @Test + void testXADefault() throws Exception { + receiveAndVerify("/artemis/xa", createDefaultContext(), "test-jms-default"); + } + + @Test + void testXANamedOne() throws Exception { + receiveAndVerify("/artemis/named-1/xa", createNamedOneContext(), "test-jms-named-1"); + } + + @Test + void testRollbackDefault() { + testRollback("/artemis/xa", createDefaultContext(), "test-jms-default"); + } + + @Test + void testRollbackNamedOne() { + testRollback("/artemis/named-1/xa", createNamedOneContext(), "test-jms-named-1"); + } } diff --git a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerXAITCase.java b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerXAITCase.java deleted file mode 100644 index 0ee91a87..00000000 --- a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerXAITCase.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.changeurl.embedded; - -import io.quarkus.test.junit.QuarkusIntegrationTest; - -@QuarkusIntegrationTest -class EmbeddedProducerXAITCase extends EmbeddedProducerXATest { -} diff --git a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerXATest.java b/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerXATest.java deleted file mode 100644 index 55278ce4..00000000 --- a/integration-tests/jms/with-default-change-url/src/test/java/io/quarkus/it/artemis/jms/withdefault/changeurl/embedded/EmbeddedProducerXATest.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.changeurl.embedded; - -import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.jms.withdefault.changeurl.BaseArtemisProducerXATest; -import io.quarkus.test.common.QuarkusTestResource; -import io.quarkus.test.junit.QuarkusTest; - -@QuarkusTest -@QuarkusTestResource(ArtemisTestResource.class) -@QuarkusTestResource(NamedOneArtemisTestResource.class) -class EmbeddedProducerXATest extends BaseArtemisProducerXATest { -} diff --git a/integration-tests/jms/with-default/pom.xml b/integration-tests/jms/with-default/pom.xml index cd83e4fa..b43af97b 100644 --- a/integration-tests/jms/with-default/pom.xml +++ b/integration-tests/jms/with-default/pom.xml @@ -10,4 +10,18 @@ quarkus-integration-test-artemis-jms-with-default Quarkus - Artemis - Integration Tests - JMS - With default configuration The Apache ActiveMQ Artemis JMS integration tests with default configuration module + + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + tests + test-jar + test + + diff --git a/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/ArtemisConsumerManager.java b/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/ArtemisConsumerManager.java deleted file mode 100644 index 916deffe..00000000 --- a/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/ArtemisConsumerManager.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.jms.ConnectionFactory; -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisConsumerManager { - static class Producer { - @Produces - @ApplicationScoped - ArtemisConsumerManager defaultConsumerManager( - @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory connectionFactory) { - return new ArtemisConsumerManager(connectionFactory, "test-jms-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - ArtemisConsumerManager namedOneConsumerManager( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory) { - return new ArtemisConsumerManager(namedOneConnectionFactory, "test-jms-named-1"); - } - - Producer() { - } - } - - private final ConnectionFactory connectionFactory; - private final String queueName; - - public ArtemisConsumerManager(ConnectionFactory connectionFactory, String queueName) { - this.connectionFactory = connectionFactory; - this.queueName = queueName; - } - - public String receive() { - try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE); - JMSConsumer consumer = context.createConsumer(context.createQueue(queueName))) { - return consumer.receive(1000L).getBody(String.class); - } catch (JMSException e) { - throw new RuntimeException("Could not receive message", e); - } - } -} diff --git a/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/ArtemisEndpoint.java b/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/ArtemisEndpoint.java index a34af0bb..95901d6e 100644 --- a/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/ArtemisEndpoint.java +++ b/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/ArtemisEndpoint.java @@ -1,25 +1,27 @@ package io.quarkus.it.artemis.jms.withdefault; -import javax.transaction.Transactional; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.transaction.Transactional; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import io.quarkus.it.artemis.jms.common.ArtemisJmsConsumerManager; +import io.quarkus.it.artemis.jms.common.ArtemisJmsXaProducerManager; import io.smallrye.common.annotation.Identifier; @Path("/artemis") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) public class ArtemisEndpoint { - private final ArtemisProducerManager defaultProducer; - private final ArtemisConsumerManager defaultConsumer; - private final ArtemisProducerManager namedOneProducer; - private final ArtemisConsumerManager namedOneConsumer; + private final ArtemisJmsXaProducerManager defaultProducer; + private final ArtemisJmsConsumerManager defaultConsumer; + private final ArtemisJmsXaProducerManager namedOneProducer; + private final ArtemisJmsConsumerManager namedOneConsumer; public ArtemisEndpoint( - ArtemisProducerManager defaultProducer, - ArtemisConsumerManager defaultConsumer, - @Identifier("named-1") ArtemisProducerManager namedOneProducer, - @Identifier("named-1") ArtemisConsumerManager namedOneConsumer) { + ArtemisJmsXaProducerManager defaultProducer, + ArtemisJmsConsumerManager defaultConsumer, + @Identifier("named-1") ArtemisJmsXaProducerManager namedOneProducer, + @Identifier("named-1") ArtemisJmsConsumerManager namedOneConsumer) { this.defaultProducer = defaultProducer; this.defaultConsumer = defaultConsumer; this.namedOneProducer = namedOneProducer; diff --git a/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/ArtemisProducerManager.java b/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/ArtemisProducerManager.java deleted file mode 100644 index 002e2879..00000000 --- a/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/ArtemisProducerManager.java +++ /dev/null @@ -1,87 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.jms.*; -import javax.transaction.RollbackException; -import javax.transaction.Synchronization; -import javax.transaction.SystemException; -import javax.transaction.TransactionManager; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisProducerManager { - static class Producer { - @Produces - @ApplicationScoped - ArtemisProducerManager defaultProducer( - @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory defaultConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") XAConnectionFactory defaultXaConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { - return new ArtemisProducerManager(defaultConnectionFactory, defaultXaConnectionFactory, tm, "test-jms-default"); - } - - @Produces - @ApplicationScoped - @Identifier("named-1") - ArtemisProducerManager namedOneProducer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") XAConnectionFactory namedOneXaConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { - return new ArtemisProducerManager( - namedOneConnectionFactory, - namedOneXaConnectionFactory, - tm, - "test-jms-named-1"); - } - - Producer() { - } - } - - private final ConnectionFactory connectionFactory; - private final XAConnectionFactory xaConnectionFactory; - private final TransactionManager tm; - private final String queueName; - - private ArtemisProducerManager( - ConnectionFactory connectionFactory, - XAConnectionFactory xaConnectionFactory, - TransactionManager tm, - String queueName) { - this.connectionFactory = connectionFactory; - this.xaConnectionFactory = xaConnectionFactory; - this.tm = tm; - this.queueName = queueName; - } - - private void send(JMSContext context, String body) { - JMSProducer producer = context.createProducer(); - producer.send(context.createQueue(queueName), body); - } - - public void send(String body) { - try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE)) { - send(context, body); - } - } - - public void sendXA(String body) throws SystemException, RollbackException { - XAJMSContext context = xaConnectionFactory.createXAContext(); - tm.getTransaction().enlistResource(context.getXAResource()); - tm.getTransaction().registerSynchronization(new Synchronization() { - @Override - public void beforeCompletion() { - } - - @Override - public void afterCompletion(int i) { - context.close(); - } - }); - send(context, body); - if (body.equals("fail")) { - tm.setRollbackOnly(); - } - } -} diff --git a/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/BeanProducer.java b/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/BeanProducer.java new file mode 100644 index 00000000..d4fe4103 --- /dev/null +++ b/integration-tests/jms/with-default/src/main/java/io/quarkus/it/artemis/jms/withdefault/BeanProducer.java @@ -0,0 +1,54 @@ +package io.quarkus.it.artemis.jms.withdefault; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.XAConnectionFactory; +import jakarta.transaction.TransactionManager; + +import io.quarkus.it.artemis.jms.common.ArtemisJmsConsumerManager; +import io.quarkus.it.artemis.jms.common.ArtemisJmsXaProducerManager; +import io.smallrye.common.annotation.Identifier; + +public class BeanProducer { + @Produces + @ApplicationScoped + ArtemisJmsConsumerManager defaultConsumerManager( + @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory connectionFactory) { + return new ArtemisJmsConsumerManager(connectionFactory, "test-jms-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + ArtemisJmsConsumerManager namedOneConsumerManager( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory) { + return new ArtemisJmsConsumerManager(namedOneConnectionFactory, "test-jms-named-1"); + } + + @Produces + @ApplicationScoped + ArtemisJmsXaProducerManager defaultProducer( + @SuppressWarnings("CdiInjectionPointsInspection") ConnectionFactory defaultConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") XAConnectionFactory defaultXaConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { + return new ArtemisJmsXaProducerManager(defaultConnectionFactory, defaultXaConnectionFactory, tm, "test-jms-default"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + ArtemisJmsXaProducerManager namedOneProducer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") XAConnectionFactory namedOneXaConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { + return new ArtemisJmsXaProducerManager( + namedOneConnectionFactory, + namedOneXaConnectionFactory, + tm, + "test-jms-named-1"); + } + + BeanProducer() { + } +} diff --git a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/ArtemisHelper.java b/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/ArtemisHelper.java deleted file mode 100644 index 2081b104..00000000 --- a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/ArtemisHelper.java +++ /dev/null @@ -1,25 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault; - -import java.util.Random; - -import javax.jms.JMSContext; - -import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; -import org.eclipse.microprofile.config.ConfigProvider; - -public interface ArtemisHelper { - - default String createBody() { - return Integer.toString(new Random().nextInt(Integer.MAX_VALUE), 16); - } - - default JMSContext createDefaultContext() { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.url", String.class); - return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); - } - - default JMSContext createNamedOnContext() { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.\"named-1\".url", String.class); - return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); - } -} diff --git a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisConsumerTest.java b/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisConsumerTest.java index b7ce6afa..7ba3b0d3 100644 --- a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisConsumerTest.java +++ b/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisConsumerTest.java @@ -1,32 +1,17 @@ package io.quarkus.it.artemis.jms.withdefault; -import javax.jms.JMSContext; - -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; +import io.quarkus.it.artemis.jms.common.ArtemisJmsHelper; -public abstract class BaseArtemisConsumerTest implements ArtemisHelper { +public abstract class BaseArtemisConsumerTest extends ArtemisJmsHelper { @Test void testDefault() { - test(createDefaultContext(), "test-jms-default", "/artemis"); + sendAndVerify(createDefaultContext(), "test-jms-default", "/artemis"); } @Test void testNamedOne() { - test(createNamedOnContext(), "test-jms-named-1", "/artemis/named-1"); - } - - private void test(JMSContext context, String queueName, String endpoint) { - String body = createBody(); - try (JMSContext ignored = context) { - context.createProducer().send(context.createQueue(queueName), body); - } - - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - Assertions.assertEquals(body, response.getBody().asString()); + sendAndVerify(createNamedOneContext(), "test-jms-named-1", "/artemis/named-1"); } } diff --git a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisHealthCheckTest.java b/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisHealthCheckTest.java index 6ed57981..a23ccb4c 100644 --- a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisHealthCheckTest.java +++ b/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisHealthCheckTest.java @@ -1,47 +1,19 @@ package io.quarkus.it.artemis.jms.withdefault; -import java.util.List; -import java.util.Map; import java.util.Set; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.common.mapper.TypeRef; -import io.restassured.response.Response; +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; public abstract class BaseArtemisHealthCheckTest { @Test void testHealth() { - test("/q/health", Set.of("", "named-1")); + ArtemisHealthCheckHelper.testJms("/q/health", Set.of("", "named-1")); } @Test void testReady() { - test("/q/health/ready", Set.of("", "named-1")); + ArtemisHealthCheckHelper.testJms("/q/health/ready", Set.of("", "named-1")); } - - private static void test(String endpoint, Set expectedConfigurations) { - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - - Map body = response.as(new TypeRef<>() { - }); - Assertions.assertEquals("UP", body.get("status")); - - @SuppressWarnings("unchecked") - List> checks = (List>) body.get("checks"); - Assertions.assertEquals(1, checks.size()); - Map check = checks.get(0); - Assertions.assertEquals("Artemis JMS health check", check.get("name")); - - @SuppressWarnings("unchecked") - Map data = (Map) check.get("data"); - Assertions.assertEquals(expectedConfigurations.size(), data.size()); - Assertions.assertEquals(expectedConfigurations, data.keySet()); - for (String namedConfiguration : expectedConfigurations) { - Assertions.assertEquals("UP", data.get(namedConfiguration)); - } - } -} \ No newline at end of file +} diff --git a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisProducerTest.java b/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisProducerTest.java index abfd56f3..2124c20b 100644 --- a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisProducerTest.java +++ b/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisProducerTest.java @@ -1,36 +1,37 @@ package io.quarkus.it.artemis.jms.withdefault; -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; -import javax.jms.Message; - -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; +import io.quarkus.it.artemis.jms.common.ArtemisJmsHelper; -abstract public class BaseArtemisProducerTest implements ArtemisHelper { +abstract public class BaseArtemisProducerTest extends ArtemisJmsHelper { @Test void testDefault() throws Exception { - test(createDefaultContext(), "/artemis", "test-jms-default"); + receiveAndVerify("/artemis", createDefaultContext(), "test-jms-default"); } @Test void testNamedOne() throws Exception { - test(createNamedOnContext(), "/artemis/named-1", "test-jms-named-1"); + receiveAndVerify("/artemis/named-1", createNamedOneContext(), "test-jms-named-1"); + } + + @Test + void testXADefault() throws Exception { + receiveAndVerify("/artemis/xa", createDefaultContext(), "test-jms-default"); + } + + @Test + void testXANamedOne() throws Exception { + receiveAndVerify("/artemis/named-1/xa", createNamedOneContext(), "test-jms-named-1"); } - private void test(JMSContext context, String endpoint, String queueName) throws JMSException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); + @Test + void testRollbackDefault() { + testRollback("/artemis/xa", createDefaultContext(), "test-jms-default"); + } - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertEquals(body, message.getBody(String.class)); - } + @Test + void testRollbackNamedOne() { + testRollback("/artemis/named-1/xa", createNamedOneContext(), "test-jms-named-1"); } } diff --git a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisProducerXATest.java b/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisProducerXATest.java deleted file mode 100644 index de25e9c3..00000000 --- a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/BaseArtemisProducerXATest.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault; - -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; -import javax.jms.Message; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisProducerXATest extends BaseArtemisProducerTest { - @Test - void testXADefault() throws Exception { - testXA(createDefaultContext(), "/artemis/xa", "test-jms-default"); - } - - @Test - void testXANamedOne() throws Exception { - testXA(createNamedOnContext(), "/artemis/named-1/xa", "test-jms-named-1"); - } - - private void testXA(JMSContext context, String endpoint, String queueName) throws JMSException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertEquals(body, message.getBody(String.class)); - } - } - - @Test - public void testRollbackDefault() { - testRollback(createDefaultContext(), "/artemis/xa", "test-jms-default"); - } - - @Test - public void testRollbackNamedOne() { - testRollback(createNamedOnContext(), "/artemis/named-1/xa", "test-jms-named-1"); - } - - private void testRollback(JMSContext context, String endpoint, String queueName) { - Response response = RestAssured.with().body("fail").post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertNull(message); - } - } -} diff --git a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/devservices/DevservicesProducerXATest.java b/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/devservices/DevservicesProducerXATest.java deleted file mode 100644 index f568e29f..00000000 --- a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/devservices/DevservicesProducerXATest.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.devservices; - -import io.quarkus.it.artemis.jms.withdefault.BaseArtemisProducerXATest; -import io.quarkus.test.junit.QuarkusTest; -import io.quarkus.test.junit.TestProfile; - -@QuarkusTest -@TestProfile(DevservicesArtemisEnabled.class) -class DevservicesProducerXATest extends BaseArtemisProducerXATest { -} diff --git a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/embedded/EmbeddedProducerXAITCase.java b/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/embedded/EmbeddedProducerXAITCase.java deleted file mode 100644 index ba90f9fc..00000000 --- a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/embedded/EmbeddedProducerXAITCase.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.embedded; - -import io.quarkus.test.junit.QuarkusIntegrationTest; - -@QuarkusIntegrationTest -class EmbeddedProducerXAITCase extends EmbeddedProducerXATest { -} diff --git a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/embedded/EmbeddedProducerXATest.java b/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/embedded/EmbeddedProducerXATest.java deleted file mode 100644 index c0cbde95..00000000 --- a/integration-tests/jms/with-default/src/test/java/io/quarkus/it/artemis/jms/withdefault/embedded/EmbeddedProducerXATest.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.quarkus.it.artemis.jms.withdefault.embedded; - -import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.jms.withdefault.BaseArtemisProducerXATest; -import io.quarkus.test.common.QuarkusTestResource; -import io.quarkus.test.junit.QuarkusTest; - -@QuarkusTest -@QuarkusTestResource(ArtemisTestResource.class) -@QuarkusTestResource(NamedOneArtemisTestResource.class) -class EmbeddedProducerXATest extends BaseArtemisProducerXATest { -} diff --git a/integration-tests/jms/with-external/pom.xml b/integration-tests/jms/with-external/pom.xml index 48aec69d..faa4ced3 100644 --- a/integration-tests/jms/with-external/pom.xml +++ b/integration-tests/jms/with-external/pom.xml @@ -10,4 +10,18 @@ quarkus-integration-test-artemis-jms-with-external Quarkus - Artemis - Integration Tests - JMS - With external configuration The Apache ActiveMQ Artemis JMS integration tests with external configuration module + + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + tests + test-jar + test + + \ No newline at end of file diff --git a/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ArtemisConsumerManager.java b/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ArtemisConsumerManager.java deleted file mode 100644 index fa23e205..00000000 --- a/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ArtemisConsumerManager.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.quarkus.it.artemis.jms.withexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.jms.ConnectionFactory; -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisConsumerManager { - static class Producer { - @Produces - @ApplicationScoped - @Identifier("externally-defined") - ArtemisConsumerManager externallyDefinedManager( - @Identifier("externally-defined") ConnectionFactory namedOneConnectionFactory) { - return new ArtemisConsumerManager(namedOneConnectionFactory, "test-jms-externally-defined"); - } - - Producer() { - } - } - - private final ConnectionFactory connectionFactory; - private final String queueName; - - public ArtemisConsumerManager(ConnectionFactory connectionFactory, String queueName) { - this.connectionFactory = connectionFactory; - this.queueName = queueName; - } - - public String receive() { - try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE); - JMSConsumer consumer = context.createConsumer(context.createQueue(queueName))) { - return consumer.receive(1000L).getBody(String.class); - } catch (JMSException e) { - throw new RuntimeException("Could not receive message", e); - } - } -} diff --git a/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ArtemisEndpoint.java b/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ArtemisEndpoint.java index a1c47920..bcd88110 100644 --- a/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ArtemisEndpoint.java +++ b/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ArtemisEndpoint.java @@ -1,21 +1,23 @@ package io.quarkus.it.artemis.jms.withexternal; -import javax.transaction.Transactional; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.transaction.Transactional; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import io.quarkus.it.artemis.jms.common.ArtemisJmsConsumerManager; +import io.quarkus.it.artemis.jms.common.ArtemisJmsXaProducerManager; import io.smallrye.common.annotation.Identifier; @Path("/artemis") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) public class ArtemisEndpoint { - private final ArtemisProducerManager externallyDefinedProducer; - private final ArtemisConsumerManager externallyDefinedConsumer; + private final ArtemisJmsXaProducerManager externallyDefinedProducer; + private final ArtemisJmsConsumerManager externallyDefinedConsumer; public ArtemisEndpoint( - @Identifier("externally-defined") ArtemisProducerManager externallyDefinedProducer, - @Identifier("externally-defined") ArtemisConsumerManager externallyDefinedConsumer) { + @Identifier("externally-defined") ArtemisJmsXaProducerManager externallyDefinedProducer, + @Identifier("externally-defined") ArtemisJmsConsumerManager externallyDefinedConsumer) { this.externallyDefinedProducer = externallyDefinedProducer; this.externallyDefinedConsumer = externallyDefinedConsumer; } diff --git a/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ArtemisProducerManager.java b/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ArtemisProducerManager.java deleted file mode 100644 index 52103c3f..00000000 --- a/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ArtemisProducerManager.java +++ /dev/null @@ -1,78 +0,0 @@ -package io.quarkus.it.artemis.jms.withexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.jms.*; -import javax.transaction.RollbackException; -import javax.transaction.Synchronization; -import javax.transaction.SystemException; -import javax.transaction.TransactionManager; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisProducerManager { - static class Producer { - @Produces - @ApplicationScoped - @Identifier("externally-defined") - ArtemisProducerManager externallyDefinedProducer( - @Identifier("externally-defined") ConnectionFactory namedOneConnectionFactory, - @Identifier("externally-defined") XAConnectionFactory namedOneXaConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { - return new ArtemisProducerManager( - namedOneConnectionFactory, - namedOneXaConnectionFactory, - tm, - "test-jms-externally-defined"); - } - - Producer() { - } - } - - private final ConnectionFactory connectionFactory; - private final XAConnectionFactory xaConnectionFactory; - private final TransactionManager tm; - private final String queueName; - - private ArtemisProducerManager( - ConnectionFactory connectionFactory, - XAConnectionFactory xaConnectionFactory, - TransactionManager tm, - String queueName) { - this.connectionFactory = connectionFactory; - this.xaConnectionFactory = xaConnectionFactory; - this.tm = tm; - this.queueName = queueName; - } - - private void send(JMSContext context, String body) { - JMSProducer producer = context.createProducer(); - producer.send(context.createQueue(queueName), body); - } - - public void send(String body) { - try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE)) { - send(context, body); - } - } - - public void sendXA(String body) throws SystemException, RollbackException { - XAJMSContext context = xaConnectionFactory.createXAContext(); - tm.getTransaction().enlistResource(context.getXAResource()); - tm.getTransaction().registerSynchronization(new Synchronization() { - @Override - public void beforeCompletion() { - } - - @Override - public void afterCompletion(int i) { - context.close(); - } - }); - send(context, body); - if (body.equals("fail")) { - tm.setRollbackOnly(); - } - } -} diff --git a/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/BeanProducer.java b/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/BeanProducer.java new file mode 100644 index 00000000..45b71757 --- /dev/null +++ b/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/BeanProducer.java @@ -0,0 +1,51 @@ +package io.quarkus.it.artemis.jms.withexternal; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; +import jakarta.enterprise.inject.Typed; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.XAConnectionFactory; +import jakarta.transaction.TransactionManager; + +import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; +import org.eclipse.microprofile.config.inject.ConfigProperty; + +import io.quarkus.it.artemis.jms.common.ArtemisJmsConsumerManager; +import io.quarkus.it.artemis.jms.common.ArtemisJmsXaProducerManager; +import io.smallrye.common.annotation.Identifier; + +public class BeanProducer { + @Produces + @Typed({ ActiveMQConnectionFactory.class, XAConnectionFactory.class, ConnectionFactory.class }) + @ApplicationScoped + @Identifier("externally-defined") + ActiveMQConnectionFactory externallyDefinedConnectionFactory( + @ConfigProperty(name = "artemis.externally-defined.url") String externallyDefinedUrl) { + return new ActiveMQConnectionFactory(externallyDefinedUrl); + } + + @Produces + @ApplicationScoped + @Identifier("externally-defined") + ArtemisJmsConsumerManager externallyDefinedManager( + @Identifier("externally-defined") ConnectionFactory namedOneConnectionFactory) { + return new ArtemisJmsConsumerManager(namedOneConnectionFactory, "test-jms-externally-defined"); + } + + @Produces + @ApplicationScoped + @Identifier("externally-defined") + ArtemisJmsXaProducerManager externallyDefinedProducer( + @Identifier("externally-defined") ConnectionFactory namedOneConnectionFactory, + @Identifier("externally-defined") XAConnectionFactory namedOneXaConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { + return new ArtemisJmsXaProducerManager( + namedOneConnectionFactory, + namedOneXaConnectionFactory, + tm, + "test-jms-externally-defined"); + } + + BeanProducer() { + } +} diff --git a/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ConnectionFactoryProducer.java b/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ConnectionFactoryProducer.java deleted file mode 100644 index 94ca193b..00000000 --- a/integration-tests/jms/with-external/src/main/java/io/quarkus/it/artemis/jms/withexternal/ConnectionFactoryProducer.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.quarkus.it.artemis.jms.withexternal; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.enterprise.inject.Typed; -import javax.jms.ConnectionFactory; -import javax.jms.XAConnectionFactory; - -import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; -import org.eclipse.microprofile.config.inject.ConfigProperty; - -import io.smallrye.common.annotation.Identifier; - -public class ConnectionFactoryProducer { - @Produces - @Typed({ ActiveMQConnectionFactory.class, XAConnectionFactory.class, ConnectionFactory.class }) - @ApplicationScoped - @Identifier("externally-defined") - ActiveMQConnectionFactory externallyDefinedConnectionFactory( - @ConfigProperty(name = "artemis.externally-defined.url") String externallyDefinedUrl) { - return new ActiveMQConnectionFactory(externallyDefinedUrl); - } -} diff --git a/integration-tests/jms/with-external/src/main/resources/application.properties b/integration-tests/jms/with-external/src/main/resources/application.properties index 46819b39..e69de29b 100644 --- a/integration-tests/jms/with-external/src/main/resources/application.properties +++ b/integration-tests/jms/with-external/src/main/resources/application.properties @@ -1 +0,0 @@ -yy \ No newline at end of file diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/ArtemisHelper.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/ArtemisHelper.java deleted file mode 100644 index b7a3aec6..00000000 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/ArtemisHelper.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.quarkus.it.artemis.jms.withexternal; - -import java.util.Random; - -import javax.jms.JMSContext; - -import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; -import org.eclipse.microprofile.config.ConfigProvider; - -public interface ArtemisHelper { - default String createBody() { - return Integer.toString(new Random().nextInt(Integer.MAX_VALUE), 16); - } - - default JMSContext createExternallyDefinedContext() { - String url = ConfigProvider.getConfig().getValue("artemis.externally-defined.url", String.class); - return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); - } -} diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisConsumerTest.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisConsumerTest.java deleted file mode 100644 index ada080ee..00000000 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisConsumerTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.quarkus.it.artemis.jms.withexternal; - -import javax.jms.JMSContext; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisConsumerTest implements ArtemisHelper { - @Test - void testExternallyDefined() { - test(createExternallyDefinedContext(), "test-jms-externally-defined", "/artemis/externally-defined"); - } - - protected void test(JMSContext context, String queueName, String endpoint) { - String body = createBody(); - try (JMSContext ignored = context) { - context.createProducer().send(context.createQueue(queueName), body); - } - - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - Assertions.assertEquals(body, response.getBody().asString()); - } -} diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisHealthCheckTest.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisHealthCheckTest.java deleted file mode 100644 index 516d7d5f..00000000 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisHealthCheckTest.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.quarkus.it.artemis.jms.withexternal; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.common.mapper.TypeRef; -import io.restassured.response.Response; - -public abstract class BaseArtemisHealthCheckTest { - @Test - void testHealth() { - test("/q/health", Set.of("externally-defined")); - } - - @Test - void testReady() { - test("/q/health/ready", Set.of("externally-defined")); - } - - private static void test(String endpoint, Set expectedConfigurations) { - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - - Map body = response.as(new TypeRef<>() { - }); - Assertions.assertEquals("UP", body.get("status")); - - @SuppressWarnings("unchecked") - List> checks = (List>) body.get("checks"); - Assertions.assertEquals(1, checks.size()); - Map check = checks.get(0); - Assertions.assertEquals("Artemis JMS health check", check.get("name")); - - @SuppressWarnings("unchecked") - Map data = (Map) check.get("data"); - Assertions.assertEquals(expectedConfigurations.size(), data.size()); - Assertions.assertEquals(expectedConfigurations, data.keySet()); - for (String namedConfiguration : expectedConfigurations) { - Assertions.assertEquals("UP", data.get(namedConfiguration)); - } - } -} diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisProducerTest.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisProducerTest.java deleted file mode 100644 index c85d6724..00000000 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisProducerTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.quarkus.it.artemis.jms.withexternal; - -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; -import javax.jms.Message; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -abstract public class BaseArtemisProducerTest implements ArtemisHelper { - @Test - void testExternallyDefined() throws Exception { - test(createExternallyDefinedContext(), "test-jms-externally-defined", "/artemis/externally-defined"); - } - - protected void test(JMSContext context, String queueName, String endpoint) throws JMSException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertEquals(body, message.getBody(String.class)); - } - } -} diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisProducerXATest.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisProducerXATest.java deleted file mode 100644 index 290a455b..00000000 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/BaseArtemisProducerXATest.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.quarkus.it.artemis.jms.withexternal; - -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; -import javax.jms.Message; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisProducerXATest extends BaseArtemisProducerTest { - @Test - void testXAExternallyDefined() throws Exception { - testXA(createExternallyDefinedContext(), "/artemis/externally-defined/xa", "test-jms-externally-defined"); - } - - protected void testXA(JMSContext context, String endpoint, String queueName) throws JMSException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertEquals(body, message.getBody(String.class)); - } - } - - @Test - public void testRollbackExternallyDefined() { - testRollback(createExternallyDefinedContext(), "/artemis/externally-defined/xa", "test-jms-externally-defined"); - } - - private void testRollback(JMSContext context, String endpoint, String queueName) { - Response response = RestAssured.with().body("fail").post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertNull(message); - } - } -} diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedConsumerTest.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedConsumerTest.java index bb06ecb5..95ab52ad 100644 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedConsumerTest.java +++ b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedConsumerTest.java @@ -1,13 +1,19 @@ package io.quarkus.it.artemis.jms.withexternal.embedded; -import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.jms.withexternal.BaseArtemisConsumerTest; +import org.junit.jupiter.api.Test; + +import io.quarkus.it.artemis.jms.common.ArtemisJmsHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest -@QuarkusTestResource(ArtemisTestResource.class) -@QuarkusTestResource(NamedOneArtemisTestResource.class) @QuarkusTestResource(ExternallyDefinedArtemisTestResource.class) -class EmbeddedConsumerTest extends BaseArtemisConsumerTest { +class EmbeddedConsumerTest extends ArtemisJmsHelper { + @Test + void testExternallyDefined() { + sendAndVerify( + createExternallyDefinedContext("artemis.externally-defined.url"), + "test-jms-externally-defined", + "/artemis/externally-defined"); + } } diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedHealthCheckTest.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedHealthCheckTest.java index a8006e61..4af54127 100644 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedHealthCheckTest.java +++ b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedHealthCheckTest.java @@ -1,13 +1,23 @@ package io.quarkus.it.artemis.jms.withexternal.embedded; -import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.jms.withexternal.BaseArtemisHealthCheckTest; +import java.util.Set; + +import org.junit.jupiter.api.Test; + +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest -@QuarkusTestResource(ArtemisTestResource.class) -@QuarkusTestResource(NamedOneArtemisTestResource.class) @QuarkusTestResource(ExternallyDefinedArtemisTestResource.class) -class EmbeddedHealthCheckTest extends BaseArtemisHealthCheckTest { +class EmbeddedHealthCheckTest { + @Test + void testHealth() { + ArtemisHealthCheckHelper.testJms("/q/health", Set.of("externally-defined")); + } + + @Test + void testReady() { + ArtemisHealthCheckHelper.testJms("/q/health/ready", Set.of("externally-defined")); + } } diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerITCase.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerITCase.java index 97fe58ee..479da1be 100644 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerITCase.java +++ b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerITCase.java @@ -4,5 +4,4 @@ @QuarkusIntegrationTest class EmbeddedProducerITCase extends EmbeddedProducerTest { - } diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerTest.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerTest.java index 527a01c5..43c0c34e 100644 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerTest.java +++ b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerTest.java @@ -1,13 +1,35 @@ package io.quarkus.it.artemis.jms.withexternal.embedded; -import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.jms.withexternal.BaseArtemisProducerTest; +import org.junit.jupiter.api.Test; + +import io.quarkus.it.artemis.jms.common.ArtemisJmsHelper; import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest -@QuarkusTestResource(ArtemisTestResource.class) -@QuarkusTestResource(NamedOneArtemisTestResource.class) @QuarkusTestResource(ExternallyDefinedArtemisTestResource.class) -class EmbeddedProducerTest extends BaseArtemisProducerTest { +class EmbeddedProducerTest extends ArtemisJmsHelper { + @Test + void testExternallyDefined() throws Exception { + receiveAndVerify( + "/artemis/externally-defined", + createExternallyDefinedContext("artemis.externally-defined.url"), + "test-jms-externally-defined"); + } + + @Test + void testXAExternallyDefined() throws Exception { + receiveAndVerify( + "/artemis/externally-defined/xa", + createExternallyDefinedContext("artemis.externally-defined.url"), + "test-jms-externally-defined"); + } + + @Test + void testRollbackExternallyDefined() { + testRollback( + "/artemis/externally-defined/xa", + createExternallyDefinedContext("artemis.externally-defined.url"), + "test-jms-externally-defined"); + } } diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerXAITCase.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerXAITCase.java deleted file mode 100644 index 2a61ad67..00000000 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerXAITCase.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.quarkus.it.artemis.jms.withexternal.embedded; - -import io.quarkus.test.junit.QuarkusIntegrationTest; - -@QuarkusIntegrationTest -class EmbeddedProducerXAITCase extends EmbeddedProducerXATest { -} diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerXATest.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerXATest.java deleted file mode 100644 index 6ccaf61c..00000000 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/EmbeddedProducerXATest.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.quarkus.it.artemis.jms.withexternal.embedded; - -import io.quarkus.artemis.test.ArtemisTestResource; -import io.quarkus.it.artemis.jms.withexternal.BaseArtemisProducerXATest; -import io.quarkus.test.common.QuarkusTestResource; -import io.quarkus.test.junit.QuarkusTest; - -@QuarkusTest -@QuarkusTestResource(ArtemisTestResource.class) -@QuarkusTestResource(NamedOneArtemisTestResource.class) -@QuarkusTestResource(ExternallyDefinedArtemisTestResource.class) -class EmbeddedProducerXATest extends BaseArtemisProducerXATest { -} diff --git a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/NamedOneArtemisTestResource.java b/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/NamedOneArtemisTestResource.java deleted file mode 100644 index 4ca77867..00000000 --- a/integration-tests/jms/with-external/src/test/java/io/quarkus/it/artemis/jms/withexternal/embedded/NamedOneArtemisTestResource.java +++ /dev/null @@ -1,9 +0,0 @@ -package io.quarkus.it.artemis.jms.withexternal.embedded; - -import io.quarkus.artemis.test.ArtemisTestResource; - -public class NamedOneArtemisTestResource extends ArtemisTestResource { - public NamedOneArtemisTestResource() { - super("named-1"); - } -} diff --git a/integration-tests/jms/without-default/pom.xml b/integration-tests/jms/without-default/pom.xml index 2966762e..3530a916 100644 --- a/integration-tests/jms/without-default/pom.xml +++ b/integration-tests/jms/without-default/pom.xml @@ -10,4 +10,18 @@ quarkus-integration-test-artemis-jms-without-default Quarkus - Artemis - Integration Tests - JMS - Without default configuration The Apache ActiveMQ Artemis JMS integration tests without default configuration module + + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + + + io.quarkiverse.artemis + quarkus-integration-test-artemis-jms-common + tests + test-jar + test + + diff --git a/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisConsumerManager.java b/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisConsumerManager.java deleted file mode 100644 index 08fa589a..00000000 --- a/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisConsumerManager.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.quarkus.it.artemis.jms.withoutdefault; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.jms.ConnectionFactory; -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisConsumerManager { - static class Producer { - @Produces - @ApplicationScoped - @Identifier("named-1") - ArtemisConsumerManager namedOneConsumerManager( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory) { - return new ArtemisConsumerManager(namedOneConnectionFactory, "test-jms-named-1"); - } - - Producer() { - } - } - - private final ConnectionFactory connectionFactory; - private final String queueName; - - public ArtemisConsumerManager(ConnectionFactory connectionFactory, String queueName) { - this.connectionFactory = connectionFactory; - this.queueName = queueName; - } - - public String receive() { - try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE); - JMSConsumer consumer = context.createConsumer(context.createQueue(queueName))) { - return consumer.receive(1000L).getBody(String.class); - } catch (JMSException e) { - throw new RuntimeException("Could not receive message", e); - } - } -} diff --git a/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisEndpoint.java b/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisEndpoint.java index be7200dc..a320b3f3 100644 --- a/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisEndpoint.java +++ b/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisEndpoint.java @@ -1,21 +1,23 @@ package io.quarkus.it.artemis.jms.withoutdefault; -import javax.transaction.Transactional; -import javax.ws.rs.*; -import javax.ws.rs.core.MediaType; +import jakarta.transaction.Transactional; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import io.quarkus.it.artemis.jms.common.ArtemisJmsConsumerManager; +import io.quarkus.it.artemis.jms.common.ArtemisJmsXaProducerManager; import io.smallrye.common.annotation.Identifier; @Path("/artemis") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.TEXT_PLAIN) public class ArtemisEndpoint { - private final ArtemisProducerManager namedOneProducer; - private final ArtemisConsumerManager namedOneConsumer; + private final ArtemisJmsXaProducerManager namedOneProducer; + private final ArtemisJmsConsumerManager namedOneConsumer; public ArtemisEndpoint( - @Identifier("named-1") ArtemisProducerManager namedOneProducer, - @Identifier("named-1") ArtemisConsumerManager namedOneConsumer) { + @Identifier("named-1") ArtemisJmsXaProducerManager namedOneProducer, + @Identifier("named-1") ArtemisJmsConsumerManager namedOneConsumer) { this.namedOneProducer = namedOneProducer; this.namedOneConsumer = namedOneConsumer; } diff --git a/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisProducerManager.java b/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisProducerManager.java deleted file mode 100644 index dba4180b..00000000 --- a/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisProducerManager.java +++ /dev/null @@ -1,78 +0,0 @@ -package io.quarkus.it.artemis.jms.withoutdefault; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.jms.*; -import javax.transaction.RollbackException; -import javax.transaction.Synchronization; -import javax.transaction.SystemException; -import javax.transaction.TransactionManager; - -import io.smallrye.common.annotation.Identifier; - -public class ArtemisProducerManager { - static class Producer { - @Produces - @ApplicationScoped - @Identifier("named-1") - ArtemisProducerManager namedOneProducer( - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") XAConnectionFactory namedOneXaConnectionFactory, - @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { - return new ArtemisProducerManager( - namedOneConnectionFactory, - namedOneXaConnectionFactory, - tm, - "test-jms-named-1"); - } - - Producer() { - } - } - - private final ConnectionFactory connectionFactory; - private final XAConnectionFactory xaConnectionFactory; - private final TransactionManager tm; - private final String queueName; - - private ArtemisProducerManager( - ConnectionFactory connectionFactory, - XAConnectionFactory xaConnectionFactory, - TransactionManager tm, - String queueName) { - this.connectionFactory = connectionFactory; - this.xaConnectionFactory = xaConnectionFactory; - this.tm = tm; - this.queueName = queueName; - } - - private void send(JMSContext context, String body) { - JMSProducer producer = context.createProducer(); - producer.send(context.createQueue(queueName), body); - } - - public void send(String body) { - try (JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE)) { - send(context, body); - } - } - - public void sendXA(String body) throws SystemException, RollbackException { - XAJMSContext context = xaConnectionFactory.createXAContext(); - tm.getTransaction().enlistResource(context.getXAResource()); - tm.getTransaction().registerSynchronization(new Synchronization() { - @Override - public void beforeCompletion() { - } - - @Override - public void afterCompletion(int i) { - context.close(); - } - }); - send(context, body); - if (body.equals("fail")) { - tm.setRollbackOnly(); - } - } -} diff --git a/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/BeanProducer.java b/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/BeanProducer.java new file mode 100644 index 00000000..5ba1ec17 --- /dev/null +++ b/integration-tests/jms/without-default/src/main/java/io/quarkus/it/artemis/jms/withoutdefault/BeanProducer.java @@ -0,0 +1,38 @@ +package io.quarkus.it.artemis.jms.withoutdefault; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Produces; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.XAConnectionFactory; +import jakarta.transaction.TransactionManager; + +import io.quarkus.it.artemis.jms.common.ArtemisJmsConsumerManager; +import io.quarkus.it.artemis.jms.common.ArtemisJmsXaProducerManager; +import io.smallrye.common.annotation.Identifier; + +public class BeanProducer { + @Produces + @ApplicationScoped + @Identifier("named-1") + ArtemisJmsConsumerManager namedOneConsumerManager( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory) { + return new ArtemisJmsConsumerManager(namedOneConnectionFactory, "test-jms-named-1"); + } + + @Produces + @ApplicationScoped + @Identifier("named-1") + ArtemisJmsXaProducerManager namedOneProducer( + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") ConnectionFactory namedOneConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") @Identifier("named-1") XAConnectionFactory namedOneXaConnectionFactory, + @SuppressWarnings("CdiInjectionPointsInspection") TransactionManager tm) { + return new ArtemisJmsXaProducerManager( + namedOneConnectionFactory, + namedOneXaConnectionFactory, + tm, + "test-jms-named-1"); + } + + BeanProducer() { + } +} diff --git a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisHelper.java b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisHelper.java deleted file mode 100644 index 8bfafb18..00000000 --- a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/ArtemisHelper.java +++ /dev/null @@ -1,20 +0,0 @@ -package io.quarkus.it.artemis.jms.withoutdefault; - -import java.util.Random; - -import javax.jms.JMSContext; - -import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; -import org.eclipse.microprofile.config.ConfigProvider; - -public interface ArtemisHelper { - - default String createBody() { - return Integer.toString(new Random().nextInt(Integer.MAX_VALUE), 16); - } - - default JMSContext createNamedOnContext() { - String url = ConfigProvider.getConfig().getValue("quarkus.artemis.\"named-1\".url", String.class); - return new ActiveMQJMSConnectionFactory(url).createContext(JMSContext.AUTO_ACKNOWLEDGE); - } -} diff --git a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisConsumerTest.java b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisConsumerTest.java index 189c34a6..8fcd347a 100644 --- a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisConsumerTest.java +++ b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisConsumerTest.java @@ -1,27 +1,12 @@ package io.quarkus.it.artemis.jms.withoutdefault; -import javax.jms.JMSContext; - -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; +import io.quarkus.it.artemis.jms.common.ArtemisJmsHelper; -public abstract class BaseArtemisConsumerTest implements ArtemisHelper { +public abstract class BaseArtemisConsumerTest extends ArtemisJmsHelper { @Test void testNamedOne() { - test(createNamedOnContext(), "test-jms-named-1", "/artemis/named-1"); - } - - private void test(JMSContext context, String queueName, String endpoint) { - String body = createBody(); - try (JMSContext ignored = context) { - context.createProducer().send(context.createQueue(queueName), body); - } - - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - Assertions.assertEquals(body, response.getBody().asString()); + sendAndVerify(createNamedOneContext(), "test-jms-named-1", "/artemis/named-1"); } } diff --git a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisHealthCheckTest.java b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisHealthCheckTest.java index 8103c1ac..6a742b88 100644 --- a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisHealthCheckTest.java +++ b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisHealthCheckTest.java @@ -1,47 +1,19 @@ package io.quarkus.it.artemis.jms.withoutdefault; -import java.util.List; -import java.util.Map; import java.util.Set; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.common.mapper.TypeRef; -import io.restassured.response.Response; +import io.quarkus.it.artemis.common.ArtemisHealthCheckHelper; public abstract class BaseArtemisHealthCheckTest { @Test void testHealth() { - test("/q/health", Set.of("named-1")); + ArtemisHealthCheckHelper.testJms("/q/health", Set.of("named-1")); } @Test void testReady() { - test("/q/health/ready", Set.of("named-1")); - } - - private static void test(String endpoint, Set expectedConfigurations) { - Response response = RestAssured.with().get(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.OK.getStatusCode(), response.statusCode()); - - Map body = response.as(new TypeRef<>() { - }); - Assertions.assertEquals("UP", body.get("status")); - - @SuppressWarnings("unchecked") - List> checks = (List>) body.get("checks"); - Assertions.assertEquals(1, checks.size()); - Map check = checks.get(0); - Assertions.assertEquals("Artemis JMS health check", check.get("name")); - - @SuppressWarnings("unchecked") - Map data = (Map) check.get("data"); - Assertions.assertEquals(expectedConfigurations.size(), data.size()); - Assertions.assertEquals(expectedConfigurations, data.keySet()); - for (String namedConfiguration : expectedConfigurations) { - Assertions.assertEquals("UP", data.get(namedConfiguration)); - } + ArtemisHealthCheckHelper.testJms("/q/health/ready", Set.of("named-1")); } } diff --git a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisProducerTest.java b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisProducerTest.java index f4e72f46..8a5b4099 100644 --- a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisProducerTest.java +++ b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisProducerTest.java @@ -1,31 +1,22 @@ package io.quarkus.it.artemis.jms.withoutdefault; -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; -import javax.jms.Message; - -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import io.restassured.RestAssured; -import io.restassured.response.Response; +import io.quarkus.it.artemis.jms.common.ArtemisJmsHelper; -abstract public class BaseArtemisProducerTest implements ArtemisHelper { +abstract public class BaseArtemisProducerTest extends ArtemisJmsHelper { @Test void testNamedOne() throws Exception { - test(createNamedOnContext(), "/artemis/named-1", "test-jms-named-1"); + receiveAndVerify("/artemis/named-1", createNamedOneContext(), "test-jms-named-1"); } - private void test(JMSContext context, String endpoint, String queueName) throws JMSException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); + @Test + void testXANamedOne() throws Exception { + receiveAndVerify("/artemis/named-1/xa", createNamedOneContext(), "test-jms-named-1"); + } - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertEquals(body, message.getBody(String.class)); - } + @Test + void testRollbackNamedOne() { + testRollback("/artemis/named-1/xa", createNamedOneContext(), "test-jms-named-1"); } } diff --git a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisProducerXATest.java b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisProducerXATest.java deleted file mode 100644 index 7c228a61..00000000 --- a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/BaseArtemisProducerXATest.java +++ /dev/null @@ -1,47 +0,0 @@ -package io.quarkus.it.artemis.jms.withoutdefault; - -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; -import javax.jms.JMSException; -import javax.jms.Message; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import io.restassured.RestAssured; -import io.restassured.response.Response; - -public abstract class BaseArtemisProducerXATest extends BaseArtemisProducerTest { - @Test - void testXANamedOne() throws Exception { - testXA(createNamedOnContext(), "/artemis/named-1/xa", "test-jms-named-1"); - } - - private void testXA(JMSContext context, String endpoint, String queueName) throws JMSException { - String body = createBody(); - Response response = RestAssured.with().body(body).post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertEquals(body, message.getBody(String.class)); - } - } - - @Test - public void testRollbackNamedOne() { - testRollback(createNamedOnContext(), "/artemis/named-1/xa", "test-jms-named-1"); - } - - private void testRollback(JMSContext context, String endpoint, String queueName) { - Response response = RestAssured.with().body("fail").post(endpoint); - Assertions.assertEquals(javax.ws.rs.core.Response.Status.NO_CONTENT.getStatusCode(), response.statusCode()); - - try (JMSContext autoClosedContext = context) { - JMSConsumer consumer = autoClosedContext.createConsumer(autoClosedContext.createQueue(queueName)); - Message message = consumer.receive(1000L); - Assertions.assertNull(message); - } - } -} diff --git a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/devservices/DevservicesProducerXATest.java b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/devservices/DevservicesProducerXATest.java deleted file mode 100644 index 1b1e5b04..00000000 --- a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/devservices/DevservicesProducerXATest.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.quarkus.it.artemis.jms.withoutdefault.devservices; - -import io.quarkus.it.artemis.jms.withoutdefault.BaseArtemisProducerXATest; -import io.quarkus.test.junit.QuarkusTest; -import io.quarkus.test.junit.TestProfile; - -@QuarkusTest -@TestProfile(DevservicesArtemisEnabled.class) -class DevservicesProducerXATest extends BaseArtemisProducerXATest { -} diff --git a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/embedded/EmbeddedProducerITCase.java b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/embedded/EmbeddedProducerITCase.java index 49e76eab..8bde28c7 100644 --- a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/embedded/EmbeddedProducerITCase.java +++ b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/embedded/EmbeddedProducerITCase.java @@ -4,5 +4,4 @@ @QuarkusIntegrationTest class EmbeddedProducerITCase extends EmbeddedProducerTest { - } diff --git a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/embedded/EmbeddedProducerXAITCase.java b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/embedded/EmbeddedProducerXAITCase.java deleted file mode 100644 index a8e1a292..00000000 --- a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/embedded/EmbeddedProducerXAITCase.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.quarkus.it.artemis.jms.withoutdefault.embedded; - -import io.quarkus.test.junit.QuarkusIntegrationTest; - -@QuarkusIntegrationTest -class EmbeddedProducerXAITCase extends EmbeddedProducerXATest { -} diff --git a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/embedded/EmbeddedProducerXATest.java b/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/embedded/EmbeddedProducerXATest.java deleted file mode 100644 index 0ca70c1c..00000000 --- a/integration-tests/jms/without-default/src/test/java/io/quarkus/it/artemis/jms/withoutdefault/embedded/EmbeddedProducerXATest.java +++ /dev/null @@ -1,10 +0,0 @@ -package io.quarkus.it.artemis.jms.withoutdefault.embedded; - -import io.quarkus.it.artemis.jms.withoutdefault.BaseArtemisProducerXATest; -import io.quarkus.test.common.QuarkusTestResource; -import io.quarkus.test.junit.QuarkusTest; - -@QuarkusTest -@QuarkusTestResource(NamedOneArtemisTestResource.class) -class EmbeddedProducerXATest extends BaseArtemisProducerXATest { -} diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index e376a480..962234ba 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -3,16 +3,19 @@ 4.0.0 io.quarkiverse.artemis - quarkus-artemis-build-parent + quarkus-integration-test-artemis-common-parent 999-SNAPSHOT - ../build-parent/pom.xml + common-parent/pom.xml quarkus-artemis-integration-tests-parent Quarkus - Artemis - Integration Tests - Parent + The Apache ActiveMQ Artemis integration tests parent module pom + common + common-parent core jms @@ -32,94 +35,4 @@ - - - - - io.quarkus - quarkus-resteasy - - - - - io.quarkiverse.artemis - quarkus-test-artemis - test - - - - - io.quarkus - quarkus-smallrye-health - - - - - io.quarkus - quarkus-jackson - test - - - io.quarkus - quarkus-junit5 - test - - - io.rest-assured - rest-assured - test - - - org.apache.activemq - artemis-server - test - - - org.jboss.logging - commons-logging-jboss-logging - test - - - - - - native-image - - - native - - - - - - maven-surefire-plugin - - ${native.surefire.skip} - - - - maven-failsafe-plugin - - - - integration-test - verify - - - - ${project.build.directory}/${project.build.finalName}-runner - org.jboss.logmanager.LogManager - ${maven.home} - - - - - - - - - native - - - diff --git a/jms/deployment/src/main/java/io/quarkus/artemis/jms/deployment/ArtemisJmsProcessor.java b/jms/deployment/src/main/java/io/quarkus/artemis/jms/deployment/ArtemisJmsProcessor.java index 45e90343..1542f687 100644 --- a/jms/deployment/src/main/java/io/quarkus/artemis/jms/deployment/ArtemisJmsProcessor.java +++ b/jms/deployment/src/main/java/io/quarkus/artemis/jms/deployment/ArtemisJmsProcessor.java @@ -4,9 +4,9 @@ import java.util.Set; import java.util.function.Supplier; -import javax.enterprise.context.ApplicationScoped; -import javax.jms.ConnectionFactory; -import javax.jms.XAConnectionFactory; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.XAConnectionFactory; import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; diff --git a/jms/runtime/pom.xml b/jms/runtime/pom.xml index 1e603bfc..d21ac4ad 100644 --- a/jms/runtime/pom.xml +++ b/jms/runtime/pom.xml @@ -47,7 +47,7 @@ org.apache.activemq - artemis-jms-client + artemis-jakarta-client diff --git a/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/ArtemisJmsRecorder.java b/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/ArtemisJmsRecorder.java index 87d2aaba..f63246a6 100644 --- a/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/ArtemisJmsRecorder.java +++ b/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/ArtemisJmsRecorder.java @@ -3,7 +3,7 @@ import java.util.Objects; import java.util.function.Supplier; -import javax.jms.ConnectionFactory; +import jakarta.jms.ConnectionFactory; import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; diff --git a/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/ArtemisJmsWrapper.java b/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/ArtemisJmsWrapper.java index b1d70417..d3ce8485 100644 --- a/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/ArtemisJmsWrapper.java +++ b/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/ArtemisJmsWrapper.java @@ -1,6 +1,6 @@ package io.quarkus.artemis.jms.runtime; -import javax.jms.ConnectionFactory; +import jakarta.jms.ConnectionFactory; import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; diff --git a/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/health/ConnectionFactoryHealthCheck.java b/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/health/ConnectionFactoryHealthCheck.java index 83d6f631..64c753e1 100644 --- a/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/health/ConnectionFactoryHealthCheck.java +++ b/jms/runtime/src/main/java/io/quarkus/artemis/jms/runtime/health/ConnectionFactoryHealthCheck.java @@ -5,10 +5,10 @@ import java.util.HashSet; import java.util.Map; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Default; -import javax.jms.Connection; -import javax.jms.ConnectionFactory; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.inject.Default; +import jakarta.jms.Connection; +import jakarta.jms.ConnectionFactory; import org.eclipse.microprofile.health.HealthCheck; import org.eclipse.microprofile.health.HealthCheckResponse; diff --git a/pom.xml b/pom.xml index 0cae52c0..ed21ca46 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.quarkiverse quarkiverse-parent - 11 + 12 io.quarkiverse.artemis @@ -17,19 +17,21 @@ bom build-parent core - jms docs - test-framework integration-tests + jms + test-framework 3.8.1 + 3.0.5 true 11 11 + 3.4.0 UTF-8 UTF-8 - 2.14.3.Final + 3.0.0.Alpha2 2.26.0 @@ -62,6 +64,10 @@ + + maven-dependency-plugin + ${maven-dependency-plugin.version} +