Skip to content

[Bug]: Mongo image for power architecture is failing in testcontainer repo #7437

@prasanna-marathe

Description

@prasanna-marathe

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 cb74dfc

What 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions