53 lines
1.5 KiB
Python
Executable File
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)
|