Browse Source

unit_tests rpc: async/await cleanups

The MMGen Project 1 year ago
parent
commit
d3d4b11c7f
1 changed files with 41 additions and 39 deletions
  1. 41 39
      test/unit_tests_d/ut_rpc.py

+ 41 - 39
test/unit_tests_d/ut_rpc.py

@@ -7,7 +7,7 @@ test.unit_tests_d.ut_rpc: RPC unit test for the MMGen suite
 import sys,os,time
 
 from mmgen.color import yellow,cyan
-from mmgen.util import msg,gmsg,async_run,make_timestr,pp_fmt,die
+from mmgen.util import msg,gmsg,make_timestr,pp_fmt,die
 from mmgen.protocol import init_proto
 from mmgen.rpc import rpc_init
 from mmgen.daemon import CoinDaemon
@@ -16,7 +16,7 @@ from mmgen.proto.xmr.daemon import MoneroWalletDaemon
 
 from ..include.common import cfg,qmsg,vmsg
 
-def cfg_file_auth_test(proto,d,bad_auth=False):
+async def cfg_file_auth_test(cfg, d, bad_auth=False):
 	m = 'missing credentials' if bad_auth else f'credentials from {d.cfg_file}'
 	qmsg(cyan(f'\n  Testing authentication with {m}:'))
 	time.sleep(0.1) # race condition
@@ -34,19 +34,19 @@ def cfg_file_auth_test(proto,d,bad_auth=False):
 	if bad_auth:
 		os.rename(d.auth_cookie_fn,d.auth_cookie_fn+'.bak')
 		try:
-			async_run(rpc_init(cfg,proto))
+			await rpc_init(cfg, d.proto)
 		except Exception as e:
 			vmsg(yellow(str(e)))
 		else:
 			die(3,'No error on missing credentials!')
 		os.rename(d.auth_cookie_fn+'.bak',d.auth_cookie_fn)
 	else:
-		rpc = async_run(rpc_init(cfg,proto))
+		rpc = await rpc_init(cfg, d.proto)
 		assert rpc.auth.user == 'ut_rpc', f'{rpc.auth.user}: user is not ut_rpc!'
 
 	d.stop()
 
-def print_daemon_info(rpc):
+async def print_daemon_info(rpc):
 
 	if rpc.proto.base_proto == 'Monero':
 		msg(f"""
@@ -81,8 +81,8 @@ def do_msg(rpc,backend):
 class init_test:
 
 	@staticmethod
-	async def btc(proto,backend,daemon):
-		rpc = await rpc_init(cfg,proto,backend,daemon)
+	async def btc(cfg, daemon, backend):
+		rpc = await rpc_init(cfg, daemon.proto, backend, daemon)
 		do_msg(rpc,backend)
 
 		bh = (await rpc.call('getblockchaininfo',timeout=300))['bestblockhash']
@@ -91,25 +91,25 @@ class init_test:
 		return rpc
 
 	@staticmethod
-	async def bch(proto,backend,daemon):
-		rpc = await rpc_init(cfg,proto,backend,daemon)
+	async def bch(cfg, daemon, backend):
+		rpc = await rpc_init(cfg, daemon.proto, backend, daemon)
 		do_msg(rpc,backend)
 		return rpc
 
 	ltc = bch
 
 	@staticmethod
-	async def eth(proto,backend,daemon):
-		rpc = await rpc_init(cfg,proto,backend,daemon)
+	async def eth(cfg, daemon, backend):
+		rpc = await rpc_init(cfg, daemon.proto, backend, daemon)
 		do_msg(rpc,backend)
 		await rpc.call('eth_blockNumber',timeout=300)
 		return rpc
 
 	etc = eth
 
-def run_test(network_ids,test_cf_auth=False,daemon_ids=None):
+async def run_test(network_ids, test_cf_auth=False, daemon_ids=None, cfg_in=None):
 
-	def do_test(d):
+	async def do_test(d, cfg):
 
 		if not cfg.no_daemon_stop:
 			d.stop()
@@ -118,27 +118,29 @@ def run_test(network_ids,test_cf_auth=False,daemon_ids=None):
 			d.remove_datadir()
 			d.start()
 
-		for n,backend in enumerate(cfg._autoset_opts['rpc_backend'].choices):
-			test = getattr(init_test,d.proto.coin.lower())
-			rpc = async_run(test(d.proto,backend,d))
+		for n, backend in enumerate(cfg._autoset_opts['rpc_backend'].choices):
+			test = getattr(init_test, d.proto.coin.lower())
+			rpc = await test(cfg, d, backend)
 			if not n and cfg.verbose:
-				print_daemon_info(rpc)
+				await print_daemon_info(rpc)
 
 		if not cfg.no_daemon_stop:
 			d.stop()
 
 		if test_cf_auth and sys.platform != 'win32':
-			cfg_file_auth_test(d.proto,d)
-			cfg_file_auth_test(d.proto,d,bad_auth=True)
+			await cfg_file_auth_test(cfg, d)
+			await cfg_file_auth_test(cfg, d, bad_auth=True)
 
 		qmsg('')
 
+	cfg_arg = cfg_in or cfg
+
 	for network_id in network_ids:
-		proto = init_proto( cfg, network_id=network_id )
-		all_ids = CoinDaemon.get_daemon_ids(cfg,proto.coin)
+		proto = init_proto(cfg_arg, network_id=network_id)
+		all_ids = CoinDaemon.get_daemon_ids(cfg_arg, proto.coin)
 		ids = set(daemon_ids) & set(all_ids) if daemon_ids else all_ids
 		for daemon_id in ids:
-			do_test( CoinDaemon(cfg, proto=proto,test_suite=True,daemon_id=daemon_id) )
+			await do_test(CoinDaemon(cfg_arg, proto=proto,test_suite=True,daemon_id=daemon_id), cfg_arg)
 
 	return True
 
@@ -147,27 +149,27 @@ class unit_tests:
 	altcoin_deps = ('ltc','bch','geth','erigon','parity','xmrwallet')
 	arm_skip = ('parity',) # no prebuilt binaries for ARM
 
-	def btc(self,name,ut):
-		return run_test(['btc','btc_tn'],test_cf_auth=True)
+	async def btc(self, name, ut):
+		return await run_test(['btc','btc_tn'], test_cf_auth=True)
 
-	def ltc(self,name,ut):
-		return run_test(['ltc','ltc_tn'],test_cf_auth=True)
+	async def ltc(self, name, ut):
+		return await run_test(['ltc','ltc_tn'], test_cf_auth=True)
 
-	def bch(self,name,ut):
-		return run_test(['bch','bch_tn'],test_cf_auth=True)
+	async def bch(self, name, ut):
+		return await run_test(['bch','bch_tn'], test_cf_auth=True)
 
-	def geth(self,name,ut):
-		return run_test(['eth_tn','eth_rt'],daemon_ids=['geth']) # mainnet returns EIP-155 error on empty blockchain
+	async def geth(self, name, ut):
+		return await run_test(['eth_tn','eth_rt'], daemon_ids=['geth']) # mainnet returns EIP-155 error on empty blockchain
 
-	def erigon(self,name,ut):
-		return run_test(['eth','eth_tn','eth_rt'],daemon_ids=['erigon'])
+	async def erigon(self, name, ut):
+		return await run_test(['eth','eth_tn','eth_rt'], daemon_ids=['erigon'])
 
-	def parity(self,name,ut):
-		return run_test(['etc'])
+	async def parity(self, name, ut):
+		return await run_test(['etc'])
 
-	def xmrwallet(self,name,ut):
+	async def xmrwallet(self, name, ut):
 
-		def test_monerod_rpc(md):
+		async def test_monerod_rpc(md):
 			rpc = MoneroRPCClient(
 				cfg    = cfg,
 				proto  = md.proto,
@@ -178,7 +180,7 @@ class unit_tests:
 				daemon = md,
 			)
 			if cfg.verbose:
-				print_daemon_info(rpc)
+				await print_daemon_info(rpc)
 			rpc.call_raw('get_height')
 			rpc.call('get_last_block_header')
 
@@ -202,7 +204,7 @@ class unit_tests:
 					md.start()
 				wd.start()
 
-				test_monerod_rpc(md)
+				await test_monerod_rpc(md)
 
 				c = MoneroWalletRPCClient( cfg=cfg, daemon=wd )
 				fn = f'monero-{wd.network}-junk-wallet'
@@ -230,5 +232,5 @@ class unit_tests:
 		import shutil
 		shutil.rmtree('test/trash2',ignore_errors=True)
 		os.makedirs('test/trash2/wallet_rpc')
-		async_run(run())
+		await run()
 		return True