Skip to content

feat(load-test): support native load-test benchmark runs#186

Draft
niran wants to merge 9 commits into
mainfrom
niran/load-test-reports
Draft

feat(load-test): support native load-test benchmark runs#186
niran wants to merge 9 commits into
mainfrom
niran/load-test-reports

Conversation

@niran
Copy link
Copy Markdown
Contributor

@niran niran commented May 16, 2026

Summary

  • Add a load-test benchmark payload that runs base-load-tester from a native YAML config referenced by config_file.
  • Write normal load-test JSON reports to output/load-tests/<network>/<timestamp>.json via LOAD_TEST_OUTPUT, so benchmark-triggered load tests publish into the existing load-test results namespace without custom UI handling.
  • Overlay only benchmark-controlled runtime fields in the native load-test config: transaction submission RPC, query RPC, flashblocks URL, and matrix target_gps when configured. The native load-test config keeps ownership of duration.
  • Add benchmark matrix support for target_gps, so a load-test benchmark can run one benchmark per target gas-per-second value without changing the builder gas limit.
  • Add configurable fake-consensus timing:
    • prevent-late-fcu preserves the existing benchmark behavior for regular benchmark payloads.
    • base-consensus follows the production-style cadence used by snapshot load tests.
  • Default snapshot-backed load-test payloads to base-consensus; keep other benchmark runs on prevent-late-fcu.
  • Submit load-test user transactions directly through the launched node's txpool, keep proposing blocks until the load-test process exits, and fail the benchmark if the load-test process fails.

Tests

  • go test ./...
  • git diff --check origin/main...HEAD

Pairs with:

@cb-heimdall
Copy link
Copy Markdown
Collaborator

cb-heimdall commented May 16, 2026

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

… runs

Wire the load-test payload worker to write a JSON result file on graceful
shutdown and surface it in the report UI. After the benchmark window ends
the runner sends SIGINT to the load-test binary and continues proposing
settlement blocks until the worker exits (up to 90s), giving the binary
time to flush its result. The output path is stored as an artifact in
RunResult and shown as a "Load test" link in the run list that opens a
dedicated detail page.

Also fixes an inverted slices.Contains check in the importer that caused
required files to be silently skipped on error and optional files to abort
the import.
@niran niran force-pushed the niran/load-test-reports branch from 96a452d to 475b734 Compare May 16, 2026 03:39
…k>/<timestamp>.json

Drop the benchmark-specific UI page and report-api route added in the previous
commit. Instead the load-test worker writes a normal load-test JSON report to
output/load-tests/<network>/<timestamp>.json, which the benchmarking uploader
can publish alongside regular benchmark runs.

Network is resolved from BASE_BENCH_LOAD_TEST_NETWORK env var, then the
payload's network field, then a chain-ID fallback map. The path is passed to
base-load-test via LOAD_TEST_OUTPUT. The worker now shuts down gracefully so
the sequencer can drain remaining transactions before stopping.

Also fixes an inverted slices.Contains guard in the importer that would have
returned an error for optional (rather than required) missing files.
@niran niran force-pushed the niran/load-test-reports branch from 475b734 to e60e7c9 Compare May 18, 2026 19:14
@niran niran force-pushed the niran/load-test-reports branch from 04cd46d to c83ce2e Compare May 18, 2026 21:21
@niran niran changed the title feat(load-test): publish benchmark load-test reports normally feat(load-test): publish load-test reports from base-benchmark May 18, 2026
niran and others added 6 commits May 19, 2026 15:19
Forward pass-through JSON-RPC batch items to the upstream node while continuing to capture raw transactions. Fetch eth_getTransactionCount from upstream and merge it with transactions already accepted by the proxy so snapshot-backed accounts keep their real chain nonce.

Co-authored-by: Codex <noreply@openai.com>
@niran niran changed the title feat(load-test): publish load-test reports from base-benchmark feat(load-test): support native load-test benchmark runs May 21, 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