Merge #11774: [tests] Rename functional tests
6f881cc880
[tests] Remove EXPECTED_VIOLATION_COUNT (Anthony Towns)3150b3fea7
[tests] Rename misc functional tests. (Anthony Towns)81b79f2c39
[tests] Rename rpc_* functional tests. (Anthony Towns)61b8f7f273
[tests] Rename p2p_* functional tests. (Anthony Towns)90600bc7db
[tests] Rename wallet_* functional tests. (Anthony Towns)ca6523d0c8
[tests] Rename feature_* functional tests. (Anthony Towns) Pull request description: This PR changes the functional tests to have a consistent naming scheme: tests for individual RPC methods are named rpc_... tests for interfaces (REST, ZMQ, RPC features) are named interface_... tests that explicitly test the p2p interface are named p2p_... tests for wallet features are named wallet_... tests for mining features are named mining_... tests for mempool behaviour are named mempool_... tests for full features that aren't wallet/mining/mempool are named feature_... Rationale: it's sometimes difficult for new contributors to know what's already covered by existing tests and where new tests should be added. Naming in a consistent fashion makes it easier to see what's already covered at a glance. Tree-SHA512: 4246790552d42bbd95f6d5bdf67702b81b3b2c583ce7eaf1fe6d8e254721279b47315973c6e9ae82dad6e4c747f12188160764bf2624c0f8f3b4d39330ec8b16
This commit is contained in:
commit
6970b30c6f
84 changed files with 92 additions and 96 deletions
|
@ -87,7 +87,7 @@ start the networking thread. (Continue with the test logic in your existing
|
|||
thread.)
|
||||
|
||||
- Can be used to write tests where specific P2P protocol behavior is tested.
|
||||
Examples tests are `p2p-acceptblock.py`, `p2p-compactblocks.py`.
|
||||
Examples tests are `p2p_unrequested_blocks.py`, `p2p_compactblocks.py`.
|
||||
|
||||
#### Comptool
|
||||
|
||||
|
@ -133,7 +133,7 @@ Each `TestInstance` consists of:
|
|||
acceptance is tested against the given outcome.
|
||||
|
||||
- For examples of tests written in this framework, see
|
||||
`invalidblockrequest.py` and `p2p-fullblocktest.py`.
|
||||
`p2p_invalid_block.py` and `feature_block.py`.
|
||||
|
||||
### test-framework modules
|
||||
|
||||
|
|
|
@ -55,84 +55,84 @@ TEST_EXIT_SKIPPED = 77
|
|||
BASE_SCRIPTS= [
|
||||
# Scripts that are run by the travis build process.
|
||||
# Longest test should go first, to favor running tests in parallel
|
||||
'wallet-hd.py',
|
||||
'walletbackup.py',
|
||||
'wallet_hd.py',
|
||||
'wallet_backup.py',
|
||||
# vv Tests less than 5m vv
|
||||
'p2p-fullblocktest.py',
|
||||
'fundrawtransaction.py',
|
||||
'p2p-compactblocks.py',
|
||||
'segwit.py',
|
||||
'feature_block.py',
|
||||
'rpc_fundrawtransaction.py',
|
||||
'p2p_compactblocks.py',
|
||||
'feature_segwit.py',
|
||||
# vv Tests less than 2m vv
|
||||
'wallet.py',
|
||||
'wallet-accounts.py',
|
||||
'p2p-segwit.py',
|
||||
'wallet-dump.py',
|
||||
'listtransactions.py',
|
||||
'wallet_basic.py',
|
||||
'wallet_accounts.py',
|
||||
'p2p_segwit.py',
|
||||
'wallet_dump.py',
|
||||
'rpc_listtransactions.py',
|
||||
# vv Tests less than 60s vv
|
||||
'sendheaders.py',
|
||||
'zapwallettxes.py',
|
||||
'importmulti.py',
|
||||
'p2p_sendheaders.py',
|
||||
'wallet_zapwallettxes.py',
|
||||
'wallet_importmulti.py',
|
||||
'mempool_limit.py',
|
||||
'merkle_blocks.py',
|
||||
'receivedby.py',
|
||||
'abandonconflict.py',
|
||||
'bip68-112-113-p2p.py',
|
||||
'rawtransactions.py',
|
||||
'address_types.py',
|
||||
'reindex.py',
|
||||
'rpc_txoutproof.py',
|
||||
'wallet_listreceivedby.py',
|
||||
'wallet_abandonconflict.py',
|
||||
'feature_csv_activation.py',
|
||||
'rpc_rawtransaction.py',
|
||||
'wallet_address_types.py',
|
||||
'feature_reindex.py',
|
||||
# vv Tests less than 30s vv
|
||||
'keypool-topup.py',
|
||||
'zmq_test.py',
|
||||
'bitcoin_cli.py',
|
||||
'mempool_resurrect_test.py',
|
||||
'txn_doublespend.py --mineblock',
|
||||
'txn_clone.py',
|
||||
'txn_clone.py --segwit',
|
||||
'getchaintips.py',
|
||||
'rest.py',
|
||||
'mempool_spendcoinbase.py',
|
||||
'wallet_keypool_topup.py',
|
||||
'interface_zmq.py',
|
||||
'interface_bitcoin_cli.py',
|
||||
'mempool_resurrect.py',
|
||||
'wallet_txn_doublespend.py --mineblock',
|
||||
'wallet_txn_clone.py',
|
||||
'wallet_txn_clone.py --segwit',
|
||||
'rpc_getchaintips.py',
|
||||
'interface_rest.py',
|
||||
'mempool_spend_coinbase.py',
|
||||
'mempool_reorg.py',
|
||||
'mempool_persist.py',
|
||||
'multiwallet.py',
|
||||
'multiwallet.py --usecli',
|
||||
'httpbasics.py',
|
||||
'multi_rpc.py',
|
||||
'proxy_test.py',
|
||||
'signrawtransactions.py',
|
||||
'disconnect_ban.py',
|
||||
'decodescript.py',
|
||||
'blockchain.py',
|
||||
'deprecated_rpc.py',
|
||||
'disablewallet.py',
|
||||
'net.py',
|
||||
'keypool.py',
|
||||
'p2p-mempool.py',
|
||||
'prioritise_transaction.py',
|
||||
'invalidblockrequest.py',
|
||||
'invalidtxrequest.py',
|
||||
'p2p-versionbits-warning.py',
|
||||
'preciousblock.py',
|
||||
'importprunedfunds.py',
|
||||
'signmessages.py',
|
||||
'nulldummy.py',
|
||||
'import-rescan.py',
|
||||
'mining.py',
|
||||
'bumpfee.py',
|
||||
'rpcnamedargs.py',
|
||||
'listsinceblock.py',
|
||||
'p2p-leaktests.py',
|
||||
'wallet-encryption.py',
|
||||
'bipdersig-p2p.py',
|
||||
'bip65-cltv-p2p.py',
|
||||
'uptime.py',
|
||||
'resendwallettransactions.py',
|
||||
'minchainwork.py',
|
||||
'p2p-fingerprint.py',
|
||||
'uacomment.py',
|
||||
'p2p-acceptblock.py',
|
||||
'wallet_multiwallet.py',
|
||||
'wallet_multiwallet.py --usecli',
|
||||
'interface_http.py',
|
||||
'rpc_users.py',
|
||||
'feature_proxy.py',
|
||||
'rpc_signrawtransaction.py',
|
||||
'p2p_disconnect_ban.py',
|
||||
'rpc_decodescript.py',
|
||||
'rpc_blockchain.py',
|
||||
'rpc_deprecated.py',
|
||||
'wallet_disable.py',
|
||||
'rpc_net.py',
|
||||
'wallet_keypool.py',
|
||||
'p2p_mempool.py',
|
||||
'mining_prioritisetransaction.py',
|
||||
'p2p_invalid_block.py',
|
||||
'p2p_invalid_tx.py',
|
||||
'feature_versionbits_warning.py',
|
||||
'rpc_preciousblock.py',
|
||||
'wallet_importprunedfunds.py',
|
||||
'rpc_signmessage.py',
|
||||
'feature_nulldummy.py',
|
||||
'wallet_import_rescan.py',
|
||||
'mining_basic.py',
|
||||
'wallet_bumpfee.py',
|
||||
'rpc_named_arguments.py',
|
||||
'wallet_listsinceblock.py',
|
||||
'p2p_leak.py',
|
||||
'wallet_encryption.py',
|
||||
'feature_dersig.py',
|
||||
'feature_cltv.py',
|
||||
'rpc_uptime.py',
|
||||
'wallet_resendwallettransactions.py',
|
||||
'feature_minchainwork.py',
|
||||
'p2p_fingerprint.py',
|
||||
'feature_uacomment.py',
|
||||
'p2p_unrequested_blocks.py',
|
||||
'feature_logging.py',
|
||||
'node_network_limited.py',
|
||||
'conf_args.py',
|
||||
'p2p_node_network_limited.py',
|
||||
'feature_config_args.py',
|
||||
# Don't append tests at the end to avoid merge conflicts
|
||||
# Put them in a random line within the section that fits their approximate run-time
|
||||
]
|
||||
|
@ -140,29 +140,29 @@ BASE_SCRIPTS= [
|
|||
EXTENDED_SCRIPTS = [
|
||||
# These tests are not run by the travis build process.
|
||||
# Longest test should go first, to favor running tests in parallel
|
||||
'pruning.py',
|
||||
'feature_pruning.py',
|
||||
# vv Tests less than 20m vv
|
||||
'smartfees.py',
|
||||
'feature_fee_estimation.py',
|
||||
# vv Tests less than 5m vv
|
||||
'maxuploadtarget.py',
|
||||
'feature_maxuploadtarget.py',
|
||||
'mempool_packages.py',
|
||||
'dbcrash.py',
|
||||
'feature_dbcrash.py',
|
||||
# vv Tests less than 2m vv
|
||||
'bip68-sequence.py',
|
||||
'getblocktemplate_longpoll.py',
|
||||
'p2p-timeouts.py',
|
||||
'feature_bip68_sequence.py',
|
||||
'mining_getblocktemplate_longpoll.py',
|
||||
'p2p_timeouts.py',
|
||||
# vv Tests less than 60s vv
|
||||
'bip9-softforks.py',
|
||||
'p2p-feefilter.py',
|
||||
'rpcbind_test.py',
|
||||
'feature_bip9_softforks.py',
|
||||
'p2p_feefilter.py',
|
||||
'rpc_bind.py',
|
||||
# vv Tests less than 30s vv
|
||||
'assumevalid.py',
|
||||
'feature_assumevalid.py',
|
||||
'example_test.py',
|
||||
'txn_doublespend.py',
|
||||
'txn_clone.py --mineblock',
|
||||
'notifications.py',
|
||||
'invalidateblock.py',
|
||||
'replace-by-fee.py',
|
||||
'wallet_txn_doublespend.py',
|
||||
'wallet_txn_clone.py --mineblock',
|
||||
'feature_notifications.py',
|
||||
'rpc_invalidateblock.py',
|
||||
'feature_rbf.py',
|
||||
]
|
||||
|
||||
# Place EXTENDED_SCRIPTS first since it has the 3 longest running tests
|
||||
|
@ -472,9 +472,8 @@ class TestResult():
|
|||
|
||||
|
||||
def check_script_prefixes():
|
||||
"""Check that no more than `EXPECTED_VIOLATION_COUNT` of the
|
||||
"""Check that at most a handful of the
|
||||
test scripts don't start with one of the allowed name prefixes."""
|
||||
EXPECTED_VIOLATION_COUNT = 77
|
||||
|
||||
# LEEWAY is provided as a transition measure, so that pull-requests
|
||||
# that introduce new tests that don't conform with the naming
|
||||
|
@ -484,13 +483,10 @@ def check_script_prefixes():
|
|||
good_prefixes_re = re.compile("(example|feature|interface|mempool|mining|p2p|rpc|wallet)_")
|
||||
bad_script_names = [script for script in ALL_SCRIPTS if good_prefixes_re.match(script) is None]
|
||||
|
||||
if len(bad_script_names) < EXPECTED_VIOLATION_COUNT:
|
||||
print("{}HURRAY!{} Number of functional tests violating naming convention reduced!".format(BOLD[1], BOLD[0]))
|
||||
print("Consider reducing EXPECTED_VIOLATION_COUNT from %d to %d" % (EXPECTED_VIOLATION_COUNT, len(bad_script_names)))
|
||||
elif len(bad_script_names) > EXPECTED_VIOLATION_COUNT:
|
||||
print("INFO: %d tests not meeting naming conventions (expected %d):" % (len(bad_script_names), EXPECTED_VIOLATION_COUNT))
|
||||
if len(bad_script_names) > 0:
|
||||
print("INFO: %d tests not meeting naming conventions:" % (len(bad_script_names)))
|
||||
print(" %s" % ("\n ".join(sorted(bad_script_names))))
|
||||
assert len(bad_script_names) <= EXPECTED_VIOLATION_COUNT + LEEWAY, "Too many tests not following naming convention! (%d found, expected: <= %d)" % (len(bad_script_names), EXPECTED_VIOLATION_COUNT)
|
||||
assert len(bad_script_names) <= LEEWAY, "Too many tests not following naming convention! (%d found, maximum: %d)" % (len(bad_script_names), LEEWAY)
|
||||
|
||||
|
||||
def check_script_list(src_dir):
|
||||
|
|
Loading…
Reference in a new issue