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/environment
ETHEREUM_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 it’s 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
or
./testeth -t <TEST_SUITE>/<TEST_CASE> --singletest <TEST_NAME> --vmtrace --verbosity 12

Some 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 it’s 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