ufes-20191-redes-mininet/proj-impl/topoboxplot.py
2019-07-03 03:15:15 -03:00

53 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
import sys
import json
import pandas as pd
from pathlib import Path
def avg(itr):
if len(itr) == 0:
return 0
else:
return sum(itr)/len(itr)
def main(results, outfolder):
algos = list(results.keys())
topos = list(results.values().__iter__().__next__().keys())
db = {
algo: {
topo: {
'sl': [res['sequential']['ping']['avg'] for res in results[algo][topo]],
'sb': [avg(res['sequential']['iperfs']) for res in results[algo][topo]],
'pl': [res['parallel']['ping']['avg'] for res in results[algo][topo]],
'pb': [avg(res['parallel']['iperfs']) for res in results[algo][topo]],
} for topo in topos
} for algo in algos }
avgdb = {
algo: {
topo: {
persp: avg(db[algo][topo][persp])
for persp in ['sl', 'sb', 'pl', 'pb']
} for topo in topos
} for algo in algos }
print(avgdb)
df = pd.DataFrame(data=[])
bp = df.boxplot()
bp.figure.savefig(str(outfolder/"sequential_latency.pdf"))
# print(results)
if __name__ == '__main__':
if len(sys.argv) != 3:
print("Usage:", file=sys.stderr)
print(f" {sys.argv[0]} <__all__.autotests.json> <outfolder>",
file=sys.stderr)
else:
all_tests = Path(sys.argv[1])
outfolder = Path(sys.argv[2])
outfolder.mkdir(parents=True, exist_ok=True)
main(json.loads(all_tests.read_text()), outfolder)