From b556094726ebb67aa3975ce83a40cb8cb446b420 Mon Sep 17 00:00:00 2001 From: Michael Eischer <eischer@cs.fau.de> Date: Tue, 20 Apr 2021 15:39:17 +0200 Subject: [PATCH] format ping times as required --- scripts/analysis/parser/ping.py | 5 +++-- scripts/analysis/transformer/output_ping.py | 5 +++++ scripts/test/measure_server_pings.py | 12 ++++++------ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/scripts/analysis/parser/ping.py b/scripts/analysis/parser/ping.py index 157e3a6..f7429ef 100644 --- a/scripts/analysis/parser/ping.py +++ b/scripts/analysis/parser/ping.py @@ -23,14 +23,15 @@ class PingLogParser(Parser): if parts[0] == "===": started = True - who = (parts[3], parts[5]) + who = (parts[3], parts[5], parts[7], parts[8]) elif parts[0] == "rtt": if who is None: raise FatalLogIssue("Broken logfile " + path) times = parts[3].split("/") - ld.add_data(timestamp, src=who[0], dst=who[1], ping=float(times[1]), variance=float(times[3])) + ld.add_data(timestamp, src=who[0], dst=who[1], srcIdx=int(who[2]), dstIdx=int(who[3]), + ping=float(times[1]), variance=float(times[3])) if float(times[3]) > 5: ld.add_warning(timestamp, "High variance between {}".format(who)) diff --git a/scripts/analysis/transformer/output_ping.py b/scripts/analysis/transformer/output_ping.py index 1ec711c..16a0751 100644 --- a/scripts/analysis/transformer/output_ping.py +++ b/scripts/analysis/transformer/output_ping.py @@ -15,4 +15,9 @@ class OutputPingTransformer(Transformer): if "ping" in e: f.write("PING_TIME_MAP['{}']['{}'] = {}\n".format(e["src"], e["dst"], e["ping"])) + with open("ping-locs-{}.txt".format(log.scenario), "w") as f: + for e in log.entries(): + if "ping" in e: + f.write("latency_{}_{} = {}\n".format(e["srcIdx"], e["dstIdx"], round(e["ping"] / 2))) + return logs diff --git a/scripts/test/measure_server_pings.py b/scripts/test/measure_server_pings.py index 0d51a2e..c211fb6 100755 --- a/scripts/test/measure_server_pings.py +++ b/scripts/test/measure_server_pings.py @@ -22,11 +22,11 @@ class MeasureServerPings(GenericTestRun): # Nothing to do for this test return True - def _ping(self, src, dst) -> Tuple[str, int]: + def _ping(self, src, dst, srcIdx, dstIdx) -> Tuple[str, int]: ssh = self.start_ssh(self.config["remote.user"], src, "ping", "-c", str(self.duration), dst, stdout=subprocess.PIPE) (output, _) = ssh.communicate() - log = "=== Ping from {} to {} ===".format(src, dst) + log = "=== Ping from {} to {} idx {} {} ===".format(src, dst, srcIdx, dstIdx) if ssh.returncode != 0: log += "\nMeasurement error {}".format(ssh.returncode) return log, ssh.returncode @@ -38,14 +38,14 @@ class MeasureServerPings(GenericTestRun): return log, 0 def stage_bench(self) -> bool: - servers = self.get_servers(("client.network.addresses", "replica.network.addresses")) + servers = self.get_servers(("replica.network.addresses",)) with ThreadPoolExecutor(max_workers=30) as executor: results = [] - for (i, dst) in enumerate(servers): + for (i, src) in enumerate(servers): for j in range(i + 1, len(servers)): - src = servers[j] - res = executor.submit(self._ping, src, dst) + dst = servers[j] + res = executor.submit(self._ping, src, dst, i, j) results.append(res) for res in results: r = res.result() -- GitLab