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:
Gavin Andresen
2014-02-26 16:31:18 -05:00
parent 260cf5c0a4
commit 356cfe8306
5 changed files with 392 additions and 14 deletions

View File

@@ -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.