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