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