Skip to content

feat(ci): add integration test workflows (single-node + multinode)#6789

Open
warku123 wants to merge 4 commits into
tronprotocol:release_v4.8.2from
warku123:feat/ci-integration-tests
Open

feat(ci): add integration test workflows (single-node + multinode)#6789
warku123 wants to merge 4 commits into
tronprotocol:release_v4.8.2from
warku123:feat/ci-integration-tests

Conversation

@warku123
Copy link
Copy Markdown
Contributor

@warku123 warku123 commented May 20, 2026

What does this PR do?

Adds two GitHub Actions workflows that gate PRs to release_v4.8.2 (and develop, release_**) with the modernized integration test suite, and removes system-test.yml since the new workflows supersede it. Single-node and multinode workflows build FullNode.jar from the PR, pull troninfra/troninfra-ci:latest (public DockerHub image), and run the full integration test target against the freshly-built jar.

The integration test image is published from a separate upstream-owned repo (tron_integration-test/java-tron_integration-test on internal GitLab); its release pipeline pushes vX.Y.Z + :latest tags to DockerHub. This PR's workflows just consume that published image — no source access required.

Why are these changes required?

The integration test suite (JUnit 5 + AssertJ on TronTestBase fixtures) covers gRPC / HTTP / JSON-RPC, V2 staking, governance, smart contracts, event subscription, multi-witness consensus boundaries, and several other areas that system-test either didn't touch or asserted only weakly on. Up to now it has been a pre-release manual gate; wiring it into PR CI catches integration regressions before merge instead of after.

This PR has been tested by:

  • Manual Testing — fork PR warku123/java-tron#5 ran Integration Test Single Node (Full), 73/73 pass.
  • Manual Testing — fork PR warku123/java-tron#7 ran Integration Test Multinode (Full), all multinode tests pass.

Follow up

  • Two assertions in the integration suite hard-code java.version.startsWith("1.8"). The workflow works around it by setting JAVA_HOME to JDK 8 inside the container; the assertions themselves will be relaxed in a separate MR on the integration-test repo.
  • If multinode's per-PR runner cost becomes a pain point, it can be moved to nightly + workflow_dispatch later.

Extra details

  • Wall-clock impact: ~24 min ceiling from multinode (vs ~19.5 min for pr-build) — net +5 min on PR wall-clock.
  • Image dependency: troninfra/troninfra-ci:latest is public and rolls forward on each vX.Y.Z tag from the integration-test repo. Workflows can be pinned to a specific tag if needed.

warku123 added 3 commits May 20, 2026 15:50
Pulls troninfra/troninfra-ci:latest from DockerHub on every PR/dispatch
and runs the integration test suite against the FullNode.jar built
from the PR. Uses JDK 8 inside the container so FullNode runs on the
production runtime; JAVA_HOME_17 keeps Gradle on JDK 17 for the test
tooling.

Image is built and published from a separate repo
(tron_integration-test/java-tron_integration-test) as part of that
project's release pipeline (vX.Y.Z tag push).
Mirrors the single-node workflow but starts a 3-witness docker-compose
stack via the integration-test image and runs the multinode test
target against it. HOST_WORKDIR is set so the script's path-alignment
logic resolves compose configs to host paths usable by the host
docker daemon (DinD via socket mount).

Builds the PR's FullNode.jar, wraps it in a local docker image that
inherits from tronprotocol/java-tron:latest, and injects it into the
multinode stack via TRON_IMAGE.
Both Integration Test workflows (Single Node / Multinode, Full) cover
strictly more than the existing System Test runs. Drop System Test from
the PR + push auto-trigger set so every commit doesn't pay the ~7 min
runner cost twice for overlapping coverage. workflow_dispatch is kept
so a regression suspect can still run stest manually from the Actions
UI if needed.

To re-enable for routine PR runs, uncomment the push + pull_request
blocks at the top of the file.
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.

1 participant