aboutsummaryrefslogtreecommitdiffstats
path: root/docs/using-testeth.rst
blob: 49ef3945a68a2b87267620f6090ad64976161050 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

*****************************************************
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 <http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/index.html#installing-and-building>`_
in ``cpp-ethereum`` docs)

   ``/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 :ref:`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``
|    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 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