From 0b80ab0f265e8ac1f753bc3696d01011bfde48cd Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Mon, 25 Apr 2022 15:13:04 +0000 Subject: [PATCH] minor fixes and cleanups --- mmgen/base_proto/bitcoin/rpc.py | 36 +++++++++++++++++---------------- mmgen/util.py | 4 ++-- test/unit_tests_d/ut_rpc.py | 11 +++++----- 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/mmgen/base_proto/bitcoin/rpc.py b/mmgen/base_proto/bitcoin/rpc.py index 47517ea7..e6a3bb50 100755 --- a/mmgen/base_proto/bitcoin/rpc.py +++ b/mmgen/base_proto/bitcoin/rpc.py @@ -74,17 +74,28 @@ class BitcoinRPCClient(RPCClient,metaclass=AsyncInit): self.set_backend(backend) # backend requires self.auth self.cached = {} + + self.caps = ('full_node',) + for func,cap in ( + ('setlabel','label_api'), + ('signrawtransactionwithkey','sign_with_key') ): + if len((await self.call('help',func)).split('\n')) > 3: + self.caps += (cap,) + + call_group = [ + ('getblockcount',()), + ('getblockhash',(0,)), + ('getnetworkinfo',()), + ('getblockchaininfo',()), + ] + ( - self.cached['networkinfo'], self.blockcount, + block0, + self.cached['networkinfo'], self.cached['blockchaininfo'], - block0 - ) = await self.gathered_call(None, ( - ('getnetworkinfo',()), - ('getblockcount',()), - ('getblockchaininfo',()), - ('getblockhash',(0,)), - )) + ) = await self.gathered_call(None,tuple(call_group)) + self.daemon_version = self.cached['networkinfo']['version'] self.daemon_version_str = self.cached['networkinfo']['subversion'] self.chain = self.cached['blockchaininfo']['chain'] @@ -110,13 +121,6 @@ class BitcoinRPCClient(RPCClient,metaclass=AsyncInit): if self.chain == 'mainnet': # skip this for testnet, as Genesis block may change await check_chainfork_mismatch(block0) - self.caps = ('full_node',) - for func,cap in ( - ('setlabel','label_api'), - ('signrawtransactionwithkey','sign_with_key') ): - if len((await self.call('help',func)).split('\n')) > 3: - self.caps += (cap,) - if not self.chain == 'regtest': await self.check_tracking_wallet() @@ -177,8 +181,6 @@ class BitcoinRPCClient(RPCClient,metaclass=AsyncInit): def segwit_is_active(): d = self.cached['blockchaininfo'] - if d['chain'] == 'regtest': - return True try: if d['softforks']['segwit']['active'] == True: diff --git a/mmgen/util.py b/mmgen/util.py index 3bbb6c90..e1a4bce1 100755 --- a/mmgen/util.py +++ b/mmgen/util.py @@ -349,11 +349,11 @@ def decode_timestamp(s): def make_timestamp(secs=None): return '{:04d}{:02d}{:02d}_{:02d}{:02d}{:02d}'.format(*time.gmtime( - int(secs) if secs else time.time() )[:6]) + int(secs) if secs != None else time.time() )[:6]) def make_timestr(secs=None): return '{}-{:02d}-{:02d} {:02d}:{:02d}:{:02d}'.format(*time.gmtime( - int(secs) if secs else time.time() )[:6]) + int(secs) if secs != None else time.time() )[:6]) def secs_to_dhms(secs): hrs = secs // 3600 diff --git a/test/unit_tests_d/ut_rpc.py b/test/unit_tests_d/ut_rpc.py index ceef3caf..8be891dc 100755 --- a/test/unit_tests_d/ut_rpc.py +++ b/test/unit_tests_d/ut_rpc.py @@ -30,14 +30,15 @@ def cfg_file_auth_test(proto,d): run_session(do()) d.stop() -def do_msg(rpc): - qmsg(' Testing backend {!r}'.format( type(rpc.backend).__name__ )) +def do_msg(rpc,backend): + bname = type(rpc.backend).__name__ + qmsg(' Testing backend {!r}{}'.format( bname, '' if backend == bname else f' [{backend}]' )) class init_test: async def btc(proto,backend,daemon): rpc = await rpc_init(proto,backend,daemon) - do_msg(rpc) + do_msg(rpc,backend) bh = (await rpc.call('getblockchaininfo',timeout=300))['bestblockhash'] await rpc.gathered_call('getblock',((bh,),(bh,1)),timeout=300) @@ -45,13 +46,13 @@ class init_test: async def bch(proto,backend,daemon): rpc = await rpc_init(proto,backend,daemon) - do_msg(rpc) + do_msg(rpc,backend) ltc = bch async def eth(proto,backend,daemon): rpc = await rpc_init(proto,backend,daemon) - do_msg(rpc) + do_msg(rpc,backend) await rpc.call('eth_blockNumber',timeout=300) etc = eth