CmdTestBase: new extra_daemons attribute

This commit is contained in:
The MMGen Project 2025-12-01 16:54:35 +00:00
commit 78bd55b3bb
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
4 changed files with 18 additions and 11 deletions

View file

@ -181,12 +181,12 @@ class CmdTestAutosignBase(CmdTestBase):
def start_daemons(self):
self.spawn(msg_only=True)
start_test_daemons(*self.network_ids)
start_test_daemons(*(self.network_ids + self.extra_daemons))
return 'ok'
def stop_daemons(self):
self.spawn(msg_only=True)
stop_test_daemons(*self.network_ids, remove_datadir=True)
stop_test_daemons(*(self.network_ids + self.extra_daemons), remove_datadir=True)
return 'ok'
def run_setup(

View file

@ -41,6 +41,7 @@ class CmdTestBase:
skip_cmds = ()
test_name = None
is_helper = False
extra_daemons = []
def __init__(self, cfg, trunner, cfgs, spawn):
if hasattr(self, 'name'): # init may called multiple times

View file

@ -39,6 +39,8 @@ from ..include.common import (
read_from_file,
silence,
end_silence,
start_test_daemons,
stop_test_daemons,
strip_ansi_escapes
)
from .include.common import get_file_with_ext
@ -49,6 +51,8 @@ from .base import CmdTestBase
def stop_daemons(self):
for v in self.users.values():
v.md.stop()
if self.extra_daemons:
stop_test_daemons(*self.extra_daemons, remove_datadir=True, verbose=True)
def stop_miner_wallet_daemon(self):
asyncio.run(self.users['miner'].wd_rpc.stop_daemon())
@ -843,6 +847,8 @@ class CmdTestXMRWallet(CmdTestBase):
for v in self.users.values():
run(['mkdir', '-p', v.daemon_datadir])
v.md.start()
if self.extra_daemons:
start_test_daemons(*self.extra_daemons, verbose=True)
def stop_daemons(self):
self.spawn(msg_only=True)

View file

@ -288,23 +288,23 @@ def end_msg(t):
('' if cfg.test_suite_deterministic else f', elapsed time: {t//60:02d}:{t%60:02d}')
))
def start_test_daemons(*network_ids, remove_datadir=False):
def start_test_daemons(*network_ids, remove_datadir=False, verbose=False):
if not cfg.no_daemon_autostart:
return test_daemons_ops(*network_ids, op='start', remove_datadir=remove_datadir)
return test_daemons_ops(*network_ids, op='start', remove_datadir=remove_datadir, verbose=verbose)
def stop_test_daemons(*network_ids, force=False, remove_datadir=False):
def stop_test_daemons(*network_ids, force=False, remove_datadir=False, verbose=False):
if force or not cfg.no_daemon_stop:
return test_daemons_ops(*network_ids, op='stop', remove_datadir=remove_datadir)
return test_daemons_ops(*network_ids, op='stop', remove_datadir=remove_datadir, verbose=verbose)
def restart_test_daemons(*network_ids, remove_datadir=False):
if not stop_test_daemons(*network_ids, remove_datadir=remove_datadir):
def restart_test_daemons(*network_ids, remove_datadir=False, verbose=False):
if not stop_test_daemons(*network_ids, remove_datadir=remove_datadir, verbose=verbose):
return False
return start_test_daemons(*network_ids, remove_datadir=remove_datadir)
return start_test_daemons(*network_ids, remove_datadir=remove_datadir, verbose=verbose)
def test_daemons_ops(*network_ids, op, remove_datadir=False):
def test_daemons_ops(*network_ids, op, remove_datadir=False, verbose=False):
if not cfg.no_daemon_autostart:
from mmgen.daemon import CoinDaemon
silent = not (cfg.verbose or cfg.exact_output)
silent = not (verbose or cfg.verbose or cfg.exact_output)
ret = False
for network_id in network_ids:
d = CoinDaemon(cfg, network_id=network_id, test_suite=True)