This repository contains automated testing workflows for Ethereum execution clients using Hive, a system for running integration tests against Ethereum clients.
Hive Tests runs comprehensive compatibility and conformance tests across multiple Ethereum execution clients to ensure they properly implement the Ethereum protocol. The tests are executed automatically on a daily schedule and can also be triggered manually.
The following Ethereum execution clients are tested:
- Besu - Enterprise-grade Java Ethereum client
- Erigon - High-performance Ethereum client
- EthereumJS - JavaScript implementation of Ethereum
- Ethrex - Rust-based Ethereum client
- go-ethereum (Geth) - The Go implementation of Ethereum
- Nethermind - .NET Ethereum client
- Nimbus-EL - Nim-based Ethereum execution layer client
- Reth - Rust-based Ethereum execution client
The repository runs various test simulators including:
- devp2p
- ethereum/consensus
- ethereum/eels/consume-engine
- ethereum/eels/consume-rlp
- ethereum/engine
- ethereum/graphql
- ethereum/rpc-compat
- ethereum/sync
Tests run via GitHub Actions. See the generic.yaml workflow for more details. This is the main workflow that is triggered by the scheduled workflows.
The repository includes additional specialized workflows that target specific consensus testing scenarios which take a long time to run. These workflows run on a different schedules and have different timeouts:
sim-devp2p.yamlsim-ethereum-consensus-legacy-cancun.yamlsim-ethereum-consensus-legacy.yamlsim-ethereum-consensus.yamlsim-ethereum-eels-consume-engine.yamlsim-ethereum-eels-consume-rlp.yamlsim-ethereum-engine.yamlsim-ethereum-graphql.yamlsim-ethereum-rpc-compat.yamlsim-ethereum-sync.yaml
These workflows are lightweight dispatchers that trigger the main generic.yaml workflow with specific parameters for targeted testing scenarios. They use different concurrency groups to avoid conflicts and can be manually triggered through the GitHub Actions interface.
You can manually trigger test runs through the GitHub Actions interface with customizable parameters:
- Client Selection: Choose which clients to test
- Simulator Selection: Choose which test simulators to run
- Version Control: Specify custom versions/branches for Hive and each client
There's a index workflow that runs periodically and generates a index of the test results and uploads it to the S3 bucket. See the generate-index.yaml workflow for more details.
Test results are automatically uploaded to:
- S3 Storage: Results are stored in the
hive-resultsbucket - Public Dashboard: Available at https://hive.ethpandaops.io/
- GitHub Artifacts: Downloadable from the workflow runs
The workflow supports testing different versions of clients by specifying repository and tag combinations (e.g., ethereum/go-ethereum@master). Default versions are configured for the latest stable branches of each client.
Tests run on a combination of:
- GitHub-hosted runners for lighter test suites
- Self-hosted runners for resource-intensive tests (consensus, engine, eels simulators)
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
This repository is part of the Ethereum testing infrastructure maintained by EthPandaOps. For issues or contributions related to the Hive testing framework itself, please visit the main Hive repository.