Run tests
All the unit tests are run as part of the build, but can be explicitly triggered with:
./gradlew test
The integration tests can be triggered with:
./gradlew integrationTest
The reference tests (described below) can be triggered with:
./gradlew referenceTest
The system tests can be triggered with:
./gradlew smokeTest
The acceptance tests can be triggered with:
./gradlew acceptanceTest
Ethereum reference tests
On top of the project proper unit tests, specific unit tests are provided to run the Ethereum reference tests available at https://github.com/ethereum/tests and described at http://ethereum-tests.readthedocs.io/en/latest/. Those are run as part of the unit test suite as described above, but for debugging it is often convenient to run only a subset of those tests. For example, run only Frontier general state tests with:
./gradlew :ethereum:org.hyperledger.besu.ethereum.vm:referenceTest -Dtest.single=GeneralStateTest -Dtest.ethereum.state.eip=Frontier
Or only the tests that match a particular pattern with something like:
gradle :ethereum:org.hyperledger.besu.ethereum.vm:test -Dtest.single=GeneralStateTest -Dtest.ethereum.include='^CALLCODE.*-Frontier'
For more details, see the comment on the test
target in the top level build.gradle
file.
Hive tests
A suite of end to end client tests that are not invoked directly is provided here, https://github.com/ethereum/hive. These tests are run against all clients and results can be seen at https://hivetests.ethdevops.io/.
Running Hive Tests
- consensus
sudo ./hive --sim consensus --loglevel 6 --docker-noshell --client besu_latest --sim.parallelism 1 --sim.rootcontext
- graphql
sudo ./hive --sim graphql --loglevel 6 --docker-noshell --client besu_latest --sim.parallelism 1 --sim.rootcontext
- devp2p
sudo ./hive --sim devp2p --loglevel 6 --docker-noshell --client besu_latest --sim.parallelism 1 --sim.rootcontext
- sync
sudo ./hive --sim ethereum/sync --loglevel 6 --docker-noshell --client besu_latest,openethereum_latest,go-ethereum_latest --sim.parallelism 1 --sim.rootcontext
Known Failures
Currently there are 16 consensus tests and 3 sync tests that are failing. The consensus tests are believed to be performance related and the sync tests involve aleth and nethermind clients which are not properly configured within the test suite.
- failing consensus tests
- modexp_37120_37111_37111_25000_d0g0v0_Istanbul
- modexp_9_3711_37111_25000_d0g1v0_Istanbul
- CallEcrecover0_NoGas_d0g0v0_Istanbul
- sstore_0toXtoX_d1g0v0_Istanbul
- static_callcallcodecall_010_2_d1g0v0_Istanbul
- CALLBlake2f_MaxRounds_d0g0v0_Istanbul
- sstore_combinations_initial00_d26g0v0_Istanbul
- sstore_combinations_initial11_2_d280g0v0_Istanbul
- sstore_combinations_initial11_2_d36g0v0_Istanbul
- sstore_combinations_initial20_d373g0v0_Istanbul
- StoreClearsAndInternlCallStoreClearsSuccess_d0g0v0_Istanbul
- ecmul_1-3_0_21000_80_d0g3v0_Istanbul
- pointMulAdd_d5g2v0_Istanbul
- pointMulAdd2_d25g3v0_Istanbul
- ecmul_0-3_340282366920938463463374607431768211456_28000_80_d0g3v0_Istanbul
- SimpleTxCosts20000_Frontier
- failing sync tests
- fast-sync aleth_nightly -> besu_latest
- fast-sync besu_latest -> aleth_nightly
- fast-sync nethermind_latest -> besu_latest