From 28cecaec087bea3a41976b961fc575dc591232f4 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Mon, 24 Feb 2025 11:27:48 +0000 Subject: [PATCH] cmdtest.py autosign_automount: add hooks for multi-user support --- test/cmdtest_d/ct_automount.py | 71 +++++----------------------------- test/cmdtest_d/ct_autosign.py | 69 +++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 61 deletions(-) diff --git a/test/cmdtest_d/ct_automount.py b/test/cmdtest_d/ct_automount.py index e9e8127f..5b6525bf 100755 --- a/test/cmdtest_d/ct_automount.py +++ b/test/cmdtest_d/ct_automount.py @@ -86,52 +86,19 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtest): self.opts.append('--alice') - def _alice_txcreate(self, chg_addr, opts=[], exit_val=0, expect_str=None, data_arg=None, need_rbf=False): - - if need_rbf and not self.proto.cap('rbf'): - return 'skip' - - def do_return(): - if expect_str: - t.expect(expect_str) - t.read() - self.remove_device_online() - return t - - self.insert_device_online() - - sid = self._user_sid('alice') - t = self.spawn( - 'mmgen-txcreate', - opts - + ['--alice', '--autosign'] - + ([data_arg] if data_arg else []) - + [f'{self.burn_addr},1.23456', f'{sid}:{chg_addr}'], - exit_val = exit_val or None) - - if exit_val: - return do_return() - - t = self.txcreate_ui_common( - t, - inputs = '1', - interactive_fee = '32s', - file_desc = 'Unsigned automount transaction') - - return do_return() - def alice_txcreate1(self): - return self._alice_txcreate( + return self._user_txcreate( + 'alice', chg_addr = 'C:5', data_arg = 'data:'+gr_uc[:24]) def alice_txcreate2(self): - return self._alice_txcreate(chg_addr='L:5') + return self._user_txcreate('alice', chg_addr='L:5') alice_txcreate3 = alice_txcreate2 def alice_txcreate4(self): - return self._alice_txcreate(chg_addr='L:4', need_rbf=True) + return self._user_txcreate('alice', chg_addr='L:4', need_rbf=True) def _alice_txsend_abort(self, err=False, send_resp='y', expect=None, shred_expect=[]): self.insert_device_online() @@ -167,25 +134,25 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtest): alice_txsend_abort5 = alice_txsend_abort2 def alice_txcreate_bad_have_unsigned(self): - return self._alice_txcreate(chg_addr='C:5', exit_val=2, expect_str='already present') + return self._user_txcreate('alice', chg_addr='C:5', exit_val=2, expect_str='already present') def alice_txcreate_bad_have_unsent(self): - return self._alice_txcreate(chg_addr='C:5', exit_val=2, expect_str='unsent transaction') + return self._user_txcreate('alice', chg_addr='C:5', exit_val=2, expect_str='unsent transaction') def alice_run_autosign_setup(self): return self.run_setup(mn_type='default', use_dfl_wallet=True, passwd=rt_pw) def alice_txsend1(self): - return self._alice_txsend('This one’s worth a comment', no_wait=True) + return self._user_txsend('alice', 'This one’s worth a comment', no_wait=True) def alice_txsend2(self): - return self._alice_txsend(need_rbf=True) + return self._user_txsend('alice', need_rbf=True) def alice_txsend3(self): - return self._alice_txsend(need_rbf=True) + return self._user_txsend('alice', need_rbf=True) def alice_txsend5(self): - return self._alice_txsend(need_rbf=True) + return self._user_txsend('alice', need_rbf=True) def _alice_txstatus(self, expect, exit_val=None, need_rbf=False): @@ -218,24 +185,6 @@ class CmdTestAutosignAutomount(CmdTestAutosignThreaded, CmdTestRegtest): def alice_txstatus5(self): return self._alice_txstatus('in mempool', need_rbf=True) - def _alice_txsend(self, comment=None, no_wait=False, need_rbf=False): - - if need_rbf and not self.proto.cap('rbf'): - return 'skip' - - if not no_wait: - self._wait_signed('transaction') - - self.insert_device_online() - t = self.spawn('mmgen-txsend', ['--alice', '--quiet', '--autosign']) - t.view_tx('t') - t.do_comment(comment) - self._do_confirm_send(t, quiet=True) - t.written_to_file('Sent automount transaction') - t.read() - self.remove_device_online() - return t - def alice_txsend_bad_no_unsent(self): self.insert_device_online() t = self.spawn('mmgen-txsend', ['--quiet', '--autosign'], exit_val=2) diff --git a/test/cmdtest_d/ct_autosign.py b/test/cmdtest_d/ct_autosign.py index e2d13ccb..aa41d283 100755 --- a/test/cmdtest_d/ct_autosign.py +++ b/test/cmdtest_d/ct_autosign.py @@ -441,6 +441,75 @@ class CmdTestAutosignThreaded(CmdTestAutosignBase): no_insert_check = False threaded = True + def _user_txcreate( + self, + user, + progname = 'txcreate', + input_handler = None, + chg_addr = None, + opts = [], + output_args = [], + exit_val = 0, + expect_str = None, + data_arg = None, + need_rbf = False): + + if output_args: + assert not chg_addr + + if chg_addr: + assert not output_args + + if need_rbf and not self.proto.cap('rbf'): + return 'skip' + + def do_return(): + if expect_str: + t.expect(expect_str) + t.read() + self.remove_device_online() + return t + + self.insert_device_online() + + sid = self._user_sid(user) + t = self.spawn( + f'mmgen-{progname}', + opts + + [f'--{user}', '--autosign'] + + ([data_arg] if data_arg else []) + + (output_args or [f'{self.burn_addr},1.23456', f'{sid}:{chg_addr}']), + exit_val = exit_val or None) + + if exit_val: + return do_return() + + t = (input_handler or self.txcreate_ui_common)( + t, + inputs = '1', + interactive_fee = '32s', + file_desc = 'Unsigned automount transaction') + + return do_return() + + def _user_txsend(self, user, comment=None, no_wait=False, need_rbf=False): + + if need_rbf and not self.proto.cap('rbf'): + return 'skip' + + if not no_wait: + self._wait_signed('transaction') + + self.insert_device_online() + t = self.spawn('mmgen-txsend', [f'--{user}', '--quiet', '--autosign']) + t.view_tx('t') + t.do_comment(comment) + self._do_confirm_send(t, quiet=True) + t.written_to_file('Sent automount transaction') + t.read() + self.remove_device_online() + return t + def _wait_loop_start(self, add_opts=[]): t = self.spawn( 'mmgen-autosign',