Skip to content

QA: enable rpc-tests (perf) using go#20212

Merged
lupin012 merged 22 commits intomainfrom
lupin012/enable_perf_go_tool
Apr 2, 2026
Merged

QA: enable rpc-tests (perf) using go#20212
lupin012 merged 22 commits intomainfrom
lupin012/enable_perf_go_tool

Conversation

@lupin012
Copy link
Copy Markdown
Contributor

@lupin012 lupin012 commented Mar 28, 2026

This PR enables the new Go implementation within the performance workflow, providing several advantages over the legacy Python scripts:

  • Language-Level Benefits: Strong typing, compile-time checks, and superior concurrency via goroutines.
  • Generic Interface: Features a more abstract and reusable interface compared to the previous version.
  • Extensibility: Modular design suitable for diverse testing scenarios.
  • Unit Testing: Includes a dedicated test suite for the tool itself.

Note on Migration:
Initially, both Python and Go implementations will be available, but only the Go version will receive future updates. The Python implementation will be deprecated and removed in future PRs.

The updates to the script are:

  • Added the Run Migration step.
  • Any hanging rpcdaemon processes are now automatically killed.
  • Added a check to verify if rpcdaemon started successfully (as checking the return code is not sufficient for background processes); the workflow will now fail if the daemon is not active.
  • Added compilation and activation of the Go-based performance tool.
  • Fixed the saving logic for rpcdaemon.log.

lupin012 and others added 20 commits March 28, 2026 22:34
Log rpc.max.concurrency, db.read.concurrency, effective limit and
GOMAXPROCS to help diagnose admission control behaviour in CI.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Follow the same pattern as qa-rpc-integration-tests-remote.yml:
build integration binary alongside rpcdaemon and run migrations
on the reference datadir before starting rpcdaemon.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The rpcdaemon stdout is redirected to build/bin/erigon.log but the
upload step was looking at ERIGON_REFERENCE_DATA_DIR/logs/rpcdaemon.log.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Speed up test sequence during investigation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Port 8546 is already in use by the paused production erigon instance,
causing rpcdaemon to shut down immediately after start. Performance
tests use HTTP only so WebSocket is not needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Production erigon holds ports 8545/8546 even when paused.
Launch the test rpcdaemon on port 51515 and use --testing-client
other-daemon so rpc_perf connects to the correct instance.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@lupin012 lupin012 marked this pull request as ready for review March 31, 2026 20:09
@lupin012 lupin012 requested a review from yperbasis March 31, 2026 21:40
Copy link
Copy Markdown
Member

@mriccobene mriccobene left a comment

Choose a reason for hiding this comment

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

We need to discuss the introduction of the migration procedure.

working-directory: ${{ github.workspace }}/build/bin
run: |
echo "Running migrations on datadir..."
./integration run_migrations --datadir $ERIGON_REFERENCE_DATA_DIR --chain $CHAIN
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We cannot run migrations here; this workflow doesn't save the pre-built db before execution so it is not safe to modify it.

Copy link
Copy Markdown
Contributor Author

@lupin012 lupin012 Apr 1, 2026

Choose a reason for hiding this comment

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

Ok Removed Run Migration step as Ethereum, gnosis WorkFlow

@lupin012 lupin012 added performance github_actions Pull requests that update GitHub Actions code RPC QA labels Apr 1, 2026
@lupin012 lupin012 requested a review from mriccobene April 1, 2026 18:48
@lupin012 lupin012 changed the title QA: enable perf tool using go tool QA: enable rpc-tests (perf) using go Apr 1, 2026
@lupin012 lupin012 added this pull request to the merge queue Apr 2, 2026
Merged via the queue into main with commit 1d0ad36 Apr 2, 2026
35 checks passed
@lupin012 lupin012 deleted the lupin012/enable_perf_go_tool branch April 2, 2026 18:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actions Pull requests that update GitHub Actions code performance QA RPC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants