Using Testeth¶
Ethereum cpp-client testeth tool for creation and execution of ethereum tests.
To run tests you should open folder (see also Installing and building)
/build/libethereum/test
and execute a command ./testeth This will run all test cases automatically.
To run a specific test case you could use parameter -t in the command line option:
./testeth -t <TEST_SUITE>/<TEST_CASE>
Or just the test suite:
./testeth -t <TEST_SUITE>
You could also use --filltests option to rerun test creation from .json files which are located at ../cpp-ethereum/test/<TEST_FILLER>.json
./testeth -t <TEST_SUITE>/<TEST_CASE> --filltests
By default using --filltests option testeth recreate tests to the ETHEREUM_TEST_PATH folder. You might want to set this variable globally on your system like:
nano /etc/environmentETHEREUM_TEST_PATH="/home/user/ethereum/tests"Filler files are test templates which are used to fill initial parameters defined at test specification Ethereum Tests and then create a complete test .json file. You might find filler files very useful when creating your own tests.
The --checkstate option adds a BOOST error if the post state of filled test differs from its expected section.
To specify a concrete test in a TEST_CASE file for filling/running procedure use --singletest option:
./testeth -t <TEST_SUITE>/<TEST_CASE> --singletest <TEST_NAME>
If you want to debug (note: testeth should be build with VMTRACE=1) a single test within a result test .json file, you might use the following command:
./testeth --log_level=test_suite --run_test=<TEST_SUITE>/<TEST_CASE> --singletest <TEST_FILE>.json<TEST_NAME> --vmtrace --verbosity 12./testeth -t <TEST_SUITE>/<TEST_CASE> --singletest <TEST_NAME> --vmtrace --verbosity 12Some tests may use excessive resources when running, so by default they are disabled. Such tests require specific flag to be set in order to be executed. Like --performance, --inputLimits, --memory, --quadratic. You may also enable all of the tests by setting --all flag. Be careful. Enabled memory tests may stress your system to use 4GB of RAM and more.
That’s it for test execution. To read more about command line options you may run testeth with --help option.
Now let’s see what test cases are available.
Test Cases¶
Almost each test case has its filler file available at /webthree-umbrella/libethereum/test
TEST_SUITE = BlockTests TEST_CASES = blValidBlockTest blInvalidTransactionRLP blTransactionTest blInvalidHeaderTest userDefinedFile
TEST_SUITE = TransactionTests TEST_CASES = ttTransactionTest ttWrongRLPTransaction tt10mbDataField userDefinedFile
TEST_SUITE = StateTests TEST_CASES = stExample stSystemOperationsTest stPreCompiledContracts stLogTests stRecursiveCreate stTransactionTest stInitCodeTest stSpecialTest stRefundTest stBlockHashTest stQuadraticComplexityTest stSolidityTest stMemoryTest stCreateTest userDefinedFileState
TEST_SUITE = VMTests TEST_CASES = vm_tests vmArithmeticTest vmBitwiseLogicOperationTest vmSha3Test vmEnvironmentalInfoTest vmBlockInfoTest vmIOandFlowOperationsTest vmPushDupSwapTest vmLogTest vmSystemOperationsTest vmPerformanceTest vmInputLimitsTest1 vmInputLimitsTest2 vmRandom userDefinedFile