From 961eb0bd4ff2d969e84e094a4c729fb54eb038d7 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Wed, 9 Apr 2025 09:16:01 +0000 Subject: [PATCH] cmdtest eth*: method renames, MRO fixes, cleanups --- test/cmdtest_d/ethbump.py | 47 +++++------------------ test/cmdtest_d/ethdev.py | 15 ++++++-- test/cmdtest_d/ethswap.py | 66 +++++++++++++++++++++++--------- test/cmdtest_d/include/common.py | 3 +- test/cmdtest_d/regtest.py | 2 + test/cmdtest_d/swap.py | 4 +- 6 files changed, 75 insertions(+), 62 deletions(-) diff --git a/test/cmdtest_d/ethbump.py b/test/cmdtest_d/ethbump.py index cabceeca..e733e48f 100755 --- a/test/cmdtest_d/ethbump.py +++ b/test/cmdtest_d/ethbump.py @@ -20,13 +20,14 @@ from mmgen.util import ymsg, suf from ..include.common import imsg, omsg_r -from .include.common import cleanup_env, dfl_words_file +from .include.common import cleanup_env, dfl_words_file, dfl_sid from .include.runner import CmdTestRunner from .httpd.thornode import ThornodeServer -from .ethdev import CmdTestEthdev, CmdTestEthdevMethods, dfl_sid +from .ethdev import CmdTestEthdev, CmdTestEthdevMethods from .regtest import CmdTestRegtest from .swap import CmdTestSwapMethods +from .ethswap import CmdTestEthSwapMethods thornode_server = ThornodeServer() burn_addr = 'beefcafe22' * 4 @@ -113,12 +114,14 @@ class CmdTestEthBumpMethods: return 'ok' -class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthdev, CmdTestSwapMethods): +class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthSwapMethods, CmdTestSwapMethods, CmdTestEthdev): 'Ethereum transaction bumping operations' networks = ('eth',) tmpdir_nums = [42] dfl_devnet_block_period = {'geth': 7, 'reth': 9} + fund_amt = 100000 + token_fund_amt = 1000 cmd_group_in = ( ('subgroup.ltc_init', []), @@ -140,9 +143,9 @@ class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthdev, CmdTestSwapMethods): ('addrimport', 'importing addresses'), ('addrimport_devaddr', 'importing the dev address'), ('fund_devaddr', 'funding the dev address'), - ('fund_mmgen_addr1', 'spend from dev address to address :1)'), - ('fund_mmgen_addr2', 'spend from dev address to address :11)'), - ('fund_mmgen_addr3', 'spend from dev address to address :21)'), + ('fund_mmgen_addr1', 'funding user address :1)'), + ('fund_mmgen_addr2', 'funding user address :11)'), + ('fund_mmgen_addr3', 'funding user address :21)'), ('wait1', 'waiting for block'), ), 'ltc_init': ( @@ -253,15 +256,6 @@ class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthdev, CmdTestSwapMethods): thornode_server.start() - def fund_mmgen_addr1(self): - return self._fund_mmgen_addr(arg=f'{dfl_sid}:E:1,100000') - - def fund_mmgen_addr2(self): - return self._fund_mmgen_addr(arg=f'{dfl_sid}:E:11,100000') - - def fund_mmgen_addr3(self): - return self._fund_mmgen_addr(arg=f'{dfl_sid}:E:21,100000') - def txcreate1(self): return self._txcreate(args=[f'{burn_addr},987'], acct='1') @@ -303,27 +297,6 @@ class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthdev, CmdTestSwapMethods): def bal4(self): return self._bal_check(pat=rf'{dfl_sid}:E:12\s+4444\.3333\s') - async def token_deploy_a(self): - return await self._token_deploy_math(num=1, get_receipt=False) - - async def token_deploy_b(self): - return await self._token_deploy_owned(num=1, get_receipt=False) - - async def token_deploy_c(self): - return await self._token_deploy_token(num=1, get_receipt=False) - - def token_fund_user(self): - return self._token_transfer_ops(op='fund_user', mm_idxs=[1], get_receipt=False) - - def token_addrgen(self): - return self._token_addrgen(mm_idxs=[1], naddrs=5) - - def token_addrimport(self): - return self._token_addrimport('token_addr1', '1-5', expect='5/5') - - def token_bal1(self): - return self._token_bal_check(pat=rf'{dfl_sid}:E:1\s+1000\s') - def token_txdo1(self): return self._token_txcreate(cmd='txdo', args=[f'{dfl_sid}:E:2,1.23456', dfl_words_file]) @@ -373,7 +346,7 @@ class CmdTestEthBump(CmdTestEthBumpMethods, CmdTestEthdev, CmdTestSwapMethods): swaptxbump1sign = swaptxbump2sign = token_txbump2sign swaptxbump1send = swaptxbump2send = token_txbump2send -class CmdTestEthBumpLTC(CmdTestRegtest, CmdTestSwapMethods): +class CmdTestEthBumpLTC(CmdTestSwapMethods, CmdTestRegtest): network = ('ltc',) tmpdir_nums = [43] cmd_group_in = CmdTestRegtest.cmd_group_in + ( diff --git a/test/cmdtest_d/ethdev.py b/test/cmdtest_d/ethdev.py index 68d20777..2e61933e 100755 --- a/test/cmdtest_d/ethdev.py +++ b/test/cmdtest_d/ethdev.py @@ -49,6 +49,7 @@ from ..include.common import ( from .include.common import ( ref_dir, dfl_words_file, + dfl_sid, tx_comment_jp, tx_comment_lat_cyr_gr, tw_comment_zh, @@ -65,7 +66,6 @@ from .httpd.etherscan import EtherscanServer etherscan_server = EtherscanServer() del_addrs = ('4', '1') -dfl_sid = '98831F3A' # The OpenEthereum dev address with lots of coins. Create with "ethkey -b info ''": dfl_devaddr = '00a329c0648769a73afac7f9381e08fb43dbea72' @@ -124,7 +124,7 @@ def set_vbals(daemon_id): coin = cfg.coin -class CmdTestEthdevMethods: # mixin class +class CmdTestEthdevMethods: def _del_addr(self, addr): t = self.spawn('mmgen-tool', self.eth_opts + ['remove_address', addr]) @@ -186,6 +186,15 @@ class CmdTestEthdevMethods: # mixin class return_early = True, env = cleanup_env(cfg=self.cfg)) + def fund_mmgen_addr1(self): + return self._fund_mmgen_addr(arg=f'{dfl_sid}:E:1,{self.fund_amt}') + + def fund_mmgen_addr2(self): + return self._fund_mmgen_addr(arg=f'{dfl_sid}:E:11,{self.fund_amt}') + + def fund_mmgen_addr3(self): + return self._fund_mmgen_addr(arg=f'{dfl_sid}:E:21,{self.fund_amt}') + def _fund_mmgen_addr(self, arg): return self._txdo( args = [f'--keys-from-file={joinpath(self.tmpdir, dfl_devkey_fn)}', arg, dfl_words_file], @@ -352,7 +361,7 @@ class CmdTestEthdevMethods: # mixin class end_silence() return 'ok' -class CmdTestEthdev(CmdTestBase, CmdTestShared, CmdTestEthdevMethods): +class CmdTestEthdev(CmdTestEthdevMethods, CmdTestBase, CmdTestShared): 'Ethereum transacting, token deployment and tracking wallet operations' networks = ('eth', 'etc') passthru_opts = ('coin', 'daemon_id', 'eth_daemon_id', 'http_timeout', 'rpc_backend') diff --git a/test/cmdtest_d/ethswap.py b/test/cmdtest_d/ethswap.py index 5e47fe8d..722cf926 100755 --- a/test/cmdtest_d/ethswap.py +++ b/test/cmdtest_d/ethswap.py @@ -16,7 +16,7 @@ from mmgen.cfg import Config from mmgen.protocol import init_proto from .include.runner import CmdTestRunner -from .include.common import dfl_seed_id +from .include.common import dfl_sid from .httpd.thornode import ThornodeServer from .regtest import CmdTestRegtest @@ -31,7 +31,34 @@ def {name}(self): return ethswap_eth.run_test("{eth_name}", sub=True) """ -class CmdTestEthSwap(CmdTestRegtest, CmdTestSwapMethods): +class CmdTestEthSwapMethods: + + async def token_deploy_a(self): + return await self._token_deploy_math(num=1, get_receipt=False) + + async def token_deploy_b(self): + return await self._token_deploy_owned(num=1, get_receipt=False) + + async def token_deploy_c(self): + return await self._token_deploy_token(num=1, get_receipt=False) + + def token_fund_user(self): + return self._token_transfer_ops( + op = 'fund_user', + mm_idxs = [1], + amt = self.token_fund_amt, + get_receipt = False) + + def token_addrgen(self): + return self._token_addrgen(mm_idxs=[1], naddrs=5) + + def token_addrimport(self): + return self._token_addrimport('token_addr1', '1-5', expect='5/5') + + def token_bal1(self): + return self._token_bal_check(pat=rf'{dfl_sid}:E:1\s+{self.token_fund_amt}\s') + +class CmdTestEthSwap(CmdTestSwapMethods, CmdTestRegtest): 'Ethereum swap operations' bdb_wallet = True @@ -76,10 +103,9 @@ class CmdTestEthSwap(CmdTestRegtest, CmdTestSwapMethods): ), 'eth_fund': ( 'funding the ETH tracking wallet', - ('eth_txcreate1', ''), - ('eth_txsign1', ''), - ('eth_txsend1', ''), - ('eth_bal1', ''), + ('eth_fund_mmgen_addr1', ''), + ('eth_fund_mmgen_addr2', ''), + ('eth_bal1', ''), ), 'swap': ( 'swap operations (BTC -> ETH)', @@ -142,7 +168,7 @@ class CmdTestEthSwap(CmdTestRegtest, CmdTestSwapMethods): return self._swaptxcreate_ui_common(t) def swaptxcreate2(self): - t = self._swaptxcreate(['BTC', '8.765', 'ETH', f'{dfl_seed_id}:E:1']) + t = self._swaptxcreate(['BTC', '8.765', 'ETH', f'{dfl_sid}:E:1']) t.expect('OK? (Y/n): ', 'y') return self._swaptxcreate_ui_common(t) @@ -159,12 +185,12 @@ class CmdTestEthSwap(CmdTestRegtest, CmdTestSwapMethods): return self._swaptxsend() def swaptxbump1(self): # create one-output TX back to self to rescue funds - return self._swaptxbump('40s', output_args=[f'{dfl_seed_id}:B:1']) + return self._swaptxbump('40s', output_args=[f'{dfl_sid}:B:1']) def swaptxdo1(self): return self._swaptxcreate_ui_common( self._swaptxcreate( - ['BTC', '0.223344', f'{dfl_seed_id}:B:3', 'ETH', f'{dfl_seed_id}:E:2'], + ['BTC', '0.223344', f'{dfl_sid}:B:3', 'ETH', f'{dfl_sid}:E:2'], action = 'txdo'), sign_and_send = True, file_desc = 'Sent transaction') @@ -180,11 +206,13 @@ class CmdTestEthSwap(CmdTestRegtest, CmdTestSwapMethods): thornode_server.stop() return 'ok' -class CmdTestEthSwapEth(CmdTestEthdev, CmdTestSwapMethods): +class CmdTestEthSwapEth(CmdTestEthSwapMethods, CmdTestSwapMethods, CmdTestEthdev): 'Ethereum swap operations - Ethereum wallet' networks = ('eth',) tmpdir_nums = [48] + fund_amt = '123.456' + token_fund_amt = 1000 bals = lambda self, k: { 'swap1': [('98831F3A:E:1', '123.456')], @@ -192,13 +220,15 @@ class CmdTestEthSwapEth(CmdTestEthdev, CmdTestSwapMethods): }[k] cmd_group_in = CmdTestEthdev.cmd_group_in + ( - ('swaptxcreate1', 'creating an ETH->BTC swap transaction'), - ('swaptxcreate2', 'creating an ETH->BTC swap transaction (specific address, trade limit)'), - ('swaptxsign1', 'signing the transaction'), - ('swaptxsend1', 'sending the transaction'), - ('swaptxstatus1', 'getting the transaction status (with --verbose)'), - ('bal1', 'the ETH balance'), - ('bal2', 'the ETH balance'), + ('fund_mmgen_addr1', 'funding user address :1)'), + ('fund_mmgen_addr2', 'funding user address :11)'), + ('swaptxcreate1', 'creating an ETH->BTC swap transaction'), + ('swaptxcreate2', 'creating an ETH->BTC swap transaction (specific address, trade limit)'), + ('swaptxsign1', 'signing the transaction'), + ('swaptxsend1', 'sending the transaction'), + ('swaptxstatus1', 'getting the transaction status (with --verbose)'), + ('bal1', 'the ETH balance'), + ('bal2', 'the ETH balance'), ) def swaptxcreate1(self): @@ -209,7 +239,7 @@ class CmdTestEthSwapEth(CmdTestEthdev, CmdTestSwapMethods): def swaptxcreate2(self): return self._swaptxcreate_ui_common( self._swaptxcreate( - ['ETH', '8.765', 'BTC', f'{dfl_seed_id}:B:4'], + ['ETH', '8.765', 'BTC', f'{dfl_sid}:B:4'], add_opts = ['--trade-limit=3%']), expect = ':2019e4/1/0') diff --git a/test/cmdtest_d/include/common.py b/test/cmdtest_d/include/common.py index 4aff6c94..3a2531bc 100755 --- a/test/cmdtest_d/include/common.py +++ b/test/cmdtest_d/include/common.py @@ -32,7 +32,6 @@ ref_wallet_brainpass = 'abc' ref_wallet_hash_preset = '1' ref_wallet_incog_offset = 123 -dfl_seed_id = '98831F3A' dfl_addr_idx_list = '1010,500-501,31-33,1,33,500,1011' dfl_wpasswd = 'reference password' @@ -46,6 +45,8 @@ incog_id_fn = 'incog_id' non_mmgen_fn = 'coinkey' ref_dir = os.path.join('test', 'ref') + +dfl_sid = '98831F3A' dfl_words_file = os.path.join(ref_dir, '98831F3A.mmwords') dfl_bip39_file = os.path.join(ref_dir, '98831F3A.bip39') diff --git a/test/cmdtest_d/regtest.py b/test/cmdtest_d/regtest.py index bd82fac9..fe1a7a63 100755 --- a/test/cmdtest_d/regtest.py +++ b/test/cmdtest_d/regtest.py @@ -170,6 +170,8 @@ class CmdTestRegtest(CmdTestBase, CmdTestShared): deterministic = False test_rbf = False bdb_wallet = False + menu_prompt = 'abel:\b' + input_sels_prompt = 'to spend: ' cmd_group_in = ( ('setup', 'regtest (Bob and Alice) mode setup'), diff --git a/test/cmdtest_d/swap.py b/test/cmdtest_d/swap.py index f93b80bc..3be4b149 100755 --- a/test/cmdtest_d/swap.py +++ b/test/cmdtest_d/swap.py @@ -30,8 +30,6 @@ sample1 = gr_uc[:24] sample2 = '00010203040506' class CmdTestSwapMethods: - menu_prompt = 'abel:\b' - input_sels_prompt = 'to spend: ' @property def bob_opt(self): @@ -265,7 +263,7 @@ class CmdTestSwapMethods: assert data return 'ok' -class CmdTestSwap(CmdTestRegtest, CmdTestAutosignThreaded, CmdTestSwapMethods): +class CmdTestSwap(CmdTestSwapMethods, CmdTestRegtest, CmdTestAutosignThreaded): bdb_wallet = True networks = ('btc',) tmpdir_nums = [37]