You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2020/04/02 14:10:33 UTC
[camel-quarkus] branch master updated: Use testcontainer to test
camel infinispan extension to reduce test dependencies on infinispan
This is an automated email from the ASF dual-hosted git repository.
lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/master by this push:
new 3d8ac9a Use testcontainer to test camel infinispan extension to reduce test dependencies on infinispan
3d8ac9a is described below
commit 3d8ac9ac7f4d1e43b01e4a6a50979c052443a143
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Thu Apr 2 14:39:20 2020 +0200
Use testcontainer to test camel infinispan extension to reduce test dependencies on infinispan
---
integration-tests/infinispan/pom.xml | 76 ++--------------------
.../component/infinispan/InfinispanResources.java | 11 ++++
.../component/infinispan/InfinispanRoutes.java | 4 +-
.../src/main/resources/application.properties | 6 --
.../infinispan/InfinispanServerTestResource.java | 63 ++++++++++++------
.../quarkus/testcontainers/ContainerSupport.java} | 32 ++-------
6 files changed, 68 insertions(+), 124 deletions(-)
diff --git a/integration-tests/infinispan/pom.xml b/integration-tests/infinispan/pom.xml
index fe80a0a..4d7a311 100644
--- a/integration-tests/infinispan/pom.xml
+++ b/integration-tests/infinispan/pom.xml
@@ -70,6 +70,12 @@
</dependency>
<!-- test dependencies -->
+
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-integration-testcontainers-support</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
@@ -80,76 +86,6 @@
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.infinispan</groupId>
- <artifactId>infinispan-core</artifactId>
- <type>test-jar</type>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <groupId>org.jboss.spec.javax.transaction</groupId>
- <artifactId>jboss-transaction-api_1.2_spec</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.infinispan</groupId>
- <artifactId>infinispan-component-annotations</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.infinispan</groupId>
- <artifactId>infinispan-server-hotrod</artifactId>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.infinispan</groupId>
- <artifactId>infinispan-server-hotrod</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.infinispan</groupId>
- <artifactId>infinispan-remote-query-server</artifactId>
- <exclusions>
- <exclusion>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-search-serialization-avro</artifactId>
- </exclusion>
- </exclusions>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.infinispan</groupId>
- <artifactId>infinispan-commons-test</artifactId>
- <scope>test</scope>
- </dependency>
- <!--
- We override these to satisfy Infinispan server, see:
-
- https://github.com/quarkusio/quarkus/blob/1.0.0.CR2/integration-tests/infinispan-client/pom.xml#L84-L99
-
- TODO: remove
- -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>2.10.0</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.10.0</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-annotations</artifactId>
- <version>2.10.0</version>
- </dependency>
</dependencies>
<build>
diff --git a/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanResources.java b/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanResources.java
index 63f065f..a3b49dc 100644
--- a/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanResources.java
+++ b/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanResources.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.quarkus.component.infinispan;
+import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.ws.rs.GET;
@@ -25,13 +26,23 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.apache.camel.ProducerTemplate;
+import org.infinispan.client.hotrod.RemoteCacheManager;
@Path("/test")
@ApplicationScoped
public class InfinispanResources {
+ public static final String CACHE_NAME = "camel";
+
+ @Inject
+ RemoteCacheManager cacheManager;
@Inject
ProducerTemplate template;
+ @PostConstruct
+ public void setUp() {
+ cacheManager.administration().getOrCreateCache(CACHE_NAME, (String) null);
+ }
+
@Path("/get")
@GET
@Produces(MediaType.TEXT_PLAIN)
diff --git a/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanRoutes.java b/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanRoutes.java
index c83469a..6a4e21e 100644
--- a/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanRoutes.java
+++ b/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanRoutes.java
@@ -35,13 +35,13 @@ public class InfinispanRoutes extends RouteBuilder {
.setHeader(InfinispanConstants.OPERATION).constant(InfinispanOperation.PUT)
.setHeader(InfinispanConstants.KEY).constant("the-key".getBytes(StandardCharsets.UTF_8))
.setHeader(InfinispanConstants.VALUE).body()
- .to("infinispan:default")
+ .toF("infinispan:%s", InfinispanResources.CACHE_NAME)
.to("log:put?showAll=true");
from("direct:get")
.setHeader(InfinispanConstants.OPERATION).constant(InfinispanOperation.GET)
.setHeader(InfinispanConstants.KEY).constant("the-key".getBytes(StandardCharsets.UTF_8))
- .to("infinispan:default")
+ .toF("infinispan:%s", InfinispanResources.CACHE_NAME)
.to("log:get?showAll=true");
}
}
diff --git a/integration-tests/infinispan/src/main/resources/application.properties b/integration-tests/infinispan/src/main/resources/application.properties
index 48dfea8..494bcea 100644
--- a/integration-tests/infinispan/src/main/resources/application.properties
+++ b/integration-tests/infinispan/src/main/resources/application.properties
@@ -20,12 +20,6 @@
quarkus.log.file.enable = false
#
-# Quarkus
-#
-quarkus.infinispan-client.server-list = localhost:11232
-quarkus.infinispan-client.near-cache-max-entries = 3
-
-#
# Camel
#
camel.context.name = quarkus-camel-example
diff --git a/integration-tests/infinispan/src/test/java/org/apache/camel/quarkus/component/infinispan/InfinispanServerTestResource.java b/integration-tests/infinispan/src/test/java/org/apache/camel/quarkus/component/infinispan/InfinispanServerTestResource.java
index e9dec75..1e2cc9b 100644
--- a/integration-tests/infinispan/src/test/java/org/apache/camel/quarkus/component/infinispan/InfinispanServerTestResource.java
+++ b/integration-tests/infinispan/src/test/java/org/apache/camel/quarkus/component/infinispan/InfinispanServerTestResource.java
@@ -16,38 +16,61 @@
*/
package org.apache.camel.quarkus.component.infinispan;
-import java.util.Collections;
import java.util.Map;
-import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
-import org.infinispan.commons.test.TestResourceTracker;
-import org.infinispan.configuration.cache.ConfigurationBuilder;
-import org.infinispan.configuration.global.GlobalConfigurationBuilder;
-import org.infinispan.manager.EmbeddedCacheManager;
-import org.infinispan.server.hotrod.HotRodServer;
-import org.infinispan.server.hotrod.test.HotRodTestingUtil;
-import org.infinispan.test.fwk.TestCacheManagerFactory;
+import org.apache.camel.quarkus.testcontainers.ContainerResourceLifecycleManager;
+import org.apache.camel.util.CollectionHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.utility.TestcontainersConfiguration;
-public class InfinispanServerTestResource implements QuarkusTestResourceLifecycleManager {
- private HotRodServer hotRodServer;
+import static org.apache.camel.quarkus.testcontainers.ContainerSupport.getHostAndPort;
+
+public class InfinispanServerTestResource implements ContainerResourceLifecycleManager {
+ private static final Logger LOGGER = LoggerFactory.getLogger(InfinispanServerTestResource.class);
+ private static final String CONTAINER_IMAGE = "docker.io/infinispan/server:10.1.5.Final";
+ private static final int HOTROD_PORT = 11222;
+ private static final String USER = "camel";
+ private static final String PASS = "camel";
+
+ private GenericContainer<?> container;
@Override
public Map<String, String> start() {
- TestResourceTracker.setThreadTestName("InfinispanServer");
- EmbeddedCacheManager ecm = TestCacheManagerFactory.createCacheManager(
- new GlobalConfigurationBuilder().nonClusteredDefault().defaultCacheName("default"),
- new ConfigurationBuilder());
+ LOGGER.info(TestcontainersConfiguration.getInstance().toString());
- // Client connects to a non default port
- hotRodServer = HotRodTestingUtil.startHotRodServer(ecm, 11232);
+ try {
+ container = new GenericContainer<>(CONTAINER_IMAGE)
+ .withExposedPorts(HOTROD_PORT)
+ .withEnv("USER", USER)
+ .withEnv("PASS", PASS)
+ .waitingFor(Wait.forListeningPort());
- return Collections.emptyMap();
+ container.start();
+
+ return CollectionHelper.mapOf(
+ "quarkus.infinispan-client.server-list", getHostAndPort(container, HOTROD_PORT),
+ "quarkus.infinispan-client.near-cache-max-entries", "3",
+ "quarkus.infinispan-client.auth-username", USER,
+ "quarkus.infinispan-client.auth-password", PASS,
+ "quarkus.infinispan-client.auth-realm", "default",
+ "quarkus.infinispan-client.sasl-mechanism", "DIGEST-MD5",
+ "quarkus.infinispan-client.auth-server-name", "infinispan");
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
}
@Override
public void stop() {
- if (hotRodServer != null) {
- hotRodServer.stop();
+ try {
+ if (container != null) {
+ container.stop();
+ }
+ } catch (Exception e) {
+ // ignored
}
}
}
diff --git a/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanResources.java b/integration-tests/support/testcontainers-support/src/main/java/org/apache/camel/quarkus/testcontainers/ContainerSupport.java
similarity index 51%
copy from integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanResources.java
copy to integration-tests/support/testcontainers-support/src/main/java/org/apache/camel/quarkus/testcontainers/ContainerSupport.java
index 63f065f..26c9d1b 100644
--- a/integration-tests/infinispan/src/main/java/org/apache/camel/quarkus/component/infinispan/InfinispanResources.java
+++ b/integration-tests/support/testcontainers-support/src/main/java/org/apache/camel/quarkus/testcontainers/ContainerSupport.java
@@ -14,35 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.infinispan;
+package org.apache.camel.quarkus.testcontainers;
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import org.testcontainers.containers.GenericContainer;
-import org.apache.camel.ProducerTemplate;
-
-@Path("/test")
-@ApplicationScoped
-public class InfinispanResources {
- @Inject
- ProducerTemplate template;
-
- @Path("/get")
- @GET
- @Produces(MediaType.TEXT_PLAIN)
- public String get() {
- return template.requestBody("direct:get", "", String.class);
+public final class ContainerSupport {
+ private ContainerSupport() {
}
- @Path("/put")
- @POST
- @Produces(MediaType.TEXT_PLAIN)
- public String put(String content) {
- return template.requestBody("direct:put", content, String.class);
+ public static String getHostAndPort(GenericContainer<?> container, int port) {
+ return container.getContainerIpAddress() + ":" + container.getMappedPort(port).toString();
}
}