Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kurtosis network testing script #6489

Merged
merged 5 commits into from
Aug 22, 2024
Merged

kurtosis network testing script #6489

merged 5 commits into from
Aug 22, 2024

Conversation

advaita-saha
Copy link
Contributor

@advaita-saha advaita-saha commented Aug 13, 2024

The kurtosis package that will spin up a private Ethereum testnet over Docker or Kubernetes with multi-client support, Flashbot's mev-boost infrastructure for PBS-related testing/validation, and other useful network tools (transaction spammer, monitoring tools, etc). Kurtosis packages are entirely reproducible and composable, so this will work the same way over Docker or Kubernetes, in the cloud or locally on your machine. For more details https://github.com/ethpandaops/ethereum-package

This PR adds easier support to spin up test networks and run testnets locally. For running the testnet and then the checks run the run-kurtosis-check.sh script. This will spin up a testnet with your local nimbus-eth2 build and pull the latest releases from the other clients then run the following tests

  • Check if atleast one client is ready

  • Check if all EL and CL clients are synced

    • Check if CL clients are synced
    • Check if EL clients are synced
  • Check consensus finality

  • Check consensus attestation stats

  • Check consensus reorgs

  • Check consensus forks

  • Check if all clients propose blocks with legacy EOA transactions

  • 10 EOA transactions per block

  • check block proposals

  • Blob transaction tests

  • Execute all different types of transactions

  • Check chain stability ( finality checks )

The current client combination matrix

All combinations from the bellow table is made as client pairs and a network is setup for the tests

EL CL
geth nimbus-eth2 (local)
nethermind lighthouse
erigon prysm

Copy link

github-actions bot commented Aug 13, 2024

Unit Test Results

         9 files  ±0    1 334 suites  ±0   29m 51s ⏱️ -16s
  5 064 tests ±0    4 716 ✔️ ±0  348 💤 ±0  0 ±0 
20 991 runs  ±0  20 587 ✔️ ±0  404 💤 ±0  0 ±0 

Results for commit e1346c3. ± Comparison against base commit b511f3e.

♻️ This comment has been updated with latest results.

Dockerfile Outdated Show resolved Hide resolved
Dockerfile Outdated Show resolved Hide resolved
run-kurtosis-check.sh Outdated Show resolved Hide resolved
# Inputs on how to run checks
# ------------------------------------------------
echo
printf "Do you want to run the checks in terminal or visit the assertoor URL? (terminal/url) "
Copy link
Contributor

Choose a reason for hiding this comment

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

This printf/read pattern seem to only work interactively, or with some kludge such as feeding a prepared stdin to the the script?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I mean yeah it was made to work just interactively, for deciding on few factors before running the tests. I find this way better than passing arguments with the script like --terminal=no

run-kurtosis-check.sh Outdated Show resolved Hide resolved
run-kurtosis-check.sh Outdated Show resolved Hide resolved
run-kurtosis-check.sh Outdated Show resolved Hide resolved
# ------------------------------------------------

# Use sed to replace the el_image value in the file
cat kurtosis-network-params.yml | envsubst > assertoor.yaml
Copy link
Contributor

Choose a reason for hiding this comment

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

Since this file is created and removed fairly quickly, is it intended for human examination/consumption? If not, might be more robust to mktemp a filename,

Copy link
Contributor Author

Choose a reason for hiding this comment

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

In case of crashes get's useful for having the config
Also in future I plan to add devnet specific config loading from ethpandaops, in that case a lot of params will be changes, will need to be investigated in case of crashes ( which is very common in devnets )

run-kurtosis-check.sh Outdated Show resolved Hide resolved
@tersec tersec merged commit 77c36b3 into unstable Aug 22, 2024
11 of 12 checks passed
@tersec tersec deleted the kurtosis-check branch August 22, 2024 08:16
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