***************************************************** 浣跨敤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 <../../ethereum-clients/cpp-ethereum/index.html#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 <../ethereum-tests/index.html>`_ 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. 娴嬭瘯鐢ㄤ緥 -------------------------------------------------------------------------------- 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