Skip to content

[DO NOT MERGE] Kurtosis-backed E2E - #17045

Draft
syjn99 wants to merge 40 commits into
developfrom
e2e-kurtosis
Draft

[DO NOT MERGE] Kurtosis-backed E2E#17045
syjn99 wants to merge 40 commits into
developfrom
e2e-kurtosis

Conversation

@syjn99

@syjn99 syjn99 commented Jun 29, 2026

Copy link
Copy Markdown
Member

Note

Most of the diffs are originated from bumping x/tools: See third_party/*.patch diffs. +23,268, -14,601.

Actively working branch on #15320. See the issue for migration plan.


Index

  • Phase 1: Harness set up for Kurtosis: 5fe22fa
  • Phase 2: Parity with "minimal" test suites: 2ef4eb8 ~ 0664c72
  • Phase 3: Parity with other test suites excluding scenario and scenario-multiclient.: 877bdc2 ~ 9afdbfb
  • Phase 4: Parity with scenario and scenario-multiclient test suites.: 64be173 ~ 99ef937
  • Phase 5: Demolish all the legacy system code: 763c064

How to run

Important

Ensure your Kurtosis engine is alive. Otherwise tests will fail.

Run the test suites like:

bazel test //testing/endtoend:go_minimal_scenario_test

If you want to target only a specific test suite:

bazel test //testing/endtoend:go_minimal_scenario_test \
    --test_filter=TestEndToEnd_Kurtosis_MinimalConfig_REST_SSZ

bazel test //testing/endtoend:* includes following:

  • Build docker images based on the current codebase. (beacon-chain and validator) If you run scenario tests with custom JSON-RPC snooper, it will also build a faultproxy image.
  • Load docker images with tagged latest: e.g., gcr.io/offchainlabs/prysm/beacon-chain:latest
  • Create an enclave named under the test suite (e.g., minimal). Destroy if the enclave is still running for idempotency.
  • Spin up a new devnet with assertoor. Go code will wait for assertoor test runs by polling via assertoor API.
  • If epochsToRun is passed, the devnet and enclave is destroyed. If one of assertoor tests fails, it will return early.

Tooling

This branch pins the exact commit hash for testing tools from ethPandaOps, which I'd submitted PRs to fix the issues while I was testing in my local environment:

  • Assertoor: ethpandaops/assertoor:master-c6f6ac6
  • Buildoor: ethpandaops/buildoor:main-97fc876
  • Spamoor: ethpandaops/spamoor:master-c23ad38

syjn99 and others added 10 commits June 29, 2026 13:26
Drive the minimal Kurtosis E2E verdict from Assertoor. Adds the Assertoor
REST client, the embedded-playbook register/schedule runner, the result
poller, and Assertoor API types; wires them into KurtosisWrapper. Renames
the default config and test to minimal.

Ships the baseline liveness playbooks: network-health-monitor,
validators-active, validators-sync-participation, metrics.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Embed four more Assertoor checks: block-graffiti, fee-recipient,
blobs-included, and blob-limits. Config they rely on already lives in
minimal.yaml; this only ships the playbooks and extends embedsrcs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Embed per-fork transition checks (altair through gloas) that assert the
chain crosses each fork boundary. Fork epochs are already configured in
minimal.yaml; this only ships the playbooks and extends embedsrcs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Embed the state-changing operation checks: deposits, voluntary-exits,
withdrawals, and slashings. Supporting config and validators-active tweaks
already live in commit 1; this only ships the playbooks and extends
embedsrcs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add late-joining-node coverage: declare two skip_start nodes in minimal.yaml,
start them mid-run via a new KurtosisWrapper helper, and assert they catch up
through the beacon-chain-sync and checkpoint-sync playbooks.

Also add the missing "slices" import the test relies on.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add a shared runStarlarkScript helper (starlark.go).
- Split common Kurtosis test setup into kurtosis_e2e_helper.go.
- Bound enclave teardown with its own 1m context.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
syjn99 added 11 commits June 30, 2026 23:35
Pin assertoor for the attestation fix, spamoor for integer parsing, and buildoor for builder API fixes.
Use custom JS logic for sync participation checks, avoid prefunding withdrawal credential targets, and raise blob spam prefunding.
Register one-shot playbooks, schedule runs with per-event config, and wait for steady-state and one-shot runs concurrently.
@syjn99 syjn99 changed the title [DO NOT MERGE & WIP] Kurtosis-backed E2E [DO NOT MERGE] Kurtosis-backed E2E Jul 6, 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.

1 participant