Retesteth v0.2.2 - merge
Merge PoS structures support in tests, little refactoring, new option --testfolder, --nologcolor, custom chainID in transactions
Geth + custom eip example configuration, MacOS support, update ReadME
Compatible test release: https://github.com/ethereum/tests/releases/tag/v11
New options:
--testfolder <SubFolder> Run tests from a custom test folder located in a given suite. Requires -t <TestSuite>
--nologcolor Disable color codes in log output
Announcment
Retesteth is ethereum test runner / generator tool for the tests (https://github.com/ethereum/tests)
Uses existing clients to run/generate the tests. See documentation. (https://ethereum-tests.readthedocs.io/en/latest/)
The test process diagram: http://tinyurl.com/2ctak8yn
Testing stats
Testing results are available at http://retesteth.ethdevops.io/
There is a web tool for vmtracing the tests using supported clients and retesteth: http://retesteth.ethdevops.io/web/
All blockchain tests are being run by hive tool: https://hivetests.ethdevops.io/
Changelog
Interesting
- new option --testfolder so no need to hardcode custom test folders, the folder would be looked at home directory of provided -t testSuite
- new option --nologcolor to disable color codes in log output for clean text when exporting to log files
- lllc support opcode name 'RANDOM' which is identical to 'DIFFICULTY'
- support 'Merge' forkname and structures. See example tests for details:(https://github.com/ethereum/tests/blob/develop/src/GeneralStateTestsFiller/stExample/mergeTestFiller.yml)
(https://github.com/ethereum/tests/blob/develop/src/BlockchainTestsFiller/ValidBlocks/bcExample/mergeExampleFiller.json) - if state tests expect section indexes fields are not set, the default value is -1
- trasaction sender is exported to generated tests
- state tests
-d <label>
selector does not require:label
prefix to select transaction by label name - transaction tests support custom forknames
- blockchain tests exception names are verified against geth t8n tool when running the tests
- custom chainID in clients configs to be able to sign transactions for other test networks
- 0x:bigint support in TransactionTests to generate bizzare structures
- new section
verify
in json tests to check how retesteth generate .json of the test. See:
(https://github.com/ethereum/tests/blob/develop/src/BlockchainTestsFiller/InvalidBlocks/bcExpectSection/result_MergeEnvConvertionFiller.json) - if env/genesis header not defined for EIP1559, the default value for baseFee is set
- if env/genesis header not defined for Merge, both the baseFee and currentRandom are set if not defined.
- in legacy env, the difficulty translates to 0, mixHash gets the value of difficulty, when generating old tests on Merge rules
- transition tests from PoW to PoS at given difficulty, not block number
- update ReadME building instructions, and the docs are update https://ethereum-tests.readthedocs.io/en/latest/
Technical
- update cmake build script to use latest boost 1.79 version for MacOS support
- export solidity version to generated tests (solc)
:label
prefix for label names is not exported to generated state tests to save space- if
test_setChainParams
fail, the tests continue exectution - experiment with std::move to reduce dynamic memory allocation
- protection from repeating forks in transaction tests
- refactor t8ntool backend code (blockchain builder)
- refactor testSuite.cpp, split heavy functions
- go version updated in docker file to support geth, support changes in geth t8n
- correct translating the fork name to geth t8n tool internal forkname
- fix memory leaks / race conditions what found
- new test exception names
- t8ntool backend blockchain logic for Merge support
- check data pointer to be empty when printin DataObject, a rare bug happened when exception is thrown and DataObject is printed after
- refactor t8ntool backend block verification a litle
ubuntu 18.04.3:
http://retesteth.ethdevops.io/release/0.2.2-merge/ubuntu-18.04.3/retesteth-0.2.2-merge-ubuntu-18.04.3
Might need the dependecies install:
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
- sudo apt-get update
- sudo apt-get install gcc-4.9
- sudo apt-get install --only-upgrade libstdc++6
macOS-XCode12:
http://retesteth.ethdevops.io/release/0.2.2-merge/macOS-XCode12/retesteth-0.2.2-merge-macOS-XCode12
Docker:
geth version: Version: 1.10.22-unstable Git Commit: fea569f90aa608abeb13cea6c9fd55f1d0a77f40
geth evm version: evm version 1.10.22-unstable-fea569f9-20220729
lllc version: Version: 0.5.14-develop.2022.7.30+commit.a096d7a9.Linux.g++
solidity version: Version: 0.8.6+commit.11564f7e.Linux.g++
http://retesteth.ethdevops.io/release/0.2.2-merge/dretesteth-0.2.2-merge.tar
Documentation:
https://ethereum-tests.readthedocs.io/en/latest/