-
Notifications
You must be signed in to change notification settings - Fork 38.8k
fuzz: Generate process_message targets individually #28066
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
With C++11 (and later), the duplicate variable is no longer needed. Also, run clang-format on the namespace, as the script in the next commit relies on a specific format. This prevents a clang-format run in the future from breaking the script. (Review hint: --ignore-all-space).
fa28803 to
bbbb996
Compare
brunoerg
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK bbbb996c15aef7786c3a215ed16e1913b12b0f8c
lgtm! running ./test/fuzz/test_runner.py corpus process_message -g on this PR,target becomes:
[('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'version'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'verack'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'addr'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'addrv2'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendaddrv2'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'inv'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getdata'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'merkleblock'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getblocks'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'tx'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'headers'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'block'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getaddr'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'mempool'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'ping'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'pong'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'notfound'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'filterload'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'filteradd'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'filterclear'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'feefilter'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendcmpct'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cmpctblock'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getblocktxn'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'blocktxn'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getcfilters'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cfilter'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getcfheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cfheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getcfcheckpt'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cfcheckpt'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'wtxidrelay'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendtxrcncl'}), ('process_message', {})]on master:
[('process_message', {})]
stickies-v
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Concept ACK, reviewed code mechanically and looks good too.
test/fuzz/test_runner.py
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could make this a bit more robust by only considering lines within namespace NetMsgType?
if has_p2p_msg:
cmd = ["awk" , "/namespace NetMsgType {/,/} \/\/ namespace NetMsgType/ { print $0 }", str(Path(src_dir) / 'src' / 'protocol.cpp')]
lines = subprocess.run(
cmd,
check=True,
stdout=subprocess.PIPE,
text=True,
).stdout.splitlines()
lines = [l.split('"', 1)[1].split('"')[0] for l in lines if l.startswith("const char")]There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
awk will probably fail on macOS again? Also, there shouldn't be any risk in being too greedy, because the fuzz target also validates the argument. It seems more risky to be too little greedy.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Works fine here (macOS 13.4) but I'm not familiar with its portability, so if that's been an issue in the past then yeah might not be ideal. I agree that being too greedy is not a huge risk but if we can be specific I think that's still preferred. Alternatively, could also use git grep with g_all_net_message_types like we do for the rpc target - didn't see that earlier.
if has_p2p_msg:
lines = subprocess.run(
["git", "grep", "--function-context", "g_all_net_message_types{", os.path.join(src_dir, "src", "protocol.cpp")],
check=True,
stdout=subprocess.PIPE,
text=True,
).stdout.splitlines()
lines = [l.split("\"", 1)[1].split("\"")[0] for l in lines if l.startswith("src/protocol.cpp- NetMsgType::")]There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thx, pushed.
fa72260 to
fa68242
Compare
stickies-v
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
crACK fa6824245928dfdbfce75f7e62d646c7e09c9e77
Seems sensible to take a similar approach as in #28015, but I'm not very familiar with fuzzing so my ACK is mostly on the mechanics of the code, which LGTM.
test/fuzz/test_runner.py
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: has_... is not really useful anymore i guess
| has_rpc = (rpc_target, {}) in targets | |
| if has_rpc: | |
| if (rpc_target, {}) in targets: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thx,fixed
Also, add an "rpc" target without LIMIT_TO_RPC_COMMAND set.
fa68242 to
fa6245d
Compare
|
re-crACK fa6245d |
brunoerg
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
reACK fa6245d
code lgtm! better with git grep.
targets with rpc and process_message:
➜ bitcoin-core-dev git:(28066-marco) ✗ ./test/fuzz/test_runner.py corpus process_message rpc -g
2 of 168 detected fuzz target(s) selected: process_message rpc
Generating corpus to corpus
[('process_message', {}), ('rpc', {}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'version'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'verack'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'addr'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'addrv2'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendaddrv2'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'inv'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getdata'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'merkleblock'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getblocks'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'tx'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'headers'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'block'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getaddr'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'mempool'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'ping'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'pong'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'notfound'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'filterload'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'filteradd'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'filterclear'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'feefilter'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendcmpct'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cmpctblock'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getblocktxn'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'blocktxn'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getcfilters'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cfilter'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getcfheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cfheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getcfcheckpt'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cfcheckpt'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'wtxidrelay'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendtxrcncl'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'analyzepsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'clearbanned'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'combinepsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'combinerawtransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'converttopsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'createmultisig'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'createpsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'createrawtransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'decodepsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'decoderawtransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'decodescript'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'deriveaddresses'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'descriptorprocesspsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'disconnectnode'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'echo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'echojson'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'estimaterawfee'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'estimatesmartfee'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'finalizepsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'generate'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'generateblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getaddednodeinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getbestblockhash'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockchaininfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockcount'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockfilter'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockfrompeer'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockhash'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockheader'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockstats'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblocktemplate'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getchaintips'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getchaintxstats'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getconnectioncount'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getdeploymentinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getdescriptorinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getdifficulty'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getindexinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmemoryinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmempoolancestors'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmempooldescendants'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmempoolentry'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmempoolinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmininginfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getnettotals'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getnetworkhashps'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getnetworkinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getnodeaddresses'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getpeerinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getprioritisedtransactions'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getrawmempool'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getrawtransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getrpcinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'gettxout'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'gettxoutsetinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'gettxspendingprevout'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'help'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'invalidateblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'joinpsbts'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'listbanned'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'logging'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'mockscheduler'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'ping'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'preciousblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'prioritisetransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'pruneblockchain'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'reconsiderblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'scanblocks'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'scantxoutset'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'sendrawtransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'setmocktime'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'setnetworkactive'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'signmessagewithprivkey'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'signrawtransactionwithkey'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'submitblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'submitheader'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'submitpackage'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'syncwithvalidationinterfacequeue'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'testmempoolaccept'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'uptime'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'utxoupdatepsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'validateaddress'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'verifychain'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'verifymessage'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'verifytxoutproof'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'waitforblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'waitforblockheight'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'waitfornewblock'})]only process message:
➜ bitcoin-core-dev git:(28066-marco) ✗ ./test/fuzz/test_runner.py corpus process_message -g
1 of 168 detected fuzz target(s) selected: process_message
Generating corpus to corpus
[('process_message', {}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'version'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'verack'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'addr'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'addrv2'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendaddrv2'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'inv'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getdata'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'merkleblock'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getblocks'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'tx'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'headers'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'block'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getaddr'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'mempool'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'ping'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'pong'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'notfound'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'filterload'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'filteradd'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'filterclear'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'feefilter'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendcmpct'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cmpctblock'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getblocktxn'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'blocktxn'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getcfilters'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cfilter'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getcfheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cfheaders'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'getcfcheckpt'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'cfcheckpt'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'wtxidrelay'}), ('process_message', {'LIMIT_TO_MESSAGE_TYPE': 'sendtxrcncl'})]only rpc:
➜ bitcoin-core-dev git:(28066-marco) ✗ ./test/fuzz/test_runner.py corpus rpc -g
1 of 168 detected fuzz target(s) selected: rpc
Generating corpus to corpus
[('rpc', {}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'analyzepsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'clearbanned'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'combinepsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'combinerawtransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'converttopsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'createmultisig'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'createpsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'createrawtransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'decodepsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'decoderawtransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'decodescript'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'deriveaddresses'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'descriptorprocesspsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'disconnectnode'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'echo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'echojson'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'estimaterawfee'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'estimatesmartfee'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'finalizepsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'generate'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'generateblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getaddednodeinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getbestblockhash'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockchaininfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockcount'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockfilter'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockfrompeer'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockhash'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockheader'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblockstats'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getblocktemplate'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getchaintips'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getchaintxstats'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getconnectioncount'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getdeploymentinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getdescriptorinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getdifficulty'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getindexinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmemoryinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmempoolancestors'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmempooldescendants'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmempoolentry'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmempoolinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getmininginfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getnettotals'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getnetworkhashps'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getnetworkinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getnodeaddresses'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getpeerinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getprioritisedtransactions'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getrawmempool'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getrawtransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'getrpcinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'gettxout'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'gettxoutsetinfo'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'gettxspendingprevout'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'help'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'invalidateblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'joinpsbts'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'listbanned'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'logging'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'mockscheduler'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'ping'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'preciousblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'prioritisetransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'pruneblockchain'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'reconsiderblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'scanblocks'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'scantxoutset'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'sendrawtransaction'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'setmocktime'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'setnetworkactive'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'signmessagewithprivkey'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'signrawtransactionwithkey'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'submitblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'submitheader'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'submitpackage'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'syncwithvalidationinterfacequeue'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'testmempoolaccept'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'uptime'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'utxoupdatepsbt'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'validateaddress'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'verifychain'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'verifymessage'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'verifytxoutproof'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'waitforblock'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'waitforblockheight'}), ('rpc', {'LIMIT_TO_RPC_COMMAND': 'waitfornewblock'})]|
Anything left to do for a test-only change with two ACKs or is this rfm? |
Now that
LIMIT_TO_MESSAGE_TYPEis a runtime setting after commit 927b001, it shouldn't hurt to also generate each message type individually. Something similar was done for therpctarget in commit cf4da5e.