From cfd3e500feb59ba3c1bd1247dac3b4537c8592ba Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Thu, 15 Sep 2022 16:53:21 +0200 Subject: run-all wait all processes before returning --- README.md | 2 +- mknet | 8 ++++++-- net.py | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 25378da..b04a961 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ and setup your python environment. ```bash sudo -i pip3 install --user . -( cd scenarios && pip3 install -r requirements.txt ) +( cd scenarios && pip3 install --user -r requirements.txt ) ``` Sometimes, it is required to add manually your local python lib folder to the environment: diff --git a/mknet b/mknet index 34608a3..5c09a18 100755 --- a/mknet +++ b/mknet @@ -315,6 +315,7 @@ def runall(cmd): zones = parse(config).zones number = 1 + wait_list = [ ] for zone in zones.values(): if zone.is_zone(): for server in zone.servers.values(): @@ -325,7 +326,7 @@ def runall(cmd): env["ID"] = str(number) env["SERVER_COUNT"] = str(len(config['servers'])) name = f'testnet-{zone.name}-{server.name}' - net.ns.run(name, cmd, env) + wait_list.append(net.ns.run(name, cmd, env)) number +=1 else: env = os.environ.copy() @@ -335,9 +336,12 @@ def runall(cmd): env["ID"] = str(number) env["SERVER_COUNT"] = str(len(config['servers'])) name = f'testnet-{zone.name}-{zone.name}' - net.ns.run(name, cmd, env) + wait_list.append(net.ns.run(name, cmd, env)) first = False number +=1 + for p in wait_list: + p.wait() + print("runall done") def destroy(): for ns in net.ns.list(): diff --git a/net.py b/net.py index 8e8725b..f78f7a6 100644 --- a/net.py +++ b/net.py @@ -37,7 +37,7 @@ class ns: run_netns("exec", name, "ip", "link", "set", "dev", "lo", "up") def run(name, cmd, env=None): - subprocess.Popen(_netns + ["exec", name] + cmd, env=env) + return subprocess.Popen(_netns + ["exec", name] + cmd, env=env) def create_bridge(name, namespace, ports=[]): run_netns("exec", namespace, "ip", "link", "add", "name", name, "type", "bridge") -- cgit v1.2.3