Python-based regression tests
skeleton.py : a do-nothing test skeleton listtransactions.py : start of regression test for listtransactions call
This commit is contained in:
@@ -1,26 +1,36 @@
|
||||
Regression tests of RPC interface
|
||||
=================================
|
||||
|
||||
Bash scripts that use the RPC interface and command-line bitcoin-cli to test
|
||||
full functionality in -regtest mode.
|
||||
python-bitcoinrpc: git subtree of https://github.com/jgarzik/python-bitcoinrpc
|
||||
Changes to python-bitcoinrpc should be made upstream, and then
|
||||
pulled here using git subtree
|
||||
|
||||
skeleton.py : Copy this to create new regression tests.
|
||||
|
||||
listtransactions.py : Tests for the listtransactions RPC call
|
||||
|
||||
util.py : generally useful functions
|
||||
|
||||
Bash-based tests, to be ported to Python:
|
||||
-----------------------------------------
|
||||
wallet.sh : Exercise wallet send/receive code.
|
||||
|
||||
walletbackup.sh : Exercise wallet backup / dump / import
|
||||
txnmall.sh : Test proper accounting of malleable transactions
|
||||
|
||||
conflictedbalance.sh : More testing of malleable transaction handling
|
||||
|
||||
util.sh : useful re-usable bash functions
|
||||
Notes
|
||||
=====
|
||||
|
||||
A 200-block -regtest blockchain and wallets for four nodes
|
||||
is created the first time a regression test is run and
|
||||
is stored in the cache/ directory. Each node has 25 mature
|
||||
blocks (25*50=1250 BTC) in their wallet.
|
||||
|
||||
Tips for creating new tests
|
||||
===========================
|
||||
After the first run, the cache/ blockchain and wallets are
|
||||
copied into a temporary directory and used as the initial
|
||||
test state.
|
||||
|
||||
To cleanup after a failed or interrupted test:
|
||||
If you get into a bad state, you should be able
|
||||
to recover with:
|
||||
rm -rf cache
|
||||
killall bitcoind
|
||||
rm -rf test.*
|
||||
|
||||
The most difficult part of writing reproducible tests is
|
||||
keeping multiple nodes in sync. See WaitBlocks,
|
||||
WaitPeers, and WaitMemPools for how other tests
|
||||
deal with this.
|
||||
|
||||
Reference in New Issue
Block a user