Skip to content

Latest commit

 

History

142 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Hive Tests

This repository contains automated testing workflows for Ethereum execution clients using Hive, a system for running integration tests against Ethereum clients.

Overview

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.

Supported Clients

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

Test Simulators

The repository runs various test simulators including:

Automation

Scheduled Runs

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.

Scheduled Testing 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:

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.

Manual Execution

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
  • Client Sources: Pick a client file (client_file) or paste an inline hive client file (client_config), see below
  • Hive Version: Specify the Hive repository and branch to use

Test Results

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-results bucket
  • Public Dashboard: Available at https://hive.ethpandaops.io/
  • GitHub Artifacts: Downloadable from the workflow runs

Client Configuration

How each client is obtained is defined by hive client files under .github/configs/hive/, one pair per client set:

  • <set>.yaml is what the workflows run: the best available source per client. Clients with a prebuilt ethpandaops image for the set use it; a client without one is built from source inside the run.
  • <set>-git.yaml builds every client from source, for tip-of-branch runs when an image is stale or missing.

master.yaml serves the generic.yaml workflow; the devnet workflows each have their own set. A manual dispatch picks a file with the client_file input, or replaces it entirely with an inline hive client file in client_config, for example to test a branch or an image that is not in the repository configuration.

Infrastructure

Tests run on a combination of:

  • GitHub-hosted runners for lighter test suites
  • Self-hosted runners for resource-intensive tests (consensus, engine, eels simulators)

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Contributing

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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors