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.
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:
- the client instances involved
- 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.
This section will outline how to run the single-client tests in stethoscope.
Install:
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
See here
TODO!
Contributions extremely welcome! Especially in the realm of test scenarios to examine