diff --git a/basice2e/e2eReport.py b/basice2e/e2eReport.py index 8bfc88848dc04995a5f8c27d26b6cb2dd4542c8a..5d19a6264e8fc0f4df8e2ff67f726e7fe923b11a 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__":