run-all wait all processes before returning

This commit is contained in:
Quentin 2022-09-15 16:53:21 +02:00
parent 68cc7d635b
commit cfd3e500fe
Signed by: quentin
GPG key ID: E9602264D639FF68
3 changed files with 8 additions and 4 deletions

View file

@ -27,7 +27,7 @@ and setup your python environment.
```bash ```bash
sudo -i sudo -i
pip3 install --user . 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: Sometimes, it is required to add manually your local python lib folder to the environment:

8
mknet
View file

@ -315,6 +315,7 @@ def runall(cmd):
zones = parse(config).zones zones = parse(config).zones
number = 1 number = 1
wait_list = [ ]
for zone in zones.values(): for zone in zones.values():
if zone.is_zone(): if zone.is_zone():
for server in zone.servers.values(): for server in zone.servers.values():
@ -325,7 +326,7 @@ def runall(cmd):
env["ID"] = str(number) env["ID"] = str(number)
env["SERVER_COUNT"] = str(len(config['servers'])) env["SERVER_COUNT"] = str(len(config['servers']))
name = f'testnet-{zone.name}-{server.name}' name = f'testnet-{zone.name}-{server.name}'
net.ns.run(name, cmd, env) wait_list.append(net.ns.run(name, cmd, env))
number +=1 number +=1
else: else:
env = os.environ.copy() env = os.environ.copy()
@ -335,9 +336,12 @@ def runall(cmd):
env["ID"] = str(number) env["ID"] = str(number)
env["SERVER_COUNT"] = str(len(config['servers'])) env["SERVER_COUNT"] = str(len(config['servers']))
name = f'testnet-{zone.name}-{zone.name}' name = f'testnet-{zone.name}-{zone.name}'
net.ns.run(name, cmd, env) wait_list.append(net.ns.run(name, cmd, env))
first = False first = False
number +=1 number +=1
for p in wait_list:
p.wait()
print("runall done")
def destroy(): def destroy():
for ns in net.ns.list(): for ns in net.ns.list():

2
net.py
View file

@ -37,7 +37,7 @@ class ns:
run_netns("exec", name, "ip", "link", "set", "dev", "lo", "up") run_netns("exec", name, "ip", "link", "set", "dev", "lo", "up")
def run(name, cmd, env=None): 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=[]): def create_bridge(name, namespace, ports=[]):
run_netns("exec", namespace, "ip", "link", "add", "name", name, "type", "bridge") run_netns("exec", namespace, "ip", "link", "add", "name", name, "type", "bridge")