test: Check RPC argument mapping


test: Check RPC argument mapping


Parse the dispatch tables from the server implementation files,
and the conversion table from the client.

Perform the following consistency checks:

- Arguments defined in conversion table, must be present in dispatch
  table. If not, it was probably forgotten to add them to the
  dispatch table, and they will not work.

- Arguments defined in conversion table must have the same names as
  in the dispatch table. If not, they will not work.

- All aliases for an argument must either be present in the
  conversion table, or not. Anything in between means an oversight
  and some aliases won't work.

Any of these results in an error.

It also performs a consistency check to see if the same
named argument is sometimes converted, and sometimes not. E.g.
one RPC call might have a 'verbose' argument that is converted,
another RPC call might have one that is not converted. This is not
necessarily wrong, but points at a possible error (as well as
makes the API harder to memorize) - so it is emitted as a warning
(could upgrade this to error).

Backport of core PR10753

The script will be integrated into arcanist in a later diff.

Test Plan:
Should report no error

./contrib/devtools/check-rpc-mappings.py .

Remove the line:

{"getblock", 1, "verbose"},

In the file src/rpc/client.cpp

./contrib/devtools/check-rpc-mappings.py .

Check the error is catched

Reviewers: #bitcoin_abc, deadalnix, markblundeberg

Reviewed By: #bitcoin_abc, markblundeberg

Subscribers: markblundeberg

Differential Revision: https://reviews.bitcoinabc.org/D3565


Wladimir J. van der Laan <laanwj@gmail.com>Authored on Jul 6 2017, 13:01
FabienCommitted on Jul 7 2019, 11:00
markblundebergPushed on Jul 7 2019, 15:52
Restricted Project
Differential Revision
D3565: test: Check RPC argument mapping
rSTAGINGcf7e92c77816: Add share/rpcuser to dist. source code archive