Skip to content
This repository was archived by the owner on May 23, 2023. It is now read-only.

Test Scenarios

Sven Ehlert edited this page Feb 10, 2015 · 17 revisions

More detailed infos about test scenarios.

List of all scenarios, planned and done

Basic Consensus Scenario

This is the base scenario of system testing.

Theoretical Scenario

5,000 clients plus one bootstrapping nodes are deployed. Each client is fresh to the network, e.g. hasn't participated on any blockchain before. Each client will get its peers from the bootstrapping node. Each client starts and stops mining randomly. When the scenario stops, all clients have found consensus.

Implementation

Implemented via https://github.com/ethereum/system-testing/blob/master/scenarios/scenario_chain_consensus.py.

Currently works with python client. To support other clients, they need to support the following structured logging messages.

Log on new head:

  • message="eth.chain.new_head" block_hash="block_hash_hexhash_64byte"

Note: You can use different names for the event message (these can be mapped to the canonical name). You can not choose different keys for the event attributes though. You don't need to supply a timestamp nor the nodeid.

Basic transaction scenario

Theoretical scenario

starts one client
        let it mine some ether
    start all clients
    create tx client_0 > client_1
    send tx to one client
    check tx propagation time < X
    check consensus

Implementation

implemented in https://github.com/ethereum/system-testing/blob/master/scenarios/scenario_tx_propagation.py

This uses RPC to send transactions. TODO check JSON-RPC usability

Log on new tx received:

  • message="eth.tx.new_tx" tx_hash="tx_hash_hexhash_64byte"

Further scenarios

new scenarios will need additional structured log messages to be implemented.

Clone this wiki locally