Skip to content

lsankar4033/stethoscope

Repository files navigation

stethoscope

Stethoscope is an Eth 2.0 scenario runner that works with real, running clients.

Right now it's used for single-client regression tests. In the future, we hope to also use it to run multi-client scenarios as a tool for bug discovery.

Background

If we're to have a mutli-client Eth 2.0 mainnet, we're going to need to do multi-client testing. Even though individual clients adhere to the spec and are rigorously tested internally, there are likely to be divergent assumptions in client implementation that only show up when multiple clients talk to each other.

Testnets will capture much of this, but they aren't the best tool for closely examining specific multi-client scenarios (called 'suites' in this project). Stethoscope aims to fill that gap.

Suites are defined by:

  1. the client instances involved
  2. the rumor-driven scripts to run

and are defined in yaml, as seen here.

Suites can refer to specific scripts to run, such as this.

Single-client tests

This section will outline how to run the single-client tests in stethoscope.

Usage

Prereqs

Install:

Run locally

Clone the repo and install requirements:

$ git clone https://github.com/lsankar4033/stethoscope.git && cd stethoscope
...
$ pip install -r requirements.txt

Then, run a single test suite (in this case single_client_genesis:

$ ./steth.py -s single_client_genesis

Or run all tests:

$ ./steth.py

Tests

See here

Multi-client scenarios

TODO!

Contributions

Contributions extremely welcome! Especially in the realm of test scenarios to examine

About

Making sure Eth2 clients are breathing properly (network testing)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages