Skip to content

test: run integration suite against released live node - #405

Open
Cryptoloveer wants to merge 4 commits into
attocash:mainfrom
Cryptoloveer:test/live-node-integration
Open

Cryptoloveer wants to merge 4 commits into
attocash:mainfrom
Cryptoloveer:test/live-node-integration

Conversation

@Cryptoloveer

@Cryptoloveer Cryptoloveer commented Sep 14, 2026 •

Copy link
Copy Markdown

Problem

The integration suite currently starts neighbour nodes from the same classpath under test. That preserves coverage but only validates the current implementation against itself, so compatibility regressions with the released network image can be missed.

Fix

  • Keep the existing classpath neighbour mode as the default.
  • Add a live neighbour mode that starts a fresh ghcr.io/attocash/node:live container.
  • Reuse the generated local signer, genesis transaction, isolated database, and random node ports.
  • Force the container onto the local test profile while preserving the released native binary.
  • Pull the :live image for every run.
  • Run classpath and live integration suites in parallel in pull-request CI.

Validation

  • The classpath integration suite passed.
  • The released ghcr.io/attocash/node:live integration suite passed.
  • The branch is synchronized with the latest main and ready for review.

Reward address

atto://ad5mogtl3hfcherkbufxiewl7k74q7svljqdfgnby7d52lj4o2ifh2horqj6u

Closes #271.

@Cryptoloveer

Copy link
Copy Markdown
Author

The classpath and :live paths are implemented as separate CI matrix jobs, with classpath remaining the default locally. The branch is synchronized with current main. Could a maintainer approve the fork workflow so both suites can validate the container networking and released-image compatibility before this is marked ready?

@rotilho rotilho added the contribution-minor Small improvements or bug fixes label Sep 15, 2026
@atto-reward-bot

Copy link
Copy Markdown

Thank you for your contribution! 🎉 This PR is eligible for an contribution-minor reward as a token of our appreciation. If you'd like to receive it, please add your address to the description of this PR. 🙏

@rotilho

rotilho commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Hey @Cryptoloveer! Is your PR ready for review? The PR is still marked as a draft, so I just wanted to check if there’s anything still unfinished.

@atto-reward-bot

Copy link
Copy Markdown

Thank you for your contribution! 🎉 This PR is eligible for an contribution-minor reward as a token of our appreciation. If you'd like to receive it, please add your address to the description of this PR. 🙏

@atto-reward-bot

Copy link
Copy Markdown

Thank you for your contribution! 🎉 This PR is eligible for an contribution-minor reward as a token of our appreciation and will be sent to atto://ad5mogtl3hfcherkbufxiewl7k74q7svljqdfgnby7d52lj4o2ifh2horqj6u once merged. Please note that rewards are not payments but our way of saying thank you. 🙏

@atto-reward-bot atto-reward-bot Bot added the reward-informed Contributor has been informed about their reward. label Oct 3, 2026
@Cryptoloveer
Cryptoloveer marked this pull request as ready for review October 3, 2026 08:42
@Cryptoloveer
Cryptoloveer requested a review from a team as a code owner October 3, 2026 08:42
@Cryptoloveer

Copy link
Copy Markdown
Author

Yes—this is ready for review now. Both the classpath and released :live integration jobs passed, the branch is synchronized with current main, and the reward address has been added to the description.

@rotilho rotilho left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for putting this together! Would you mind confirming whether you’ve had a chance to run the full suite against the released :live image?

- uses: gradle/actions/setup-gradle@v6

- run: ./gradlew ${{ inputs.agent_enabled && '-Pagent' || '' }} test --no-daemon --info --fail-fast
- run: ./gradlew ${{ inputs.agent_enabled && '-Pagent' || '' }} test --no-daemon --info --fail-fast -Datto.test.neighbour-mode=${{ inputs.neighbour_mode }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This need to be forward to the test. The current implementation as-is always use classpath

Comment on lines 115 to +116

@Given("is a default node")
fun setAsDefaultNode() {
val neighbour = PropertyHolder[Neighbour::class.java]
networkProperties.defaultNodes.add("ws://localhost:${neighbour.websocketPort}")
private fun startLiveNode(args: Array<String>) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Loopback should be allowed, the node blocks loopback with the default configs.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contribution-minor Small improvements or bug fixes reward-informed Contributor has been informed about their reward.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use Released Node as Peer During Integration Tests

2 participants