Using Hive Test Suite
Online results:
https://hivecancun.ethdevops.io/
https://hivetests.ethdevops.io/
https://hivetests2.ethdevops.io/
Build:
gh repo clone ethereum/hive
cd hive
go build
Config:
Update the file configs/cancun.yaml with the branch and GitHub to be used:
client: besu
nametag: 4844-git # the name tag for the docker image.
dockerfile: git
build_args:
github: hyperledger/besu # the fork to use in the test. For example: “my-fork/besu”
tag: 4844-devnet-5b # the branch to be used in the test
Delete all the other clients.
pyspec simulator:
This simulator will run the following tests:
https://ethereum.github.io/execution-spec-tests/tests/cancun/eip4844_blobs/
./hive --sim ethereum/pyspec --client-file ./configs/cancun.yaml --sim.limit "/cancun/eip4844_blobs/"
Note running the full suite takes several hours. Recommend limiting it by test.
You can specify a particular test you want to run to completing the path in the --sim.limit parameter.
Engine simulator:
./hive --sim ethereum/engine --client-file ./configs/cancun.yaml --sim.limit "engine-cancun/"
View Results
cd cmd/hiveview
go build
./hiveview --serve --logdir ../../workspace/logs
From the Hive folder:
./cmd/hiveview/hiveview --serve --logdir ./workspace/logsGo to http://127.0.0.1:8080/
Local differences:
Be aware, there are some that fail locally but pass in automated hive. So before you spend ages debugging a test, check to see if it's actually passing at eg https://hivecancun.ethdevops.io/
example - this one fails locally but passes in hive - CI Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun)
Useful:
Caution: when using the nocache option I have had issues with being unable to build the docker image (SHA hash mismatch with downloading ubuntu install packages).
To Rebuild the image when the branch is updated add -docker.nocache besu
-docker.output will log useful information in case of failure during the build process.
To debug a test:
I believe the easiest way to debug is to run a node with the genesis file used in the test and manually call the engine/rpc methods using postman:
To get the genesis file, click the log in the logs column.
The genesis file will be the first thing that is logged.
Search for starting main client. It will show you the parameters that Hive used to run Besu:
Finally, you can find the calls that Hive is doing by expanding the test name:
Then you can get the calls and use postman to replicate the test.
You can run a node with the same configuration and attach the IDE to the process and debug normally.