XMR: support regtest for cmdtest.py
This commit is contained in:
parent
648664ed9f
commit
153a815b5b
7 changed files with 29 additions and 25 deletions
|
|
@ -493,8 +493,7 @@ class Config(Lockable):
|
|||
self.coin = self.coin.upper()
|
||||
self.token = self.token.upper() if self.token else None
|
||||
if self.test_user or self.regtest:
|
||||
if self.coin != 'XMR':
|
||||
self.network = 'regtest'
|
||||
self.network = 'regtest'
|
||||
if not self.test_suite: # could be set in environment
|
||||
self._use_cfg_file = False
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -281,6 +281,7 @@ class CoinDaemon(Daemon):
|
|||
testnet_dir = 'testnet'
|
||||
rpc_user = None
|
||||
rpc_password = None
|
||||
disable_regtest_p2p = True
|
||||
|
||||
_cd = namedtuple('coins_data', ['daemon_ids'])
|
||||
coins = {
|
||||
|
|
@ -429,7 +430,8 @@ class CoinDaemon(Daemon):
|
|||
(self.dfl_rpc_port + self.port_shift))
|
||||
|
||||
self.p2p_port = (
|
||||
None if self.dfl_p2p_port is None or self.network == 'regtest' else
|
||||
None if self.dfl_p2p_port is None
|
||||
or (self.network == 'regtest' and self.disable_regtest_p2p) else
|
||||
(self.dfl_p2p_port + self.port_shift))
|
||||
|
||||
fn_stem = f'{self.id}-{self.network}-daemon-{self.bind_port}'
|
||||
|
|
|
|||
|
|
@ -18,17 +18,18 @@ from ...daemon import CoinDaemon, RPCDaemon, _nw, _dd
|
|||
|
||||
class monero_daemon(CoinDaemon):
|
||||
daemon_data = _dd('Monero', 18005001, '0.18.5.1-release')
|
||||
networks = ('mainnet', 'testnet')
|
||||
networks = ('mainnet', 'testnet', 'regtest')
|
||||
exec_fn = 'monerod'
|
||||
testnet_dir = 'stagenet'
|
||||
new_console_mswin = True
|
||||
rpc_ports = _nw(18081, 38081, None) # testnet is stagenet
|
||||
rpc_ports = _nw(18081, 28081, 38081) # testnet is stagenet
|
||||
cfg_file = 'bitmonero.conf'
|
||||
datadirs = {
|
||||
'linux': [gc.home_dir, '.bitmonero'],
|
||||
'darwin': [gc.home_dir, '.bitmonero'],
|
||||
'win32': ['/', 'c', 'ProgramData', 'bitmonero']}
|
||||
use_pidfile = gc.platform == 'linux'
|
||||
disable_regtest_p2p = False
|
||||
|
||||
@property
|
||||
def dfl_p2p_port(self):
|
||||
|
|
@ -51,7 +52,8 @@ class monero_daemon(CoinDaemon):
|
|||
['--no-zmq'],
|
||||
[f'--p2p-bind-port={self.p2p_port}', self.p2p_port],
|
||||
[f'--rpc-bind-port={self.rpc_port}'],
|
||||
['--stagenet', self.network == 'testnet'])
|
||||
['--stagenet', self.network == 'testnet'],
|
||||
['--p2p-bind-ip=127.0.0.1', '--fixed-difficulty=1', '--regtest', self.network == 'regtest'])
|
||||
|
||||
self.coind_args = list_gen(
|
||||
['--hide-my-port'],
|
||||
|
|
@ -77,8 +79,8 @@ class MoneroWalletDaemon(RPCDaemon):
|
|||
exec_fn = 'monero-wallet-rpc'
|
||||
coin = 'XMR'
|
||||
new_console_mswin = True
|
||||
networks = ('mainnet', 'testnet')
|
||||
rpc_ports = _nw(13131, 13141, None) # testnet is non-standard
|
||||
networks = ('mainnet', 'testnet', 'regtest')
|
||||
rpc_ports = _nw(13131, 13141, 13151) # testnet is non-standard
|
||||
use_pidfile = gc.platform == 'linux'
|
||||
_reset_ok = ('debug', 'wait', 'pids', 'force_kill')
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ class MoneroViewKey(HexStr):
|
|||
class mainnet(CoinProtocol.RPC, CoinProtocol.DummyWIF, CoinProtocol.Base):
|
||||
|
||||
mod_clsname = 'Monero'
|
||||
network_names = _nw('mainnet', 'stagenet', None)
|
||||
network_names = _nw('mainnet', 'stagenet', 'regtest')
|
||||
base_proto = 'Monero'
|
||||
base_proto_coin = 'XMR'
|
||||
base_coin = 'XMR'
|
||||
|
|
@ -89,3 +89,6 @@ class mainnet(CoinProtocol.RPC, CoinProtocol.DummyWIF, CoinProtocol.Base):
|
|||
class testnet(mainnet): # use stagenet for testnet
|
||||
# testnet is {'35', '3f', '36'}
|
||||
addr_ver_info = {'18': 'monero', '24': 'monero_sub', '19': 'monero_integrated'}
|
||||
|
||||
class regtest(mainnet):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -616,7 +616,7 @@ class CmdTestAutosignThreaded(CmdTestAutosignBase):
|
|||
(opts or self.opts)
|
||||
+ add_opts
|
||||
# ensure that changes to online cfg file don’t affect autosign:
|
||||
+ [f'--data-dir={autosign_data_dir}']
|
||||
+ [f'--data-dir={autosign_data_dir}', '--regtest=1']
|
||||
+ ['--full-summary', 'wait'],
|
||||
direct_exec = True,
|
||||
no_passthru_opts = True,
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ class CmdTestXMRAutosign(CmdTestXMRWallet, CmdTestAutosignThreaded):
|
|||
self.burn_addr = make_burn_addr(cfg)
|
||||
|
||||
self.autosign_opts = ['--autosign'] # mmgen-xmrwallet opts
|
||||
self.autosign_setup_opts = [f'--xmrwallets={self.users[self.user].kal_range}']
|
||||
self.autosign_setup_opts = ['--regtest=1', f'--xmrwallets={self.users[self.user].kal_range}']
|
||||
|
||||
def create_tmp_wallets(self):
|
||||
self.spawn(msg_only=True)
|
||||
|
|
@ -511,7 +511,7 @@ class CmdTestXMRCompat(CmdTestXMRAutosign):
|
|||
"""
|
||||
menu_prompt = 'efresh balances:\b'
|
||||
listaddresses_menu_prompt = 'efresh bals:\b'
|
||||
extra_daemons = ['ltc']
|
||||
extra_daemons = ['ltc_rt']
|
||||
|
||||
cmd_group = (
|
||||
('autosign_setup', 'autosign setup with user’s seed'),
|
||||
|
|
@ -592,10 +592,11 @@ class CmdTestXMRCompat(CmdTestXMRAutosign):
|
|||
data = self.users[self.user]
|
||||
self.user_dump_file = os.path.join(
|
||||
data.wd.wallet_dir,
|
||||
f'{data.sid}-2-MoneroWatchOnlyWallet.dump')
|
||||
f'{data.sid}-2-MoneroWatchOnlyWallet.regtest.dump')
|
||||
self.user_daemon_opts = [
|
||||
f'--monero-daemon=localhost:{data.md.rpc_port}',
|
||||
'--monero-wallet-rpc-password=abc']
|
||||
'--monero-wallet-rpc-password=abc',
|
||||
'--regtest=1']
|
||||
self.user_opts = [f'--{self.user}', '--coin=xmr'] + self.user_daemon_opts
|
||||
|
||||
def addrimport_user(self):
|
||||
|
|
|
|||
|
|
@ -120,8 +120,8 @@ class CmdTestXMRWallet(CmdTestBase):
|
|||
return
|
||||
|
||||
from mmgen.protocol import init_proto
|
||||
self.proto = init_proto(cfg, 'XMR', network='mainnet')
|
||||
self.extra_opts = ['--wallet-rpc-password=abc']
|
||||
self.proto = init_proto(cfg, 'XMR', network='regtest')
|
||||
self.extra_opts = ['--regtest=1', '--wallet-rpc-password=abc']
|
||||
self.init_users()
|
||||
self.init_daemon_args()
|
||||
|
||||
|
|
@ -217,6 +217,7 @@ class CmdTestXMRWallet(CmdTestBase):
|
|||
daemon = wd,
|
||||
test_connection = False)
|
||||
|
||||
network_suf = '.regtest'
|
||||
kafile_suf, fn_stem = (
|
||||
('.vkeys', 'MoneroWatchOnlyWallet') if autosign else
|
||||
('.akeys', 'MoneroWallet'))
|
||||
|
|
@ -229,9 +230,9 @@ class CmdTestXMRWallet(CmdTestBase):
|
|||
udir = udir,
|
||||
twdir = wd.wallet_dir,
|
||||
kal_range = kal_range,
|
||||
kafile = str(udir / f'{sid}-XMR-M[{kal_range}]{kafile_suf}'),
|
||||
walletfile_fs = str(wd.wallet_dir / f'{sid}-{{}}-{fn_stem}'),
|
||||
addrfile_fs = str(wd.wallet_dir / f'{sid}-{{}}-{fn_stem}.address.txt'),
|
||||
kafile = str(udir / f'{sid}-XMR-M[{kal_range}]{network_suf}{kafile_suf}'),
|
||||
walletfile_fs = str(wd.wallet_dir / f'{sid}-{{}}-{fn_stem}{network_suf}'),
|
||||
addrfile_fs = str(wd.wallet_dir / f'{sid}-{{}}-{fn_stem}{network_suf}.address.txt'),
|
||||
md = md,
|
||||
md_rpc = md_rpc,
|
||||
wd = wd,
|
||||
|
|
@ -239,14 +240,10 @@ class CmdTestXMRWallet(CmdTestBase):
|
|||
add_coind_args = add_coind_args)
|
||||
|
||||
def init_daemon_args(self):
|
||||
common_args = ['--p2p-bind-ip=127.0.0.1', '--fixed-difficulty=1', '--regtest'] # --rpc-ssl-allow-any-cert
|
||||
for u in self.users:
|
||||
other_ports = [self.users[u2].md.p2p_port for u2 in self.users if u2 != u]
|
||||
node_args = [f'--add-exclusive-node=127.0.0.1:{p}' for p in other_ports if p]
|
||||
self.users[u].md.usr_coind_args = (
|
||||
common_args
|
||||
+ node_args
|
||||
+ self.users[u].add_coind_args)
|
||||
self.users[u].md.usr_coind_args = node_args + self.users[u].add_coind_args
|
||||
|
||||
# cmd_group methods
|
||||
|
||||
|
|
@ -264,7 +261,7 @@ class CmdTestXMRWallet(CmdTestBase):
|
|||
run(['mkdir', '-p', str(data.udir)])
|
||||
t = self.spawn(
|
||||
'mmgen-keygen',
|
||||
['--quiet', '--accept-defaults', '--coin=xmr', f'--outdir={data.udir}']
|
||||
['--quiet', '--accept-defaults', '--coin=xmr', '--regtest=1', f'--outdir={data.udir}']
|
||||
+ add_opts
|
||||
+ [data.mmwords, data.kal_range],
|
||||
extra_desc = f'({capfirst(user)})')
|
||||
|
|
|
|||
Loading…
Reference in a new issue