Skip to content

Commit a062515

Browse files
Erigara6r1d
authored andcommitted
[fix]: Don't fail if dir exists in test_env.py
Signed-off-by: Shanin Roman <shanin1000@yandex.ru>
1 parent 8c4c94f commit a062515

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

scripts/test_env.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

178180
def 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

Comments
 (0)