zcash-patched-for-explorer/qa/rpc-tests
Homu f649bb36c5 Auto merge of #3303 - LarryRuane:2807-rpc-test-round-fees, r=bitcartel
(rpc-test) accurately account for fee without rounding error

Fix for #2807, this test compares balances after doing key exports and imports, and expects these balances to be equal. But they are not exactly equal due to transaction fees, so the test makes them "equal" by rounding a value that has had fees taken out up to the nearest hundredth of a unit (which is much more than the default fee). This obviously is somewhat sloppy. It also converts a balance to float, which really should never be used due to loss of precision (use Decimal instead).

This change makes the test accurately account for the fee using precise comparisons, and removes the use of float. This test doesn't depend on the default fee (0.0001) but instead sets the fee (to that value). This way, if the default fee changes in the future, this test will continue to run. While testing these changes, I set the fee to various values (up to the max, 0.0190), and the test still passes.
2018-06-22 14:01:48 -07:00
..
test_framework Update -enforcenodebloom RPC test with filterclear vs filteradd 2018-04-05 01:30:38 +01:00
.gitignore Python-based regression tests 2014-02-28 15:24:31 -05:00
README.md Regtest mining does have a founders reward, a single address t2FwcEhFdNXuFMv1tcYwaBJtYVtMj8b1uTg 2018-02-28 14:28:22 -08:00
bip65-cltv-p2p.py Fix BIP65 and BIP66 tests 2017-10-05 15:18:54 +01:00
bipdersig-p2p.py Fix BIP65 and BIP66 tests 2017-10-05 15:18:54 +01:00
blockchain.py Update blockchain.py RPC test for Zcash 2018-04-03 20:40:54 +01:00
decodescript.py Resolve issue bitcoin/bitcoin#3166. 2018-04-16 07:38:36 -06:00
disablewallet.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
forknotify.py For unused variables reported by pyflakes, either remove the variable, 2017-06-22 18:09:05 +01:00
fundrawtransaction.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
getblocktemplate.py Add hashFinalSaplingRoot to getblocktemplate 2018-06-01 15:47:30 -06:00
getblocktemplate_longpoll.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
getblocktemplate_proposals.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
getchaintips.py [QA] restructure rpc tests directory 2015-05-18 15:25:45 +02:00
hardforkdetection.py For unused variables reported by pyflakes, either remove the variable, 2017-06-22 18:09:05 +01:00
httpbasics.py Cosmetics (trailing whitespace, comment conventions, etc.) 2017-06-22 18:09:05 +01:00
invalidateblock.py Cosmetics (trailing whitespace, comment conventions, etc.) 2017-06-22 18:09:05 +01:00
invalidblockrequest.py Cosmetics (trailing whitespace, comment conventions, etc.) 2017-06-22 18:09:05 +01:00
key_import_export.py Fix pyflakes warnings in RPC tests 2017-09-27 17:24:19 +01:00
keypool.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
listtransactions.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
maxblocksinflight.py Cosmetics (trailing whitespace, comment conventions, etc.) 2017-06-22 18:09:05 +01:00
mempool_nu_activation.py Update mempool_nu_activation RPC test to exercise both Overwinter and Sapling 2018-05-03 01:07:41 +01:00
mempool_reorg.py Add failing test checking timelocked-txn removal during reorg 2018-02-20 02:57:40 +00:00
mempool_resurrect_test.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
mempool_spendcoinbase.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
mempool_tx_expiry.py Add test for dependent txs to mempool_tx_expiry.py 2018-04-18 06:34:09 -07:00
mempool_tx_input_limit.py Ignore -mempooltxinputlimit once Overwinter activates 2018-03-28 14:25:42 +02:00
merkle_blocks.py Closes #3178 by adding verbosity level improvements to getblock RPC. 2018-04-30 11:51:59 -07:00
nodehandling.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
overwinter_peer_management.py pyflakes cleanups to RPC tests after Overwinter PRs. 2018-03-12 14:15:25 +00:00
p2p-acceptblock.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
p2p_node_bloom.py Update -enforcenodebloom RPC test with filterclear vs filteradd 2018-04-05 01:30:38 +01:00
p2p_txexpiry_dos.py Don't increase banscore if the transaction only just expired. 2018-04-04 01:29:47 +01:00
paymentdisclosure.py Auto merge of #2796 - per-gron:less-verbose-tests, r=daira 2017-12-17 00:22:38 -08:00
prioritisetransaction.py Deduplicate test utility method wait_and_assert_operationid_status 2017-12-16 19:24:25 +01:00
proton_test.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
proxy_test.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
pruning.py For unused variables reported by pyflakes, either remove the variable, 2017-06-22 18:09:05 +01:00
rawtransactions.py [RPC] createrawtransaction: add option to set the sequence number per input 2018-04-12 18:10:04 -06:00
receivedby.py Cosmetics (trailing whitespace, comment conventions, etc.) 2017-06-22 18:09:05 +01:00
reindex.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
reorg_limit.py pyflakes cleanups to RPC tests after Overwinter PRs. 2018-03-12 14:15:25 +00:00
rest.py Cosmetics (trailing whitespace, comment conventions, etc.) 2017-06-22 18:09:05 +01:00
rewind_index.py Add RPC test of RewindBlockIndex 2018-04-03 10:58:27 +01:00
rpcbind_test.py Cosmetics (trailing whitespace, comment conventions, etc.) 2017-06-22 18:09:05 +01:00
script_test.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
signrawtransactions.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
smartfees.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
txn_doublespend.py For unused variables reported by pyflakes, either remove the variable, 2017-06-22 18:09:05 +01:00
wallet.py Closes #3110. Ensure user can see error message about absurdly high fees. 2018-03-27 10:23:24 -07:00
wallet_1941.py Deduplicate test utility method wait_and_assert_operationid_status 2017-12-16 19:24:25 +01:00
wallet_anchorfork.py cleanup: Ensure code is pyflakes-clean for CI 2018-03-27 02:47:57 +02:00
wallet_mergetoaddress.py Implement note locking for z_mergetoaddress 2018-03-29 15:48:34 -06:00
wallet_nullifiers.py Fix z_importviewingkey startHeight parameter 2018-04-03 02:43:52 +01:00
wallet_overwintertx.py pyflakes cleanups to RPC tests after Overwinter PRs. 2018-03-12 14:15:25 +00:00
wallet_protectcoinbase.py Closes #2910. Add z_listunspent RPC call. 2018-03-28 10:38:57 -07:00
wallet_shieldcoinbase.py Deduplicate test utility method wait_and_assert_operationid_status 2017-12-16 19:24:25 +01:00
wallet_treestate.py Deduplicate test utility method wait_and_assert_operationid_status 2017-12-16 19:24:25 +01:00
walletbackup.py RPC dumpwallet and z_exportwallet updated to no longer allow 2017-11-16 22:29:37 -08:00
zapwallettxes.py Cosmetics (trailing whitespace, comment conventions, etc.) 2017-06-22 18:09:05 +01:00
zcjoinsplit.py Clean up imports to be pyflakes-checkable. fixes #2450 2017-06-22 18:09:04 +01:00
zcjoinsplitdoublespend.py Fix outdated comment about starting balance of nodes 2018-02-28 14:29:05 -08:00
zkey_import_export.py Fix pyflakes error in test zkey_import_export. 2018-06-22 11:34:21 -07:00
zmq_test.py Cosmetics (trailing whitespace, comment conventions, etc.) 2017-06-22 18:09:05 +01:00

README.md

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 bitcoinds and test.* datadir on exit or error
  --noshutdown     Don't stop bitcoinds after the test execution
  --srcdir=SRCDIR  Source directory containing bitcoind/bitcoin-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 (25*10=250 ZEC) in its 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 zcashd