[
https://issues.apache.org/jira/browse/CAMEL-24588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18110631#comment-18110631
]
Federico Mariani commented on CAMEL-24588:
------------------------------------------
Fixed by PR https://github.com/apache/camel/pull/26040 (disables the two IBM MQ
tests on GitHub Actions only; Jenkins keeps running them).
_Claude Code on behalf of Croway_
> camel-jms: disable IBM MQ tests on GitHub Actions (icr.io image not reliably
> pullable)
> --------------------------------------------------------------------------------------
>
> Key: CAMEL-24588
> URL: https://issues.apache.org/jira/browse/CAMEL-24588
> Project: Camel
> Issue Type: Improvement
> Components: camel-jms, camel-test-infra
> Reporter: Federico Mariani
> Assignee: Federico Mariani
> Priority: Minor
> Fix For: 4.23.0
>
>
> _Update 2026-09-02: resolved by disabling the two tests on GitHub Actions
> only via {{@DisabledIfSystemProperty(named = "ci.env.name", matches =
> "github.com")}}, following the existing convention (110 tests already use
> it). Jenkins sets {{ci.env.name=apache.org}} and keeps running them. The
> abort-on-pull-failure proposal below is kept for reference as an option for
> camel-test-infra-common._
> ----
> {{JmsComponentIbmMQTest}} and {{JmsReplyToIbmMQTest}} start
> {{icr.io/ibm-messaging/mq:10.0.0.0-r3}} via Testcontainers. When icr.io is
> slow or unreachable from CI, the pull hits the Testcontainers 2-minute limit
> and the test class errors with {{ContainerFetchException}}. With
> {{-Dsurefire.rerunFailingTestsCount=2}} the class is retried, so a single
> registry hiccup costs ~18 minutes (292 s + 507 s + 292 s in PR #26024, run
> 33542426658) and fails the build for a reason unrelated to the code under
> test. The JDK 25 matrix job is then cancelled by fail-fast.
> Proposal: in {{IbmMQLocalContainerInfraService.initialize()}} catch
> {{ContainerFetchException}}, log a warning, and throw
> {{org.opentest4j.TestAbortedException}} so JUnit reports the class as aborted
> (skipped). Cache the failure in a static field so subsequent IBM MQ test
> classes in the same JVM abort immediately instead of waiting for the pull
> timeout again. Aborted classes are not retried by Surefire.
> Caveat: Surefire reports an aborted class as "Tests run: 0, Skipped: 0", so
> the skip is visible only through the log warning.
> h3. Other test-infra services that would benefit
> 50 test-infra modules start containers. The ones below are the most exposed,
> either because their image is not on the mirrors the project prefers
> ({{mirror.gcr.io}}, {{quay.io}}), or because they are used by plain {{*Test}}
> classes that run under Surefire in every PR build.
> Images pulled from registries outside the preferred mirrors (amd64):
> ||Module||Image||
> |camel-test-infra-ibmmq|{{icr.io/ibm-messaging/mq:10.0.0.0-r3}} (this issue)|
> |camel-test-infra-azure-common|{{mcr.microsoft.com/azure-storage/azurite:3.37.0}}|
> |camel-test-infra-elasticsearch|{{docker.elastic.co/elasticsearch/elasticsearch:9.1.0}}|
> |camel-test-infra-google-pubsub|{{gcr.io/google.com/cloudsdktool/cloud-sdk:emulators}}|
> |camel-test-infra-pinecone|{{ghcr.io/pinecone-io/pinecone-local:v1.0.0.rc0}}|
> |camel-test-infra-redis|{{ghcr.io/joeferner/redis-commander:0.9.1}} (UI
> companion)|
> |camel-test-infra-triton|{{nvcr.io/nvidia/tritonserver:24.12-py3}}|
> |camel-test-infra-weaviate|{{cr.weaviate.io/semitechnologies/weaviate:1.37.4}}|
> |camel-test-infra-mcp-everything|{{tzolov/mcp-everything-server:v3}} (Docker
> Hub, rate limited)|
> |camel-test-infra-tensorflow-serving|{{ibmcom/powerai:...-ppc64le}} (Docker
> Hub, ppc64le only)|
> In addition, 18 modules use {{icr.io/ppc64le-oss/*}} images for the ppc64le
> architecture only (artemis, consul, elasticsearch, fhir, hashicorp-vault,
> infinispan, keycloak, microprofile-lra, milvus, mongodb, neo4j, ollama,
> opensearch, pulsar, qdrant, rocketmq, weaviate, zookeeper). These only matter
> on the ppc64le Jenkins nodes but share the same registry as the IBM MQ image.
> Container-backed services referenced from {{*Test}} classes, so a pull
> failure fails a PR build rather than an IT run:
> ||Module||Image||References from *Test.java||
> |camel-test-infra-kafka|{{mirror.gcr.io/apache/kafka:4.3.1}} and variants|7|
> |camel-test-infra-aws-v2|{{mirror.gcr.io/floci/floci:1.7.0}}|6|
> |camel-test-infra-ibmmq|{{icr.io/ibm-messaging/mq:10.0.0.0-r3}}|4|
> (Artemis and Hazelcast are also used from {{*Test}} classes but default to
> embedded, in-JVM services, so they are not affected.)
> h3. Alternative: fix it once in camel-test-infra-common
> Instead of patching each service, the conversion of
> {{ContainerFetchException}} into {{TestAbortedException}} could live in
> {{TestServiceUtil.tryInitialize()}} (used by every
> {{TestService.beforeAll()}}) and {{SingletonService.doInitializeService()}},
> after the existing retry loop has given up. That would cover all 50
> container-backed modules with one change and keep per-service classes
> untouched. The trade-off is that a genuinely misconfigured image name would
> then be reported as a skip instead of a failure everywhere, so it should
> probably be opt-in via a system property (for example
> {{camel.test.infra.container.abortOnFetchFailure}}) that CI sets.
> _Drafted by Claude Code on behalf of Croway_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)