Changeset View
Changeset View
Standalone View
Standalone View
test/functional/interface_bitcoin_cli.py
Show All 24 Lines | class TestBitcoinCli(BitcoinTestFramework): | ||||
def skip_test_if_missing_module(self): | def skip_test_if_missing_module(self): | ||||
self.skip_if_no_cli() | self.skip_if_no_cli() | ||||
def run_test(self): | def run_test(self): | ||||
"""Main test logic""" | """Main test logic""" | ||||
self.nodes[0].generate(BLOCKS) | self.nodes[0].generate(BLOCKS) | ||||
cli_response = self.nodes[0].cli("-version").send_cli() | |||||
assert "{} RPC client version".format( | |||||
self.config['environment']['PACKAGE_NAME']) in cli_response | |||||
self.log.info( | |||||
"Compare responses from getwalletinfo RPC and `bitcoin-cli getwalletinfo`") | |||||
if self.is_wallet_compiled(): | |||||
cli_response = self.nodes[0].cli.getwalletinfo() | |||||
rpc_response = self.nodes[0].getwalletinfo() | |||||
assert_equal(cli_response, rpc_response) | |||||
self.log.info( | self.log.info( | ||||
"Compare responses from getblockchaininfo RPC and `bitcoin-cli getblockchaininfo`") | "Compare responses from getblockchaininfo RPC and `bitcoin-cli getblockchaininfo`") | ||||
cli_response = self.nodes[0].cli.getblockchaininfo() | cli_response = self.nodes[0].cli.getblockchaininfo() | ||||
rpc_response = self.nodes[0].getblockchaininfo() | rpc_response = self.nodes[0].getblockchaininfo() | ||||
assert_equal(cli_response, rpc_response) | assert_equal(cli_response, rpc_response) | ||||
user, password = get_auth_cookie(self.nodes[0].datadir, self.chain) | user, password = get_auth_cookie(self.nodes[0].datadir, self.chain) | ||||
Show All 12 Lines | def run_test(self): | ||||
self.log.info("Test connecting to a non-existing server") | self.log.info("Test connecting to a non-existing server") | ||||
assert_raises_process_error( | assert_raises_process_error( | ||||
1, "Could not connect to the server", self.nodes[0].cli('-rpcport=1').echo) | 1, "Could not connect to the server", self.nodes[0].cli('-rpcport=1').echo) | ||||
self.log.info("Test connecting with non-existing RPC cookie file") | self.log.info("Test connecting with non-existing RPC cookie file") | ||||
assert_raises_process_error(1, "Could not locate RPC credentials", self.nodes[0].cli( | assert_raises_process_error(1, "Could not locate RPC credentials", self.nodes[0].cli( | ||||
'-rpccookiefile=does-not-exist', '-rpcpassword=').echo) | '-rpccookiefile=does-not-exist', '-rpcpassword=').echo) | ||||
self.log.info("Make sure that -getinfo with arguments fails") | self.log.info("Test -getinfo with arguments fails") | ||||
assert_raises_process_error( | assert_raises_process_error( | ||||
1, "-getinfo takes no arguments", self.nodes[0].cli('-getinfo').help) | 1, "-getinfo takes no arguments", self.nodes[0].cli('-getinfo').help) | ||||
self.log.info( | self.log.info( | ||||
"Test that -getinfo returns the expected network and blockchain info") | "Test -getinfo returns expected network and blockchain info") | ||||
if self.is_wallet_compiled(): | |||||
self.nodes[0].encryptwallet(password) | |||||
cli_get_info = self.nodes[0].cli('-getinfo').send_cli() | cli_get_info = self.nodes[0].cli('-getinfo').send_cli() | ||||
network_info = self.nodes[0].getnetworkinfo() | network_info = self.nodes[0].getnetworkinfo() | ||||
blockchain_info = self.nodes[0].getblockchaininfo() | blockchain_info = self.nodes[0].getblockchaininfo() | ||||
assert_equal(cli_get_info['version'], network_info['version']) | assert_equal(cli_get_info['version'], network_info['version']) | ||||
assert_equal(cli_get_info['blocks'], blockchain_info['blocks']) | assert_equal(cli_get_info['blocks'], blockchain_info['blocks']) | ||||
assert_equal(cli_get_info['headers'], blockchain_info['headers']) | |||||
assert_equal(cli_get_info['timeoffset'], network_info['timeoffset']) | assert_equal(cli_get_info['timeoffset'], network_info['timeoffset']) | ||||
assert_equal(cli_get_info['connections'], network_info['connections']) | assert_equal(cli_get_info['connections'], network_info['connections']) | ||||
assert_equal(cli_get_info['proxy'], | assert_equal(cli_get_info['proxy'], | ||||
network_info['networks'][0]['proxy']) | network_info['networks'][0]['proxy']) | ||||
assert_equal(cli_get_info['difficulty'], blockchain_info['difficulty']) | assert_equal(cli_get_info['difficulty'], blockchain_info['difficulty']) | ||||
assert_equal(cli_get_info['chain'], blockchain_info['chain']) | assert_equal(cli_get_info['chain'], blockchain_info['chain']) | ||||
if self.is_wallet_compiled(): | if self.is_wallet_compiled(): | ||||
self.log.info( | self.log.info( | ||||
"Test that -getinfo returns the expected wallet info") | "Test -getinfo and bitcoin-cli getwalletinfo return expected wallet info") | ||||
assert_equal(cli_get_info['balance'], BALANCE) | assert_equal(cli_get_info['balance'], BALANCE) | ||||
wallet_info = self.nodes[0].getwalletinfo() | wallet_info = self.nodes[0].getwalletinfo() | ||||
assert_equal( | assert_equal( | ||||
cli_get_info['keypoolsize'], | cli_get_info['keypoolsize'], | ||||
wallet_info['keypoolsize']) | wallet_info['keypoolsize']) | ||||
assert_equal( | |||||
cli_get_info['unlocked_until'], | |||||
wallet_info['unlocked_until']) | |||||
assert_equal(cli_get_info['paytxfee'], wallet_info['paytxfee']) | assert_equal(cli_get_info['paytxfee'], wallet_info['paytxfee']) | ||||
assert_equal(cli_get_info['relayfee'], network_info['relayfee']) | assert_equal(cli_get_info['relayfee'], network_info['relayfee']) | ||||
# unlocked_until is not tested because the wallet is not encrypted | assert_equal(self.nodes[0].cli.getwalletinfo(), wallet_info) | ||||
else: | else: | ||||
self.log.info( | self.log.info( | ||||
"*** Wallet not compiled; -getinfo wallet tests skipped") | "*** Wallet not compiled; cli getwalletinfo and -getinfo wallet tests skipped") | ||||
self.stop_node(0) | |||||
self.log.info("Test -version with node stopped") | |||||
cli_response = self.nodes[0].cli("-version").send_cli() | |||||
assert "{} RPC client version".format( | |||||
self.config['environment']['PACKAGE_NAME']) in cli_response | |||||
self.log.info( | |||||
"Test -rpcwait option waits for RPC connection instead of failing") | |||||
# Start node without RPC connection. | |||||
self.nodes[0].start() | |||||
# Verify failure without -rpcwait. | |||||
assert_raises_process_error(1, | |||||
"Could not connect to the server", | |||||
self.nodes[0].cli('getblockcount').echo) | |||||
# Verify success using -rpcwait. | |||||
assert_equal( | |||||
BLOCKS, | |||||
self.nodes[0].cli( | |||||
'-rpcwait', | |||||
'getblockcount').send_cli()) | |||||
self.nodes[0].wait_for_rpc_connection() | |||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
TestBitcoinCli().main() | TestBitcoinCli().main() |