neobytes/qa/rpc-tests
Suhas Daftuar b93974c3f3 Add comparison tool test runner, built on mininode
comptool.py creates a tool for running a test suite on top of the mininode p2p
framework.  It supports two types of tests: those for which we expect certain
behavior (acceptance or rejection of a block or transaction) and those for
which we are just comparing that the behavior of 2 or more nodes is the same.

blockstore.py defines BlockStore and TxStore, which provide db-backed maps
between block/tx hashes and the corresponding block or tx.

blocktools.py defines utility functions for creating and manipulating blocks
and transactions.

invalidblockrequest.py is an example test in the comptool framework, which
tests the behavior of a single node when sent two different types of invalid
blocks (a block with a duplicated transaction and a block with a bad coinbase
value).
2015-04-28 12:40:56 -04:00
..
python-bitcoinrpc Fix python usage for arch's broken maintainers 2014-11-27 00:02:28 -05:00
.gitignore Python-based regression tests 2014-02-28 15:24:31 -05:00
bipdersig.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
blockstore.py Add comparison tool test runner, built on mininode 2015-04-28 12:40:56 -04:00
blocktools.py Add comparison tool test runner, built on mininode 2015-04-28 12:40:56 -04:00
comptool.py Add comparison tool test runner, built on mininode 2015-04-28 12:40:56 -04:00
conflictedbalance.sh Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
forknotify.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
getblocktemplate_longpoll.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
getblocktemplate_proposals.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
getchaintips.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
httpbasics.py [QA] fix httpbasic keep-alive test 2015-01-17 08:56:55 -08:00
invalidateblock.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
invalidblockrequest.py Add comparison tool test runner, built on mininode 2015-04-28 12:40:56 -04:00
keypool.py Fix python usage for arch's broken maintainers 2014-11-27 00:02:28 -05:00
listtransactions.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
maxblocksinflight.py Python p2p testing framework 2015-04-28 12:38:29 -04:00
mempool_coinbase_spends.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
mempool_resurrect_test.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
mempool_spendcoinbase.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
merkle_blocks.py Add merkle blocks test 2015-04-23 21:19:15 -07:00
mininode.py Python p2p testing framework 2015-04-28 12:38:29 -04:00
netutil.py Fix python usage for arch's broken maintainers 2014-11-27 00:02:28 -05:00
proxy_test.py rpc-tests: Add proxy test 2015-04-20 15:04:33 +02:00
pruning.py Add block pruning functionality 2015-04-22 15:53:48 -04:00
README.md Fix README link from util.sh -> util.py. 2015-01-31 17:38:28 -05:00
receivedby.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
reindex.py Fix CheckBlockIndex for reindex. 2015-04-14 14:10:19 -04:00
rest.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
rpcbind_test.py Fix python usage for arch's broken maintainers 2014-11-27 00:02:28 -05:00
send.sh Update license in pull-tester and rpc-tests 2014-10-23 09:48:19 +08:00
smartfees.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
socks5.py rpc-tests: Add proxy test 2015-04-20 15:04:33 +02:00
test_framework.py Add comparison tool test runner, built on mininode 2015-04-28 12:40:56 -04:00
txn_doublespend.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
util.py Python p2p testing framework 2015-04-28 12:38:29 -04:00
util.sh Update license in pull-tester and rpc-tests 2014-10-23 09:48:19 +08:00
wallet.py add rpc test for listunspents support for zero value txouts 2015-04-21 02:25:35 -07:00
walletbackup.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00
zapwallettxes.py Introduce separate 'generate' RPC call 2015-04-01 11:47:10 -07:00

Regression tests of RPC interface

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.

test_framework.py

Base class for 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

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.

After the first run, the cache/ blockchain and wallets are copied into a temporary directory and used as the initial test state.

If you get into a bad state, you should be able to recover with:

rm -rf cache
killall bitcoind