@@ -26,7 +26,7 @@ class Network:
2626 def __init__ (self , args : argparse .Namespace ):
2727 logging .info ("Setting up test environment..." )
2828 peers_dir = args .out_dir .joinpath ("peers" )
29- os .mkdir (peers_dir )
29+ os .makedirs (peers_dir , exist_ok = True )
3030 try :
3131 shutil .copy2 (f"{ args .root_dir } /configs/peer/config.json" , peers_dir )
3232 shutil .copy2 (f"{ args .root_dir } /configs/peer/genesis.json" , peers_dir )
@@ -57,7 +57,7 @@ def wait_for_genesis(self, n_tries: int):
5757 try :
5858 with urllib .request .urlopen (f"http://{ self .peers [0 ].host_ip } :{ self .peers [0 ].telemetry_port } /status/blocks" ) as response :
5959 block_count = int (response .read ())
60- if block_count == 1 :
60+ if block_count > 1 :
6161 logging .info (f"Genesis block created. Block count: { block_count } " )
6262 return
6363 else :
@@ -93,8 +93,10 @@ def __init__(self, args: argparse.Namespace, nth: int):
9393
9494 logging .info (f"Peer { self .name } generating key pair..." )
9595
96- kagami = subprocess .run ([f"{ self .out_dir } /kagami" ,"crypto" , "-j" ],
97- capture_output = True )
96+ command = [f"{ self .out_dir } /kagami" , "crypto" , "-j" ]
97+ if args .peer_name_as_seed :
98+ command .extend (["-s" , self .name ])
99+ kagami = subprocess .run (command , capture_output = True )
98100 if kagami .returncode :
99101 logging .error ("Kagami failed to generate a key pair." )
100102 sys .exit (3 )
@@ -109,8 +111,8 @@ def __init__(self, args: argparse.Namespace, nth: int):
109111 def run (self , is_genesis : bool = False ):
110112 logging .info (f"Running peer { self .name } ..." )
111113 peer_dir = self .out_dir .joinpath (f"peers/{ self .name } " )
112- os .mkdir (peer_dir )
113- os .mkdir (peer_dir .joinpath ("storage" ))
114+ os .makedirs (peer_dir , exist_ok = True )
115+ os .makedirs (peer_dir .joinpath ("storage" ), exist_ok = True )
114116
115117 os .environ ["KURA_BLOCK_STORE_PATH" ] = str (peer_dir .joinpath ("storage" ))
116118 os .environ ["SNAPSHOT_DIR_PATH" ] = str (peer_dir .joinpath ("storage" ))
@@ -177,11 +179,7 @@ def main(args):
177179
178180def setup (args ):
179181 logging .info (f"Starting iroha network with { args .n_peers } peers..." )
180- try :
181- os .mkdir (args .out_dir )
182- except FileExistsError :
183- logging .error (f"Test directory `{ args .out_dir } ` already exists" )
184- sys .exit (5 )
182+ os .makedirs (args .out_dir , exist_ok = True )
185183 copy_or_prompt_build_bin ("iroha_client_cli" , args .root_dir , args .out_dir )
186184 with open (os .path .join (args .out_dir , "metadata.json" ), "w" ) as f :
187185 f .write ('{"comment":{"String": "Hello Meta!"}}' )
@@ -227,6 +225,9 @@ def cleanup(args):
227225 help = "Directory containing Iroha project root. \
228226 Defaults to `.`, i.e. the directory script is being run from. \
229227 This is used to locate the `iroha` binary and config files" )
228+ parser .add_argument ("--peer-name-as-seed" , action = "store_true" ,
229+ help = "Use peer name as seed for key generation. \
230+ This option could be useful to preserve the same peer keys between script invocations" )
230231
231232 parser .add_argument ("--verbose" , "-v" , action = "store_true" ,
232233 help = "Enable verbose output" )
0 commit comments