From df9173042c0c874dc0218b27d63a95cae07aec99 Mon Sep 17 00:00:00 2001
From: Jake Taylor <jake@elixxir.io>
Date: Mon, 24 May 2021 14:47:48 -0500
Subject: [PATCH] added median to e2eReport.py

---
 basice2e/e2eReport.py | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/basice2e/e2eReport.py b/basice2e/e2eReport.py
index 8bfc888..5d19a62 100644
--- a/basice2e/e2eReport.py
+++ b/basice2e/e2eReport.py
@@ -6,6 +6,7 @@ import glob
 import os
 import logging as log
 import datetime
+import statistics
 
 resultsDir = "./results/clients"
 
@@ -76,7 +77,8 @@ def main():
                         # Capture message timestamp
                         received_timestamp_str = re.findall('INFO (.{19}\.{0,1}\d{0,6})', line)[0]
                         try:
-                            received_timestamp = datetime.datetime.strptime(received_timestamp_str, '%Y/%m/%d %H:%M:%S.%f')
+                            received_timestamp = datetime.datetime.strptime(received_timestamp_str,
+                                                                            '%Y/%m/%d %H:%M:%S.%f')
                         except ValueError:
                             received_timestamp = datetime.datetime.strptime(received_timestamp_str, '%Y/%m/%d %H:%M:%S')
                         log.debug("Located received timestamp: {}".format(received_timestamp))
@@ -91,11 +93,13 @@ def main():
 
     # Print results
     num_successful = 0
-    total_latency = datetime.timedelta()
+    total_latency = datetime.timedelta()  # Keep track of the total message latencies to calculate a mean
+    latencies = []  # Keep track of each message's latency in order to calculate a median
     for msgDigest, senderDict in messages_sent.items():
         if msgDigest in messages_received:
             num_successful += 1
             message_latency = messages_received[msgDigest]["received"] - messages_sent[msgDigest]["sent"]
+            latencies.append(message_latency)
             total_latency += message_latency
             log.info("Message {} sent by {} on round {} was received after {}".format(msgDigest,
                                                                                       senderDict["sender"],
@@ -111,9 +115,10 @@ def main():
         else:
             log.warning("Round {} was NOT confirmed successful, messages may have been dropped".format(round_id))
 
-    log.info("{}/{} messages received successfully after an average of {}!".format(num_successful,
-                                                                                   len(messages_sent),
-                                                                                   total_latency / num_successful))
+    log.info("{}/{} messages received successfully! Average: {}, Median: {}".format(num_successful,
+                                                                                    len(messages_sent),
+                                                                                    total_latency / num_successful,
+                                                                                    statistics.median(latencies)))
 
 
 if __name__ == "__main__":
-- 
GitLab