|
|
|
@ -4,13 +4,13 @@
|
|
|
|
|
|
|
|
|
|
#### Example test
|
|
|
|
|
|
|
|
|
|
The [example_test.py](example_test.py) is a heavily commented example of a test case that uses both
|
|
|
|
|
the RPC and P2P interfaces. If you are writing your first test, copy that file
|
|
|
|
|
and modify to fit your needs.
|
|
|
|
|
The file [test/functional/example_test.py](example_test.py) is a heavily commented example
|
|
|
|
|
of a test case that uses both the RPC and P2P interfaces. If you are writing your first test, copy
|
|
|
|
|
that file and modify to fit your needs.
|
|
|
|
|
|
|
|
|
|
#### Coverage
|
|
|
|
|
|
|
|
|
|
Running `test_runner.py` with the `--coverage` argument tracks which RPCs are
|
|
|
|
|
Running `test/functional/test_runner.py` with the `--coverage` argument tracks which RPCs are
|
|
|
|
|
called by the tests and prints a report of uncovered RPCs in the summary. This
|
|
|
|
|
can be used (along with the `--extended` argument) to find out which RPCs we
|
|
|
|
|
don't have test cases for.
|
|
|
|
@ -82,7 +82,7 @@ P2P messages. These can be found in the following source files:
|
|
|
|
|
|
|
|
|
|
#### Using the P2P interface
|
|
|
|
|
|
|
|
|
|
- `messages.py` contains all the definitions for objects that pass
|
|
|
|
|
- [messages.py](test_framework/messages.py) contains all the definitions for objects that pass
|
|
|
|
|
over the network (`CBlock`, `CTransaction`, etc, along with the network-level
|
|
|
|
|
wrappers for them, `msg_block`, `msg_tx`, etc).
|
|
|
|
|
|
|
|
|
@ -96,32 +96,35 @@ the Bitcoin Core node application logic. For custom behaviour, subclass the
|
|
|
|
|
P2PInterface object and override the callback methods.
|
|
|
|
|
|
|
|
|
|
- Can be used to write tests where specific P2P protocol behavior is tested.
|
|
|
|
|
Examples tests are `p2p_unrequested_blocks.py`, `p2p_compactblocks.py`.
|
|
|
|
|
Examples tests are [p2p_unrequested_blocks.py](p2p_unrequested_blocks.py),
|
|
|
|
|
[p2p_compactblocks.py](p2p_compactblocks.py).
|
|
|
|
|
|
|
|
|
|
### test-framework modules
|
|
|
|
|
### Test framework modules
|
|
|
|
|
The following are useful modules for test developers. They are located in
|
|
|
|
|
[test/functional/test_framework/](test_framework).
|
|
|
|
|
|
|
|
|
|
#### [test_framework/authproxy.py](test_framework/authproxy.py)
|
|
|
|
|
#### [authproxy.py](test_framework/authproxy.py)
|
|
|
|
|
Taken from the [python-bitcoinrpc repository](https://github.com/jgarzik/python-bitcoinrpc).
|
|
|
|
|
|
|
|
|
|
#### [test_framework/test_framework.py](test_framework/test_framework.py)
|
|
|
|
|
#### [test_framework.py](test_framework/test_framework.py)
|
|
|
|
|
Base class for functional tests.
|
|
|
|
|
|
|
|
|
|
#### [test_framework/util.py](test_framework/util.py)
|
|
|
|
|
#### [util.py](test_framework/util.py)
|
|
|
|
|
Generally useful functions.
|
|
|
|
|
|
|
|
|
|
#### [test_framework/mininode.py](test_framework/mininode.py)
|
|
|
|
|
#### [mininode.py](test_framework/mininode.py)
|
|
|
|
|
Basic code to support P2P connectivity to a bitcoind.
|
|
|
|
|
|
|
|
|
|
#### [test_framework/script.py](test_framework/script.py)
|
|
|
|
|
#### [script.py](test_framework/script.py)
|
|
|
|
|
Utilities for manipulating transaction scripts (originally from python-bitcoinlib)
|
|
|
|
|
|
|
|
|
|
#### [test_framework/key.py](test_framework/key.py)
|
|
|
|
|
#### [key.py](test_framework/key.py)
|
|
|
|
|
Test-only secp256k1 elliptic curve implementation
|
|
|
|
|
|
|
|
|
|
#### [test_framework/bignum.py](test_framework/bignum.py)
|
|
|
|
|
#### [bignum.py](test_framework/bignum.py)
|
|
|
|
|
Helpers for script.py
|
|
|
|
|
|
|
|
|
|
#### [test_framework/blocktools.py](test_framework/blocktools.py)
|
|
|
|
|
#### [blocktools.py](test_framework/blocktools.py)
|
|
|
|
|
Helper functions for creating blocks and transactions.
|
|
|
|
|
|
|
|
|
|
### Benchmarking with perf
|
|
|
|
|