Follow-up to5e0a70683, which got start_node() working. Three more defects sat behind it: - initialize_chain() builds the 4-node cache with its own daemon invocation, which5e0a70683did not touch. It therefore still omitted -regtest (so those cache nodes ran on MAINNET) and -asmap (so they refused to start at all). Every test that uses the cache -- which is most of the wallet suite -- died there. - reindex.py and getblocktemplate_longpoll.py each carried a single python2 print statement, which is the whole reason they would not even parse under python3. Shebangs updated to match. The suite still does not pass: initialize_chain hits a remaining py2 str+int concatenation, and getblocktemplate.py reaches a real test assertion. Both are beyond this commit, but the harness now gets far enough to start nodes, answer RPC and begin building the shared chain, which it could not do before.
Regression tests of RPC interface
test_framework/test_framework.py
Base class for RPC regression tests.
test_framework/util.py
Generally useful functions.
Notes
You can run a single test by calling qa/pull-tester/rpc-tests.sh <testname>.
Run all possible tests with qa/pull-tester/rpc-tests.sh -extended.
Possible options:
-h, --help show this help message and exit
--nocleanup Leave binaries and test.* datadir on exit or error
--noshutdown Don't stop full node after the test execution
--srcdir=SRCDIR Source directory containing dragonxd/dragonx-cli (default: ../../src)
--tmpdir=TMPDIR Root directory for datadirs
--tracerpc Print out all RPC calls as they are made
If you set the environment variable PYTHON_DEBUG=1 you will get some debug output (example: PYTHON_DEBUG=1 qa/pull-tester/rpc-tests.sh wallet).
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 the miner
subsidy from 25 mature blocks in its wallet. The exact amount in DRAGONX
depends on the per-test -ac_reward (regtest subsidy), so it is not a
fixed figure across tests.
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 dragonxd
but beware that could kill various other processes you might not want to kill!