You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/08/30 18:15:17 UTC

[camel] branch camel-4.0.x updated: CAMEL-19810: Infinispan container in network host mode (#11242)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-4.0.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-4.0.x by this push:
     new b869c2d0a30 CAMEL-19810: Infinispan container in network host mode (#11242)
b869c2d0a30 is described below

commit b869c2d0a30acd36153ac3e63f553c60db601237
Author: Marco Carletti <mc...@redhat.com>
AuthorDate: Wed Aug 30 19:20:37 2023 +0200

    CAMEL-19810: Infinispan container in network host mode (#11242)
---
 .../infinispan/common/InfinispanProperties.java    |  2 ++
 .../services/InfinispanLocalContainerService.java  | 25 ++++++++++++++++++----
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/test-infra/camel-test-infra-infinispan/src/test/java/org/apache/camel/test/infra/infinispan/common/InfinispanProperties.java b/test-infra/camel-test-infra-infinispan/src/test/java/org/apache/camel/test/infra/infinispan/common/InfinispanProperties.java
index 7c80d241a7d..6efc69073b3 100644
--- a/test-infra/camel-test-infra-infinispan/src/test/java/org/apache/camel/test/infra/infinispan/common/InfinispanProperties.java
+++ b/test-infra/camel-test-infra-infinispan/src/test/java/org/apache/camel/test/infra/infinispan/common/InfinispanProperties.java
@@ -25,6 +25,8 @@ public final class InfinispanProperties {
     public static final String SERVICE_USERNAME = "infinispan.service.username";
     public static final String SERVICE_PASSWORD = "infinispan.service.password";
     public static final int DEFAULT_SERVICE_PORT = 11222;
+    public static final String INFINISPAN_CONTAINER_NETWORK_MODE_HOST = "infinispan.service.network.mode.host";
+    public static final boolean INFINISPAN_CONTAINER_NETWORK_MODE_HOST_DEFAULT = false;
 
     private InfinispanProperties() {
 
diff --git a/test-infra/camel-test-infra-infinispan/src/test/java/org/apache/camel/test/infra/infinispan/services/InfinispanLocalContainerService.java b/test-infra/camel-test-infra-infinispan/src/test/java/org/apache/camel/test/infra/infinispan/services/InfinispanLocalContainerService.java
index 340095db55b..e08057d1fd2 100644
--- a/test-infra/camel-test-infra-infinispan/src/test/java/org/apache/camel/test/infra/infinispan/services/InfinispanLocalContainerService.java
+++ b/test-infra/camel-test-infra-infinispan/src/test/java/org/apache/camel/test/infra/infinispan/services/InfinispanLocalContainerService.java
@@ -37,16 +37,19 @@ public class InfinispanLocalContainerService implements InfinispanService, Conta
     private static final Logger LOG = LoggerFactory.getLogger(InfinispanLocalContainerService.class);
 
     private final GenericContainer container;
+    private final boolean isNetworkHost;
 
     public InfinispanLocalContainerService() {
         this(System.getProperty(InfinispanProperties.INFINISPAN_CONTAINER, CONTAINER_IMAGE));
     }
 
     public InfinispanLocalContainerService(String containerImage) {
+        isNetworkHost = isHostNetworkMode();
         container = initContainer(containerImage, CONTAINER_NAME);
     }
 
     public InfinispanLocalContainerService(GenericContainer container) {
+        isNetworkHost = isHostNetworkMode();
         this.container = container;
     }
 
@@ -54,16 +57,21 @@ public class InfinispanLocalContainerService implements InfinispanService, Conta
         final Logger containerLog = LoggerFactory.getLogger("container." + containerName);
         final Consumer<OutputFrame> logConsumer = new Slf4jLogConsumer(containerLog);
 
-        return new GenericContainer<>(imageName)
+        final GenericContainer c = new GenericContainer<>(imageName)
                 .withNetworkAliases(containerName)
                 .withEnv("USER", DEFAULT_USERNAME)
                 .withEnv("PASS", DEFAULT_PASSWORD)
                 .withLogConsumer(logConsumer)
                 .withClasspathResourceMapping("infinispan.xml", "/user-config/infinispan.xml", BindMode.READ_ONLY)
                 .withCommand("-c", "/user-config/infinispan.xml")
-                .withExposedPorts(InfinispanProperties.DEFAULT_SERVICE_PORT)
-                .waitingFor(Wait.forListeningPort())
                 .waitingFor(Wait.forLogMessage(".*Infinispan.*Server.*started.*", 1));
+        if (isNetworkHost) {
+            c.withNetworkMode("host");
+        } else {
+            c.withExposedPorts(InfinispanProperties.DEFAULT_SERVICE_PORT)
+                    .waitingFor(Wait.forListeningPort());
+        }
+        return c;
     }
 
     @Override
@@ -73,6 +81,7 @@ public class InfinispanLocalContainerService implements InfinispanService, Conta
         System.setProperty(InfinispanProperties.SERVICE_ADDRESS, getServiceAddress());
         System.setProperty(InfinispanProperties.SERVICE_USERNAME, DEFAULT_USERNAME);
         System.setProperty(InfinispanProperties.SERVICE_PASSWORD, DEFAULT_PASSWORD);
+        System.setProperty(InfinispanProperties.INFINISPAN_CONTAINER_NETWORK_MODE_HOST, String.valueOf(isNetworkHost));
     }
 
     @Override
@@ -94,6 +103,7 @@ public class InfinispanLocalContainerService implements InfinispanService, Conta
         System.clearProperty(InfinispanProperties.SERVICE_ADDRESS);
         System.clearProperty(InfinispanProperties.SERVICE_USERNAME);
         System.clearProperty(InfinispanProperties.SERVICE_PASSWORD);
+        System.clearProperty(InfinispanProperties.INFINISPAN_CONTAINER_NETWORK_MODE_HOST);
     }
 
     @Override
@@ -108,7 +118,9 @@ public class InfinispanLocalContainerService implements InfinispanService, Conta
 
     @Override
     public int port() {
-        return container.getMappedPort(InfinispanProperties.DEFAULT_SERVICE_PORT);
+        return isNetworkHost
+                ? InfinispanProperties.DEFAULT_SERVICE_PORT
+                : container.getMappedPort(InfinispanProperties.DEFAULT_SERVICE_PORT);
     }
 
     @Override
@@ -125,4 +137,9 @@ public class InfinispanLocalContainerService implements InfinispanService, Conta
     public String password() {
         return DEFAULT_PASSWORD;
     }
+
+    private boolean isHostNetworkMode() {
+        return Boolean.parseBoolean(System.getProperty(InfinispanProperties.INFINISPAN_CONTAINER_NETWORK_MODE_HOST,
+                String.valueOf(InfinispanProperties.INFINISPAN_CONTAINER_NETWORK_MODE_HOST_DEFAULT)));
+    }
 }