diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2020-04-23 11:33:34 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2020-04-23 11:33:34 +0200 |
| commit | deac53607db2b2f16dc987f7f002f1095862a582 (patch) | |
| tree | 65a7ab7c79a711dbea57a8e3a5439a8ad3fa2fc8 | |
| parent | 8c53567d91194f444b1c22cd0467c49f63baac84 (diff) | |
| download | allocbench-deac53607db2b2f16dc987f7f002f1095862a582.tar.gz allocbench-deac53607db2b2f16dc987f7f002f1095862a582.zip | |
fix shutdown for already terminated servers and save their returncode
| -rw-r--r-- | src/benchmark.py | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/src/benchmark.py b/src/benchmark.py index 3b6feb1..2fb2606 100644 --- a/src/benchmark.py +++ b/src/benchmark.py @@ -363,7 +363,7 @@ class Benchmark: # Register termination of the server atexit.register(Benchmark.shutdown_server, self=self, server=server) - self.results["servers"].setdefault(alloc_name, {s["name"]: {"stdout": [], "stderr": []} for s in self.servers}) + self.results["servers"].setdefault(alloc_name, {s["name"]: {"stdout": [], "stderr": [], "returncode": []} for s in self.servers}) if not "prepare_cmds" in server: continue @@ -382,31 +382,33 @@ class Benchmark: def shutdown_server(self, server): """Terminate a started server running its shutdown_cmds in advance""" - if server["popen"].poll() != None: - return + if server["popen"].poll() == None: + server_name = server.get("name", "Server") + print_info(f"Shutting down {server_name}") - server_name = server.get("name", "Server") - print_info(f"Shutting down {server_name}") + substitutions = {} + substitutions.update(self.__dict__) + substitutions.update(server) - substitutions = {} - substitutions.update(self.__dict__) - substitutions.update(server) + if "shutdown_cmds" in server: + for shutdown_cmd in server["shutdown_cmds"]: + shutdown_cmd = shutdown_cmd.format(**substitutions) + print_debug(shutdown_cmd) - if "shutdown_cmds" in server: - for shutdown_cmd in server["shutdown_cmds"]: - shutdown_cmd = shutdown_cmd.format(**substitutions) - print_debug(shutdown_cmd) + proc = subprocess.run(shutdown_cmd.split(), universal_newlines=True, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) - proc = subprocess.run(shutdown_cmd.split(), universal_newlines=True, - stdout=subprocess.PIPE, stderr=subprocess.PIPE) + print_debug("Stdout:", proc.stdout) + print_debug("Stderr:", proc.stderr) - print_debug("Stdout:", proc.stdout) - print_debug("Stderr:", proc.stderr) + # wait for server termination + sleep(5) - # wait for server termination - sleep(5) + outs, errs = Benchmark.terminate_subprocess(server["popen"]) + else: + outs = server["popen"].stdout.read() + errs = server["popen"].stderr.read() - outs, errs = Benchmark.terminate_subprocess(server["popen"]) server["stdout"] = outs server["stderr"] = errs @@ -566,8 +568,10 @@ class Benchmark: self.shutdown_servers() for server in self.servers: - self.results["servers"][alloc_name][server['name']]["stdout"].append(server["stdout"]) - self.results["servers"][alloc_name][server['name']]["stderr"].append(server["stderr"]) + server_result = self.results["servers"][alloc_name][server['name']] + server_result["stdout"].append(server["stdout"]) + server_result["stderr"].append(server["stderr"]) + server_result["returncode"].append(server["popen"].returncode) if hasattr(self, "postallocator_hook"): self.postallocator_hook((alloc_name, alloc), run) |
