mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-10 17:17:14 +01:00
5edad5ce5d
test: add -getinfo multiwallet functional tests (Jon Atack)903b6c117f
rpc: drop unused JSONRPCProcessBatchReply size arg, refactor (Jon Atack)afce85eb99
cli: use GetWalletBalances() functionality for -getinfo (Jon Atack)9f01849a49
cli: create GetWalletBalances() to fetch multiwallet balances (Jon Atack)743077544b
cli: lift -rpcwallet logic up to CommandLineRPC() (Jon Atack)29f2cbdeb7
cli: extract connection exception handler, -rpcwait logic (Jon Atack) Pull request description: This PR is a client-side version of #18453, per review feedback there and [review club discussions](https://bitcoincore.reviews/18453#meeting-log). It updates `bitcoin-cli -getinfo` on the client side to display wallet name and balance for the loaded wallets when more than one is loaded (e.g. you are in "multiwallet mode") and `-rpcwallet=` is not passed; otherwise, behavior is unchanged. before ```json $ bitcoin-cli -getinfo -regtest { "version": 199900, "blocks": 15599, "headers": 15599, "verificationprogress": 1, "timeoffset": 0, "connections": 0, "proxy": "", "difficulty": 4.656542373906925e-10, "chain": "regtest", "balance": 0.00001000, "relayfee": 0.00001000 } ``` after ```json $ bitcoin-cli -getinfo -regtest { "version": 199900, "blocks": 15599, "headers": 15599, "verificationprogress": 1, "timeoffset": 0, "connections": 0, "proxy": "", "difficulty": 4.656542373906925e-10, "chain": "regtest", "balances": { "": 0.00001000, "Encrypted": 0.00003500, "day-to-day": 0.00000120, "side project": 0.00000094 } } ``` ----- `Review club` discussion about this PR is here: https://bitcoincore.reviews/18453 This PR can be manually tested by building, creating/loading/unloading several wallets with `bitcoin-cli createwallet/loadwallet/unloadwallet` and running `bitcoin-cli -getinfo` and `bitcoin-cli -rpcwallet=<wallet-name> -getinfo`. `wallet_multiwallet.py --usecli` provides regression test coverage on this change, along with `interface_bitcoin_cli.py` where this PR adds test coverage. Credit to Wladimir J. van der Laan for the idea in https://github.com/bitcoin/bitcoin/issues/17314 and https://github.com/bitcoin/bitcoin/pull/18453#issuecomment-605431806. ACKs for top commit: promag: Tested ACK5edad5ce5d
. jnewbery: utACK5edad5ce5d
meshcollider: Code review ACK5edad5ce5d
Tree-SHA512: 4ca36c5f6c49936b40afb605c44459c1d5b80b5bd84df634007ca276b3f6c102a0cb382f9d528370363ee32c94b0d7ffa15184578eaf8de74179e566c5c5cee5
47 lines
1.5 KiB
C++
47 lines
1.5 KiB
C++
// Copyright (c) 2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2019 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_RPC_REQUEST_H
|
|
#define BITCOIN_RPC_REQUEST_H
|
|
|
|
#include <string>
|
|
|
|
#include <univalue.h>
|
|
|
|
namespace util {
|
|
class Ref;
|
|
} // namespace util
|
|
|
|
UniValue JSONRPCRequestObj(const std::string& strMethod, const UniValue& params, const UniValue& id);
|
|
UniValue JSONRPCReplyObj(const UniValue& result, const UniValue& error, const UniValue& id);
|
|
std::string JSONRPCReply(const UniValue& result, const UniValue& error, const UniValue& id);
|
|
UniValue JSONRPCError(int code, const std::string& message);
|
|
|
|
/** Generate a new RPC authentication cookie and write it to disk */
|
|
bool GenerateAuthCookie(std::string *cookie_out);
|
|
/** Read the RPC authentication cookie from disk */
|
|
bool GetAuthCookie(std::string *cookie_out);
|
|
/** Delete RPC authentication cookie from disk */
|
|
void DeleteAuthCookie();
|
|
/** Parse JSON-RPC batch reply into a vector */
|
|
std::vector<UniValue> JSONRPCProcessBatchReply(const UniValue& in);
|
|
|
|
class JSONRPCRequest
|
|
{
|
|
public:
|
|
UniValue id;
|
|
std::string strMethod;
|
|
UniValue params;
|
|
bool fHelp;
|
|
std::string URI;
|
|
std::string authUser;
|
|
std::string peerAddr;
|
|
const util::Ref& context;
|
|
|
|
JSONRPCRequest(const util::Ref& context) : id(NullUniValue), params(NullUniValue), fHelp(false), context(context) {}
|
|
void parse(const UniValue& valRequest);
|
|
};
|
|
|
|
#endif // BITCOIN_RPC_REQUEST_H
|