Browse Source

minor fixes and cleanups

The MMGen Project 3 years ago
parent
commit
8de120b667
4 changed files with 17 additions and 23 deletions
  1. 9 11
      mmgen/daemon.py
  2. 5 10
      mmgen/rpc.py
  3. 2 1
      test/test.py
  4. 1 1
      test/test_py_d/ts_ethdev.py

+ 9 - 11
mmgen/daemon.py

@@ -335,7 +335,9 @@ class CoinDaemon(Daemon):
 	avail_flags = ('keep_cfg_file',)
 	avail_opts = ('no_daemonize','online')
 	datadir_is_subdir = False
+	testnet_dir = None
 	data_subdir = ''
+	test_suite_port_shift = 1237
 
 	coins = {
 		'BTC': _cd('Bitcoin',           ['bitcoin_core']),
@@ -466,12 +468,12 @@ class CoinDaemon(Daemon):
 			self.coind_name,
 			getattr(self.proto.network_names,self.network),
 			'test suite ' if test_suite else '' )
-		self.subclass_init()
 
+		self.subclass_init()
 		self.lock()
 
 	def init_rpc_port(self,test_suite,port_shift):
-		self.port_shift = (1237 if test_suite else 0) + (port_shift or 0)
+		self.port_shift = (self.test_suite_port_shift if test_suite else 0) + (port_shift or 0)
 		self.rpc_port = getattr(self.rpc_ports,self.network) + self.port_shift
 
 		if g.rpc_port: # user-set global overrides everything else
@@ -627,10 +629,9 @@ class openethereum_daemon(CoinDaemon):
 		'linux': [g.home_dir,'.local','share','io.parity.ethereum'],
 		'win':   [os.getenv('LOCALAPPDATA'),'Parity','Ethereum']
 	}
-	testnet_dir = None
 
 	def subclass_init(self):
-		base_path = os.path.join(self.datadir,'chains',getattr(self.chain_subdirs,self.network))
+		base_path = os.path.join(self.datadir,self.id,getattr(self.chain_subdirs,self.network))
 		shutil.rmtree(base_path,ignore_errors=True)
 
 		ps = self.port_shift + getattr(self.ports_shift,self.network)
@@ -663,7 +664,6 @@ class erigon_daemon(CoinDaemon):
 	daemon_data = _dd('Erigon', 2021007005, '2021.07.5')
 	version_pat = r'erigon/(\d+)\.(\d+)\.(\d+)'
 	exec_fn = 'erigon'
-	cfg_file = 'erigon.conf'
 	private_ports = _nw(9090,9091,9092) # testnet and regtest are non-standard
 	ports_shift = _nw(200,210,220)
 	rpc_ports = _nw(*[8545 + n for n in ports_shift]) # non-standard
@@ -673,17 +673,15 @@ class erigon_daemon(CoinDaemon):
 		'linux': [g.home_dir,'.local','share','erigon'],
 		'win':   [os.getenv('LOCALAPPDATA'),'Erigon'] # FIXME
 	}
-	datadir_is_subdir = True
-	testnet_dir = 'erigon_testnet'
 
 	def subclass_init(self):
 		self.private_port = getattr(self.private_ports,self.network)
-		if self.network == 'regtest':
-			self.datadir = None
+		self.datadir = os.path.join(self.datadir,self.id,getattr(self.proto.network_names,self.network))
 		self.coind_args = list_gen(
 			['--verbosity=0'],
+			['--maxpeers=0', not 'online' in self.opts],
 			[f'--private.api.addr=127.0.0.1:{self.private_port}'],
-			[f'--datadir={self.datadir}', self.network!='regtest'],
+			[f'--datadir={self.datadir}'],
 			['--chain=dev', self.network=='regtest'],
 			['--chain=goerli', self.network=='testnet'],
 			['--miner.etherbase=00a329c0648769a73afac7f9381e08fb43dbea72', self.network=='regtest'],
@@ -732,7 +730,7 @@ class erigon_rpcdaemon(RPCDaemon):
 			['--verbosity=0'],
 			[f'--private.api.addr=127.0.0.1:{private_port}'],
 			[f'--datadir={self.datadir}', self.network != 'regtest'],
-			['--http.api=eth,erigon,web3,net,txpool'],
+			['--http.api=eth,web3,txpool'],
 			[f'--http.port={self.rpc_port}'],
 		)
 

+ 5 - 10
mmgen/rpc.py

@@ -727,21 +727,16 @@ def handle_unsupported_daemon_version(rpc,proto,ignore_daemon_version,unsupporte
 			ymsg(f'WARNING: ignoring unsupported {rpc.daemon.coind_name} daemon version at user request')
 			unsupported_daemon_warning_shown.append(type(proto))
 	else:
-		rdie(1,fmt(
-			"""
-			The running {} daemon has version {}.
-			This version of MMGen is tested only on {} v{} and below.
+		name = rpc.daemon.coind_name
+		rdie(1,'\n'+fmt(f"""
+			The running {name} daemon has version {rpc.daemon_version_str}.
+			This version of MMGen is tested only on {name} v{rpc.daemon.coind_version_str} and below.
 
 			To avoid this error, downgrade your daemon to a supported version.
 
 			Alternatively, you may invoke the command with the --ignore-daemon-version
 			option, in which case you proceed at your own risk.
-			""".format(
-					rpc.daemon.coind_name,
-					rpc.daemon_version_str,
-					rpc.daemon.coind_name,
-					rpc.daemon.coind_version_str,
-					),indent='    ').rstrip())
+			""",indent='    '))
 
 async def rpc_init(proto,backend=None,daemon=None,ignore_daemon_version=False):
 

+ 2 - 1
test/test.py

@@ -167,7 +167,7 @@ def add_cmdline_opts():
 
 # add_cmdline_opts()
 
-opts.UserOpts._reset_ok += ('skip_deps',)
+opts.UserOpts._reset_ok += ('skip_deps','no_daemon_autostart')
 
 # step 2: opts.init will create new data_dir in ./test (if not 'resume' or 'skip_deps'):
 usr_args = opts.init(opts_data)
@@ -194,6 +194,7 @@ if opt.exact_output:
 
 if opt.resume or opt.resume_after:
 	opt.skip_deps = True
+	opt.no_daemon_autostart = True
 	resume = opt.resume or opt.resume_after
 else:
 	resume = False

+ 1 - 1
test/test_py_d/ts_ethdev.py

@@ -28,6 +28,7 @@ from mmgen.globalvars import g
 from mmgen.opts import opt
 from mmgen.util import die
 from mmgen.exception import *
+from mmgen.obj import ETHAmt
 from ..include.common import *
 from .common import *
 
@@ -689,7 +690,6 @@ class TestSuiteEthdev(TestSuiteBase,TestSuiteShared):
 				imsg_r( '\n' + await tk.info() )
 				imsg('dev token balance (pre-send): {}'.format(await tk.get_balance(dfl_addr)))
 				imsg('Sending {} {} to address {} ({})'.format(amt,self.proto.dcoin,usr_addrs[i],usr_mmaddrs[i]))
-				from mmgen.obj import ETHAmt
 				txid = await tk.transfer(
 					dfl_addr,
 					usr_addrs[i],