simulation.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import os
  2. from metrics import anonymity_metrics
  3. import pandas as pd
  4. import json
  5. from datetime import datetime
  6. import reg_phase
  7. import argparse
  8. def main(conf):
  9. logging_dir = os.path.join(conf["logging"]["dir"],
  10. datetime.utcnow().isoformat().replace(':', '_'))
  11. print(f"Logs are saved to {logging_dir}")
  12. os.makedirs(logging_dir, exist_ok=True)
  13. gr_start = reg_phase.run(logging_dir, conf)
  14. #packetLogsDir = os.path.join(logging_dir,'packet_log.csv')
  15. #packetLogs = pd.read_csv(packetLogsDir, delimiter=';')
  16. messageLogsDir = os.path.join(logging_dir,'message_log.csv')
  17. msgLogs = pd.read_csv(messageLogsDir, delimiter=';')
  18. latency = anonymity_metrics.computeAverageE2ELatency(msgLogs, gr_start)
  19. print("-------- Performance metrics --------")
  20. print(">> Overall latency: %f seconds" % (latency))
  21. print("--------------------------------------------")
  22. if __name__ == "__main__":
  23. parser = argparse.ArgumentParser()
  24. parser.add_argument('filename')
  25. args = parser.parse_args()
  26. with open(args.filename) as f:
  27. conf = json.load(f)
  28. conf["packet"] = {"packet_size" : 0}
  29. conf["misc"] = {
  30. "id_len": 4,
  31. "num_target_packets": 1
  32. }
  33. conf["message"] = {
  34. "min_msg_size": 2,
  35. "max_msg_size": 2
  36. }
  37. conf["clients"]["sim_add_buffer"] = 0.0
  38. conf["clients"]["cover_traffic"] = False
  39. conf["clients"]["cover_traffic_rate"] = 1.0
  40. conf["clients"]["dummies_acks"] = False
  41. conf["clients"]["ACK"] = False
  42. conf["mixnodes"]["batch"] = True
  43. conf["mixnodes"]["avg_delay"] = 0.1
  44. main(conf)