unit_tests.py daemon: rewrite test using {start,stop}-coin-daemons.py

This commit is contained in:
The MMGen Project 2022-06-13 17:30:22 +00:00
commit 2877e83821
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
2 changed files with 21 additions and 66 deletions

View file

@ -16,6 +16,7 @@ opts_data = {
-D, --debug Produce debugging output (implies --verbose)
-d, --datadir= Override the default datadir
-i, --daemon-ids Print all known daemon IDs
-m, --mainnet-only Perform operations for mainnet daemons only
-n, --no-daemonize Don't fork daemon to background
-p, --port-shift= Shift the RPC port by this number
-s, --get-state Get the state of the daemon(s) and exit
@ -41,6 +42,7 @@ cmd_args = opts.init(opts_data)
from mmgen.daemon import *
def run(network_id=None,proto=None,daemon_id=None):
d = CoinDaemon(
network_id = network_id,
proto = proto,
@ -49,6 +51,10 @@ def run(network_id=None,proto=None,daemon_id=None):
port_shift = int(opt.port_shift or 0),
datadir = opt.datadir,
daemon_id = daemon_id )
if opt.mainnet_only and d.network != 'mainnet':
return
d.debug = d.debug or opt.debug
d.wait = not opt.no_wait

View file

@ -51,45 +51,14 @@ def test_flags_err(ut,d):
('flag (4)', 'ClassFlagsError', 'already set', bad7 ),
))
arm_skip_daemons = ('openethereum','parity')
def test_cmds(op):
network_ids = CoinDaemon.get_network_ids()
import mmgen.daemon as daemon_mod
for test_suite in [True,False] if op == 'print' else [True]:
vmsg(orange(f'Start commands (op={op}, test_suite={test_suite}):'))
for coin,data in CoinDaemon.coins.items():
for daemon_id in data.daemon_ids:
if daemon_id in arm_skip_daemons:
continue
for network in data.networks:
if opt.no_altcoin_deps and coin != 'BTC':
continue
d = CoinDaemon(
proto=init_proto(coin=coin,network=network),
daemon_id = daemon_id,
test_suite = test_suite )
if op == 'print':
for cmd in d.start_cmds:
vmsg(' '.join(cmd))
elif op == 'check':
try:
cp = run([d.exec_fn,'--help'],stdout=PIPE,stderr=PIPE)
except:
die(2,f'Unable to execute {d.exec_fn}')
if cp.returncode:
die(2,f'Unable to execute {d.exec_fn}')
else:
vmsg('{:16} {}'.format(
d.exec_fn+':',
cp.stdout.decode().splitlines()[0] ))
else:
if opt.quiet:
msg_r('.')
if op == 'stop' and hasattr(d,'rpc'):
run_session(d.rpc.stop_daemon(quiet=opt.quiet))
else:
getattr(d,op)(silent=opt.quiet)
def test_cmd(args_in,message):
qmsg_r(message)
args = [f'test/{args_in[0]}-coin-daemons.py'] + list(args_in[1:])
vmsg('\n' + orange(f"Running '{' '.join(args)}':"))
pipe = None if opt.verbose else PIPE
cp = run( args, stdout=pipe, stderr=pipe, check=True )
qmsg('OK')
return True
class unit_tests:
@ -109,37 +78,17 @@ class unit_tests:
return True
def cmds(self,name,ut):
qmsg_r('Testing start commands for coin daemons...')
vmsg('')
test_cmds('print')
qmsg('OK')
return True
def exec(self,name,ut):
qmsg_r('Testing availability of coin daemons...')
vmsg('')
test_cmds('check')
qmsg('OK')
return True
return test_cmd(['start','-Vm','all'], 'Testing availability of coin daemons...')
def cmds(self,name,ut):
return test_cmd(['start','-t','all'], 'Testing start commands for coin daemons...')
def start(self,name,ut):
msg_r('Starting coin daemons...')
qmsg('')
test_cmds('start')
msg('OK')
return True
return test_cmd(['start','all'], 'Starting coin daemons...')
def status(self,name,ut):
msg_r('Checking status of coin daemons...')
qmsg('')
test_cmds('start')
msg('OK')
return True
return test_cmd(['start','all'], 'Checking status of coin daemons...')
def stop(self,name,ut):
msg_r('Stopping coin daemons...')
qmsg('')
test_cmds('stop')
msg('OK')
return True
return test_cmd(['stop','all'], 'Stopping coin daemons...')