84 lines
1.9 KiB
Python
84 lines
1.9 KiB
Python
import json, re, sys, os, glob
|
|
from os import path
|
|
|
|
def eprint(*args, **kwargs):
|
|
print(*args, file=sys.stderr, flush=True, **kwargs)
|
|
|
|
def process_run(tree, runPath):
|
|
|
|
ctf_mode = {}
|
|
|
|
with open(".garlic/time_mode_runtime.csv", "r") as f:
|
|
ctf_mode['runtime'] = float(f.readline())
|
|
|
|
with open(".garlic/time_mode_dead.csv", "r") as f:
|
|
ctf_mode['dead'] = float(f.readline())
|
|
|
|
with open(".garlic/time_mode_task.csv", "r") as f:
|
|
ctf_mode['task'] = float(f.readline())
|
|
|
|
tree['ctf_mode'] = ctf_mode
|
|
|
|
with open("stdout.log", "r") as f:
|
|
lines = [line.strip() for line in f.readlines()]
|
|
|
|
time_line = None
|
|
for line in lines:
|
|
|
|
if re.match(r'^ ?time .*', line):
|
|
time_line = line
|
|
break
|
|
|
|
if time_line is None:
|
|
eprint("missing time line, aborting")
|
|
eprint("stdout file = {}/stdout.log".format(runPath))
|
|
exit(1)
|
|
|
|
time_str = time_line.split()[1]
|
|
|
|
tree['time'] = float(time_str)
|
|
|
|
print(json.dumps(tree))
|
|
|
|
def process_result_tree(resultTree):
|
|
|
|
eprint("processing resultTree: " + resultTree)
|
|
|
|
os.chdir(resultTree)
|
|
|
|
experiments = glob.glob(resultTree + "/*-experiment")
|
|
|
|
for exp in glob.glob("*-experiment"):
|
|
eprint("found experiment: " + exp)
|
|
expPath = path.join(resultTree, exp)
|
|
os.chdir(expPath)
|
|
|
|
for unit in glob.glob("*-unit"):
|
|
eprint("found unit: " + unit)
|
|
unitPath = path.join(resultTree, exp, unit)
|
|
os.chdir(unitPath)
|
|
|
|
with open('garlic_config.json') as json_file:
|
|
garlic_conf = json.load(json_file)
|
|
|
|
tree = {"exp":exp, "unit":unit, "config":garlic_conf}
|
|
|
|
for i in range(garlic_conf['loops']):
|
|
run = str(i + 1)
|
|
runPath = path.join(resultTree, exp, unit, run)
|
|
if path.isdir(runPath) == False:
|
|
eprint("missing run {}, aborting".format(run))
|
|
exit(1)
|
|
|
|
tree["run"] = run
|
|
os.chdir(runPath)
|
|
|
|
process_run(tree, runPath)
|
|
|
|
|
|
if len(sys.argv) != 2:
|
|
eprint("usage: python {} <resultTree>".format(argv[0]))
|
|
exit(1)
|
|
|
|
process_result_tree(sys.argv[1])
|