Skip to content

IGNITE-28738 RU testcontainers test: fix class injection, Linux fast-path, faster shutdown#1

Merged
wernerdv merged 1 commit into
wernerdv:testcontainersfrom
anton-vinogradov:ignite-28738-ru-fixes
Jun 26, 2026
Merged

IGNITE-28738 RU testcontainers test: fix class injection, Linux fast-path, faster shutdown#1
wernerdv merged 1 commit into
wernerdv:testcontainersfrom
anton-vinogradov:ignite-28738-ru-fixes

Conversation

@anton-vinogradov

Copy link
Copy Markdown

Fixes and improvements on top of apache#13184 (the testcontainers Rolling Upgrade test).

I ran the test on macOS and it did not pass as-is — the containerized nodes died on startup with NoClassDefFoundError (the injected test-classes jar was missing the plugin provider's nested classes and the Disabled*Processor classes), so the wait strategy timed out after 600s. This branch fixes that and a few related things.

What's here

  • Complete the test-class injection so the old-version containers can start: each class is bundled together with its nested classes, and DisabledRollingUpgradeProcessor / DisabledValidationProcessor are added.
  • OS-aware networking — macOS keeps the existing published-port / host.docker.internal path; Linux gets a direct path (container bridge IP + Docker network gateway), which removes the Docker-Desktop VM-proxy latency.
  • Faster container shutdown (60s → 10s wait): graceful SIGTERM doesn't complete, the node is force-stopped anyway. ~423s → ~250s end to end on macOS.
  • SOURCE_COMMIT_HASH overridable via -Dru.source.commit.hash (handy for CI).
  • assertTrue on the topology wait (was ignored) + boxed Integer compare in the verification loop (avoids an NPE on a missing key).

Verification

  • macOS: Tests run: 1, Failures: 0, Errors: 0 — green.
  • Linux: the path compiles and its addressing primitives (bridge IP, gateway, routing) are validated, but a real Linux/CI run is still needed — I could only run macOS here.

🤖 Generated with Claude Code

…path, faster shutdown

- testClassesJar: inject each listed class together with its nested classes (the
  plugin provider's anonymous classes) and add DisabledRollingUpgradeProcessor /
  DisabledValidationProcessor. Without this the containerized nodes fail to start
  (NoClassDefFoundError) and the test times out after 600s on a clean checkout.

- OS-aware networking. Keep the macOS path (host<->container via published ports +
  ContainerAddressResolver + host.docker.internal) and add a direct Linux path:
  containers are reached at their Docker bridge IP, the host node is reached at the
  Docker network gateway. Removes the Docker-Desktop VM-proxy latency on Linux/CI.

- Container shutdown wait 60s -> 10s. Graceful SIGTERM does not complete (the image
  entrypoint does not forward it), so the node is force-stopped anyway; this saved
  ~50s per node (~423s -> ~250s end to end on macOS).

- SOURCE_COMMIT_HASH overridable via -Dru.source.commit.hash.

- assertTrue on the post-upgrade topology waitForCondition (was silently ignored);
  compare verified values as boxed Integer to avoid an NPE on a missing key.

Verified green on macOS. The Linux path compiles and its addressing primitives are
validated, but a full Linux/CI run is still required.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@wernerdv
wernerdv merged commit ae1ea9c into wernerdv:testcontainers Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants