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

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit de8b4336b164ed69c264409176ad43016bc20651
Author: Otavio Rodolfo Piske <angusyo...@gmail.com>
AuthorDate: Fri Jan 3 11:07:21 2025 +0100

    CAMEL-21585: resolve platform containers automatically
---
 .../test/infra/common/LocalPropertyResolver.java      | 19 +++++++++++++++++++
 .../vault/common/HashicorpVaultProperties.java        |  1 -
 .../services/HashicorpVaultLocalContainerService.java | 11 +----------
 .../test/infra/milvus/common/MilvusProperties.java    |  3 ---
 .../milvus/services/MilvusLocalContainerService.java  | 11 +----------
 .../test/infra/mongodb/common/MongoDBProperties.java  |  1 -
 .../services/MongoDBLocalContainerService.java        | 11 +----------
 .../infra/opensearch/common/OpenSearchProperties.java |  1 -
 .../services/OpenSearchLocalContainerService.java     | 11 +----------
 .../serving/common/TensorFlowServingProperties.java   |  1 -
 .../TensorFlowServingLocalContainerService.java       |  6 ++----
 .../tensorflow/serving/services/container.properties  |  2 +-
 12 files changed, 26 insertions(+), 52 deletions(-)

diff --git 
a/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/LocalPropertyResolver.java
 
b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/LocalPropertyResolver.java
index 884a5f478fe..3d5fa1d440c 100644
--- 
a/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/LocalPropertyResolver.java
+++ 
b/test-infra/camel-test-infra-common/src/test/java/org/apache/camel/test/infra/common/LocalPropertyResolver.java
@@ -24,6 +24,12 @@ public class LocalPropertyResolver {
 
     public static final String CONTAINER_PROPERTIES_FILE_NAME = 
"container.properties";
 
+    /**
+     * Resolves the container to use. Platform-specific containers are 
resolved automatically
+     *
+     * @param  propertyName The property name pointing to the container
+     * @return
+     */
     public static String getProperty(Class<?> clazz, String propertyName) {
         return System.getProperty(propertyName, 
getPropertyFromContainersPropertiesFile(clazz, propertyName));
     }
@@ -39,6 +45,19 @@ public class LocalPropertyResolver {
             throw new RuntimeException(errorMessage, e);
         }
 
+        return resolveProperty(properties, propertyName);
+    }
+
+    private static String resolveProperty(Properties properties, String 
propertyName) {
+        // This should append the 'os.arch' version to the property 
(typically, one of amd64, aarch64, ppc64le or s390x)
+        String platformProperty = String.format("%s.%s", propertyName, 
System.getProperty("os.arch"));
+
+        // Platform properties take precedence
+        String value = properties.getProperty(platformProperty);
+        if (value != null && !value.isEmpty()) {
+            return value;
+        }
+
         return properties.getProperty(propertyName);
     }
 
diff --git 
a/test-infra/camel-test-infra-hashicorp-vault/src/test/java/org/apache/camel/test/infra/hashicorp/vault/common/HashicorpVaultProperties.java
 
b/test-infra/camel-test-infra-hashicorp-vault/src/test/java/org/apache/camel/test/infra/hashicorp/vault/common/HashicorpVaultProperties.java
index 9810ac5cd5e..6e954df8c03 100644
--- 
a/test-infra/camel-test-infra-hashicorp-vault/src/test/java/org/apache/camel/test/infra/hashicorp/vault/common/HashicorpVaultProperties.java
+++ 
b/test-infra/camel-test-infra-hashicorp-vault/src/test/java/org/apache/camel/test/infra/hashicorp/vault/common/HashicorpVaultProperties.java
@@ -19,7 +19,6 @@ package org.apache.camel.test.infra.hashicorp.vault.common;
 
 public final class HashicorpVaultProperties {
     public static final String HASHICORP_VAULT_CONTAINER = 
"hashicorp.vault.container";
-    public static final String HASHICORP_VAULT_CONTAINER_PPC64LE = 
"hashicorp.vault.container.ppc64le";
     public static final String HASHICORP_VAULT_ADDRESS = 
"hashicorp.vault.address";
     public static final String HASHICORP_VAULT_HOST = "hashicorp.vault.host";
     public static final String HASHICORP_VAULT_PORT = "hashicorp.vault.port";
diff --git 
a/test-infra/camel-test-infra-hashicorp-vault/src/test/java/org/apache/camel/test/infra/hashicorp/vault/services/HashicorpVaultLocalContainerService.java
 
b/test-infra/camel-test-infra-hashicorp-vault/src/test/java/org/apache/camel/test/infra/hashicorp/vault/services/HashicorpVaultLocalContainerService.java
index 4be9a28a802..8c4753198df 100644
--- 
a/test-infra/camel-test-infra-hashicorp-vault/src/test/java/org/apache/camel/test/infra/hashicorp/vault/services/HashicorpVaultLocalContainerService.java
+++ 
b/test-infra/camel-test-infra-hashicorp-vault/src/test/java/org/apache/camel/test/infra/hashicorp/vault/services/HashicorpVaultLocalContainerService.java
@@ -43,7 +43,6 @@ import org.testcontainers.containers.GenericContainer;
 import org.testcontainers.containers.output.OutputFrame;
 import org.testcontainers.containers.output.Slf4jLogConsumer;
 import org.testcontainers.containers.wait.strategy.Wait;
-import org.testcontainers.shaded.org.apache.commons.lang3.SystemUtils;
 
 public class HashicorpVaultLocalContainerService implements 
HashicorpVaultService, ContainerService<GenericContainer<?>> {
     public static final String CONTAINER_NAME = "hashicorp-vault";
@@ -56,15 +55,7 @@ public class HashicorpVaultLocalContainerService implements 
HashicorpVaultServic
     public HashicorpVaultLocalContainerService() {
         this(LocalPropertyResolver.getProperty(
                 HashicorpVaultLocalContainerService.class,
-                getPropertyKeyForContainerImage()));
-    }
-
-    private static String getPropertyKeyForContainerImage() {
-        if ("ppc64le".equals(SystemUtils.OS_ARCH)) {
-            return HashicorpVaultProperties.HASHICORP_VAULT_CONTAINER_PPC64LE;
-        } else {
-            return HashicorpVaultProperties.HASHICORP_VAULT_CONTAINER;
-        }
+                HashicorpVaultProperties.HASHICORP_VAULT_CONTAINER));
     }
 
     public HashicorpVaultLocalContainerService(String containerImage) {
diff --git 
a/test-infra/camel-test-infra-milvus/src/test/java/org/apache/camel/test/infra/milvus/common/MilvusProperties.java
 
b/test-infra/camel-test-infra-milvus/src/test/java/org/apache/camel/test/infra/milvus/common/MilvusProperties.java
index 1742be61fc0..79803904f41 100644
--- 
a/test-infra/camel-test-infra-milvus/src/test/java/org/apache/camel/test/infra/milvus/common/MilvusProperties.java
+++ 
b/test-infra/camel-test-infra-milvus/src/test/java/org/apache/camel/test/infra/milvus/common/MilvusProperties.java
@@ -19,12 +19,9 @@ package org.apache.camel.test.infra.milvus.common;
 
 public final class MilvusProperties {
     public static final String MILVUS_ENDPOINT_URL = "milvus.endpoint.url";
-
     public static final String MILVUS_ENDPOINT_HOST = "milvus.endpoint.host";
-
     public static final String MILVUS_ENDPOINT_PORT = "milvus.endpoint.port";
     public static final String MILVUS_CONTAINER = "milvus.container";
-    public static final String MILVUS_CONTAINER_PPC64LE = 
"milvus.container.ppc64le";
 
     private MilvusProperties() {
 
diff --git 
a/test-infra/camel-test-infra-milvus/src/test/java/org/apache/camel/test/infra/milvus/services/MilvusLocalContainerService.java
 
b/test-infra/camel-test-infra-milvus/src/test/java/org/apache/camel/test/infra/milvus/services/MilvusLocalContainerService.java
index 18626bba209..52cd4f48a64 100644
--- 
a/test-infra/camel-test-infra-milvus/src/test/java/org/apache/camel/test/infra/milvus/services/MilvusLocalContainerService.java
+++ 
b/test-infra/camel-test-infra-milvus/src/test/java/org/apache/camel/test/infra/milvus/services/MilvusLocalContainerService.java
@@ -26,7 +26,6 @@ import 
org.apache.camel.test.infra.milvus.common.MilvusProperties;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testcontainers.milvus.MilvusContainer;
-import org.testcontainers.shaded.org.apache.commons.lang3.SystemUtils;
 import org.testcontainers.utility.DockerImageName;
 
 public class MilvusLocalContainerService implements MilvusService, 
ContainerService<MilvusContainer> {
@@ -36,15 +35,7 @@ public class MilvusLocalContainerService implements 
MilvusService, ContainerServ
     private final MilvusContainer container;
 
     public MilvusLocalContainerService() {
-        
this(LocalPropertyResolver.getProperty(MilvusLocalContainerService.class, 
getPropertyKeyForContainerImage()));
-    }
-
-    private static String getPropertyKeyForContainerImage() {
-        if ("ppc64le".equals(SystemUtils.OS_ARCH)) {
-            return MilvusProperties.MILVUS_CONTAINER_PPC64LE;
-        } else {
-            return MilvusProperties.MILVUS_CONTAINER;
-        }
+        
this(LocalPropertyResolver.getProperty(MilvusLocalContainerService.class, 
MilvusProperties.MILVUS_CONTAINER));
     }
 
     public MilvusLocalContainerService(String imageName) {
diff --git 
a/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/common/MongoDBProperties.java
 
b/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/common/MongoDBProperties.java
index 401e8e20dd3..45690207000 100644
--- 
a/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/common/MongoDBProperties.java
+++ 
b/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/common/MongoDBProperties.java
@@ -21,7 +21,6 @@ public final class MongoDBProperties {
     public static final String MONGODB_URL = "mongodb.url";
     public static final String MONGODB_CONNECTION_ADDRESS = 
"mongodb.connection.address";
     public static final String MONGODB_CONTAINER = "mongodb.container";
-    public static final String MONGODB_CONTAINER_PPC64LE = 
"mongodb.container.ppc64le";
 
     private MongoDBProperties() {
 
diff --git 
a/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/services/MongoDBLocalContainerService.java
 
b/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/services/MongoDBLocalContainerService.java
index 7a16311d9ea..45f248f262f 100644
--- 
a/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/services/MongoDBLocalContainerService.java
+++ 
b/test-infra/camel-test-infra-mongodb/src/test/java/org/apache/camel/test/infra/mongodb/services/MongoDBLocalContainerService.java
@@ -23,7 +23,6 @@ import 
org.apache.camel.test.infra.mongodb.common.MongoDBProperties;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testcontainers.containers.MongoDBContainer;
-import org.testcontainers.shaded.org.apache.commons.lang3.SystemUtils;
 import org.testcontainers.utility.DockerImageName;
 
 public class MongoDBLocalContainerService implements MongoDBService, 
ContainerService<MongoDBContainer> {
@@ -32,15 +31,7 @@ public class MongoDBLocalContainerService implements 
MongoDBService, ContainerSe
     private final MongoDBContainer container;
 
     public MongoDBLocalContainerService() {
-        
this(LocalPropertyResolver.getProperty(MongoDBLocalContainerService.class, 
getPropertyKeyForContainerImage()));
-    }
-
-    private static String getPropertyKeyForContainerImage() {
-        if ("ppc64le".equals(SystemUtils.OS_ARCH)) {
-            return MongoDBProperties.MONGODB_CONTAINER_PPC64LE;
-        } else {
-            return MongoDBProperties.MONGODB_CONTAINER;
-        }
+        
this(LocalPropertyResolver.getProperty(MongoDBLocalContainerService.class, 
MongoDBProperties.MONGODB_CONTAINER));
     }
 
     public MongoDBLocalContainerService(String imageName) {
diff --git 
a/test-infra/camel-test-infra-opensearch/src/test/java/org/apache/camel/test/infra/opensearch/common/OpenSearchProperties.java
 
b/test-infra/camel-test-infra-opensearch/src/test/java/org/apache/camel/test/infra/opensearch/common/OpenSearchProperties.java
index 6e2fb94e56a..03bca15e2ad 100644
--- 
a/test-infra/camel-test-infra-opensearch/src/test/java/org/apache/camel/test/infra/opensearch/common/OpenSearchProperties.java
+++ 
b/test-infra/camel-test-infra-opensearch/src/test/java/org/apache/camel/test/infra/opensearch/common/OpenSearchProperties.java
@@ -25,7 +25,6 @@ public final class OpenSearchProperties {
     public static final String OPEN_SEARCH_USERNAME = "opensearch.username";
     public static final String OPEN_SEARCH_PASSWORD = "opensearch.password";
     public static final String OPEN_SEARCH_CONTAINER = "opensearch.container";
-    public static final String OPEN_SEARCH_CONTAINER_PPC64LE = 
"opensearch.container.ppc64le";
     public static final String OPEN_SEARCH_CONTAINER_STARTUP
             = OPEN_SEARCH_CONTAINER + 
ContainerEnvironmentUtil.STARTUP_ATTEMPTS_PROPERTY;
 
diff --git 
a/test-infra/camel-test-infra-opensearch/src/test/java/org/apache/camel/test/infra/opensearch/services/OpenSearchLocalContainerService.java
 
b/test-infra/camel-test-infra-opensearch/src/test/java/org/apache/camel/test/infra/opensearch/services/OpenSearchLocalContainerService.java
index 52629288911..69409d69cfd 100644
--- 
a/test-infra/camel-test-infra-opensearch/src/test/java/org/apache/camel/test/infra/opensearch/services/OpenSearchLocalContainerService.java
+++ 
b/test-infra/camel-test-infra-opensearch/src/test/java/org/apache/camel/test/infra/opensearch/services/OpenSearchLocalContainerService.java
@@ -28,7 +28,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testcontainers.containers.output.Slf4jLogConsumer;
 import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
-import org.testcontainers.shaded.org.apache.commons.lang3.SystemUtils;
 import org.testcontainers.utility.DockerImageName;
 
 public class OpenSearchLocalContainerService implements OpenSearchService, 
ContainerService<OpensearchContainer> {
@@ -40,15 +39,7 @@ public class OpenSearchLocalContainerService implements 
OpenSearchService, Conta
 
     public OpenSearchLocalContainerService() {
         
this(LocalPropertyResolver.getProperty(OpenSearchLocalContainerService.class,
-                getPropertyKeyForContainerImage()));
-    }
-
-    private static String getPropertyKeyForContainerImage() {
-        if ("ppc64le".equals(SystemUtils.OS_ARCH)) {
-            return OpenSearchProperties.OPEN_SEARCH_CONTAINER_PPC64LE;
-        } else {
-            return OpenSearchProperties.OPEN_SEARCH_CONTAINER;
-        }
+                OpenSearchProperties.OPEN_SEARCH_CONTAINER));
     }
 
     public OpenSearchLocalContainerService(String imageName) {
diff --git 
a/test-infra/camel-test-infra-tensorflow-serving/src/test/java/org/apache/camel/test/infra/tensorflow/serving/common/TensorFlowServingProperties.java
 
b/test-infra/camel-test-infra-tensorflow-serving/src/test/java/org/apache/camel/test/infra/tensorflow/serving/common/TensorFlowServingProperties.java
index 74424c955aa..f397dd28b90 100644
--- 
a/test-infra/camel-test-infra-tensorflow-serving/src/test/java/org/apache/camel/test/infra/tensorflow/serving/common/TensorFlowServingProperties.java
+++ 
b/test-infra/camel-test-infra-tensorflow-serving/src/test/java/org/apache/camel/test/infra/tensorflow/serving/common/TensorFlowServingProperties.java
@@ -20,7 +20,6 @@ public class TensorFlowServingProperties {
     public static final String TENSORFLOW_SERVING_GRPC_PORT = 
"tensorflow.serving.grpc.port";
     public static final String TENSORFLOW_SERVING_REST_PORT = 
"tensorflow.serving.rest.port";
     public static final String TENSORFLOW_SERVING_CONTAINER = 
"tensorflow.serving.container";
-    public static final String TENSORFLOW_SERVING_CONTAINER_ARM64 = 
"tensorflow.serving.container.arm64";
 
     private TensorFlowServingProperties() {
     }
diff --git 
a/test-infra/camel-test-infra-tensorflow-serving/src/test/java/org/apache/camel/test/infra/tensorflow/serving/services/TensorFlowServingLocalContainerService.java
 
b/test-infra/camel-test-infra-tensorflow-serving/src/test/java/org/apache/camel/test/infra/tensorflow/serving/services/TensorFlowServingLocalContainerService.java
index 289574571f1..9561b918019 100644
--- 
a/test-infra/camel-test-infra-tensorflow-serving/src/test/java/org/apache/camel/test/infra/tensorflow/serving/services/TensorFlowServingLocalContainerService.java
+++ 
b/test-infra/camel-test-infra-tensorflow-serving/src/test/java/org/apache/camel/test/infra/tensorflow/serving/services/TensorFlowServingLocalContainerService.java
@@ -41,10 +41,8 @@ public class TensorFlowServingLocalContainerService 
implements TensorFlowServing
     @SuppressWarnings("resource")
     protected GenericContainer<?> initContainer() {
         boolean isArm64 = System.getProperty("os.arch").equals("aarch64");
-        String containerProp = isArm64
-                ? 
TensorFlowServingProperties.TENSORFLOW_SERVING_CONTAINER_ARM64
-                : TensorFlowServingProperties.TENSORFLOW_SERVING_CONTAINER;
-        String imageName = 
LocalPropertyResolver.getProperty(TensorFlowServingLocalContainerService.class, 
containerProp);
+        String imageName = 
LocalPropertyResolver.getProperty(TensorFlowServingLocalContainerService.class,
+                TensorFlowServingProperties.TENSORFLOW_SERVING_CONTAINER);
         if (isArm64) {
             // Bitnami's TF Serving image supports ARM64
             return new GenericContainer<>(DockerImageName.parse(imageName))
diff --git 
a/test-infra/camel-test-infra-tensorflow-serving/src/test/resources/org/apache/camel/test/infra/tensorflow/serving/services/container.properties
 
b/test-infra/camel-test-infra-tensorflow-serving/src/test/resources/org/apache/camel/test/infra/tensorflow/serving/services/container.properties
index f19099580a0..a8eaa1e637a 100644
--- 
a/test-infra/camel-test-infra-tensorflow-serving/src/test/resources/org/apache/camel/test/infra/tensorflow/serving/services/container.properties
+++ 
b/test-infra/camel-test-infra-tensorflow-serving/src/test/resources/org/apache/camel/test/infra/tensorflow/serving/services/container.properties
@@ -15,4 +15,4 @@
 ## limitations under the License.
 ## ---------------------------------------------------------------------------
 tensorflow.serving.container=tensorflow/serving:2.18.0
-tensorflow.serving.container.arm64=bitnami/tensorflow-serving:2.18.0
+tensorflow.serving.container.aarch64=bitnami/tensorflow-serving:2.18.0

Reply via email to