Browse Source

start-coin-daemons.py: support multiple daemons per coin

The MMGen Project 3 years ago
parent
commit
86193229b6
1 changed files with 26 additions and 20 deletions
  1. 26 20
      test/start-coin-daemons.py

+ 26 - 20
test/start-coin-daemons.py

@@ -3,7 +3,7 @@
 import sys
 from include.tests_header import repo_root
 from mmgen.common import *
-from mmgen.daemon import CoinDaemon
+from mmgen.daemon import *
 
 network_ids = CoinDaemon.get_network_ids()
 
@@ -38,29 +38,15 @@ Valid network IDs: {nid}, all, or no_xmr
 
 cmd_args = opts.init(opts_data)
 
-if 'all' in cmd_args or 'no_xmr' in cmd_args:
-	if len(cmd_args) != 1:
-		die(1,"'all' or 'no_xmr' must be the sole argument")
-	else:
-		ids = list(network_ids)
-		if cmd_args[0] == 'no_xmr':
-			ids.remove('xmr')
-else:
-	ids = cmd_args
-	if not ids:
-		opts.usage()
-	for i in ids:
-		if i not in network_ids:
-			die(1,f'{i!r}: invalid network ID')
-
-for network_id in ids:
-	network_id = network_id.lower()
+def run(network_id=None,proto=None,daemon_id=None):
 	d = CoinDaemon(
-		network_id,
+		network_id = network_id,
+		proto      = proto,
 		test_suite = True,
 		opts       = ['no_daemonize'] if opt.no_daemonize else None,
 		port_shift = int(opt.port_shift or 0),
-		datadir    = opt.datadir )
+		datadir    = opt.datadir,
+		daemon_id  = daemon_id )
 	d.debug = d.debug or opt.debug
 	d.wait = not opt.no_wait
 	if opt.get_state:
@@ -69,3 +55,23 @@ for network_id in ids:
 		print(' '.join(getattr(d,action+'_cmd')))
 	else:
 		d.cmd(action)
+
+if 'all' in cmd_args or 'no_xmr' in cmd_args:
+	if len(cmd_args) != 1:
+		die(1,"'all' or 'no_xmr' must be the sole argument")
+	from mmgen.protocol import init_proto
+	for coin,data in CoinDaemon.coins.items():
+		if coin == 'XMR' and cmd_args[0] == 'no_xmr':
+			continue
+		for daemon_id in data.daemon_ids:
+			for network in globals()[daemon_id+'_daemon'].networks:
+				run(proto=init_proto(coin=coin,network=network),daemon_id=daemon_id)
+else:
+	ids = cmd_args
+	if not ids:
+		opts.usage()
+	for i in ids:
+		if i not in network_ids:
+			die(1,f'{i!r}: invalid network ID')
+	for network_id in ids:
+		run(network_id=network_id.lower())