-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
Module
MongoDB
Testcontainers version
1.18.3
Using the latest Testcontainers version?
Yes
Host OS
Linux
Host Arch
PPC64LE(Power)
Docker version
[#testcontainers-java]# docker --version
Docker version v24.0.2, build cb74dfcWhat happened?
Need to test mongodb on power architecture using testcontainer repo.
Code in file modules/mongodb/src/main/java/org/testcontainers/containers/MongoDBContainer.java is updated as below:
private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName
.parse("icr.io/ppc64le-oss/mongodb-ppc64le8:4.4.18")
.asCompatibleSubstituteFor("mongo");
When code is run below error is observed when tried to build gradle build gradle build -p modules/mongodb/
[root@XXXX testcontainers-java]# gradle build -p modules/mongodb/
Configuration on demand is an incubating feature.
> Task :mongodb:test FAILED
Gradle Test Executor 22 > org.testcontainers.containers.MongoDBContainerTest > shouldExecuteTransactions STARTED
Gradle Test Executor 22 > org.testcontainers.containers.MongoDBContainerTest > shouldExecuteTransactions FAILED
java.lang.IllegalStateException: Failed to verify that image 'mongo:4.0.10' is a compatible substitute for 'mongodb-ppc64le8'. This generally means that you are trying to use an image that Testcontainers has not been designed to use. If this is deliberate, and if you are confident that the image is compatible, you should declare compatibility in code using the `asCompatibleSubstituteFor` method. For example:
DockerImageName myImage = DockerImageName.parse("mongo:4.0.10").asCompatibleSubstituteFor("mongodb-ppc64le8");
and then use `myImage` instead.
at org.testcontainers.utility.DockerImageName.assertCompatibleWith(DockerImageName.java:279)
at org.testcontainers.containers.MongoDBContainer.<init>(MongoDBContainer.java:63)
at org.testcontainers.containers.MongoDBContainerTest.shouldExecuteTransactions(MongoDBContainerTest.java:27)
Relevant log output
Complete log attached here:
[root@XXXX testcontainers-java]# gradle build -p modules/mongodb/
Configuration on demand is an incubating feature.
> Task :buildSrc:compileJava NO-SOURCE
> Task :buildSrc:compileGroovy UP-TO-DATE
> Task :buildSrc:pluginDescriptors UP-TO-DATE
> Task :buildSrc:processResources NO-SOURCE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:jar UP-TO-DATE
> Task :testcontainers:compileJava UP-TO-DATE
> Task :mongodb:compileJava
> Task :mongodb:processResources UP-TO-DATE
> Task :mongodb:classes
> Task :mongodb:jar
> Task :mongodb:assemble
> Task :mongodb:compileTestJava UP-TO-DATE
> Task :mongodb:processTestResources UP-TO-DATE
> Task :mongodb:testClasses UP-TO-DATE
> Task :mongodb:shadowJar
> Task :mongodb:japicmp UP-TO-DATE
> Task :mongodb:delombok
> Task :mongodb:checkstyleMain
> Task :mongodb:javadoc
> Task :spotlessInternalRegisterDependencies UP-TO-DATE
> Task :mongodb:spotlessGroovyGradle UP-TO-DATE
> Task :mongodb:spotlessGroovyGradleCheck UP-TO-DATE
> Task :mongodb:checkstyleTest
> Task :mongodb:spotlessJava
> Task :mongodb:spotlessJavaCheck
> Task :mongodb:spotlessCheck
> Task :testcontainers:processResources UP-TO-DATE
> Task :testcontainers:classes UP-TO-DATE
> Task :testcontainers:jar UP-TO-DATE
> Task :testcontainers:shadowJar UP-TO-DATE
> Task :mongodb:test FAILED
Gradle Test Executor 22 > org.testcontainers.containers.MongoDBContainerTest > shouldExecuteTransactions STARTED
Gradle Test Executor 22 > org.testcontainers.containers.MongoDBContainerTest > shouldExecuteTransactions FAILED
java.lang.IllegalStateException: Failed to verify that image 'mongo:4.0.10' is a compatible substitute for 'mongodb-ppc64le8'. This generally means that you are trying to use an image that Testcontainers has not been designed to use. If this is deliberate, and if you are confident that the image is compatible, you should declare compatibility in code using the `asCompatibleSubstituteFor` method. For example:
DockerImageName myImage = DockerImageName.parse("mongo:4.0.10").asCompatibleSubstituteFor("mongodb-ppc64le8");
and then use `myImage` instead.
at org.testcontainers.utility.DockerImageName.assertCompatibleWith(DockerImageName.java:279)
at org.testcontainers.containers.MongoDBContainer.<init>(MongoDBContainer.java:63)
at org.testcontainers.containers.MongoDBContainerTest.shouldExecuteTransactions(MongoDBContainerTest.java:27)Additional Information
Code is tried to build on Power machine.
[root@xxxx testcontainers-java]# java -version
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (build 1.8.0_382-b05)
OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)
[root@xxxx testcontainers-java]# javac -version
javac 1.8.0_382
[root@xxxx testcontainers-java]#
Gradle Version
root@xxxx testcontainers-java]# gradle -version
Gradle 8.3
Build time: 2023-08-17 07:06:47 UTC
Revision: 8afbf24b469158b714b36e84c6f4d4976c86fcd5
Kotlin: 1.9.0
Groovy: 3.0.17
Ant: Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM: 1.8.0_382 (Red Hat, Inc. 25.382-b05)
OS: Linux 4.18.0-477.21.1.el8_8.ppc64le ppc64le