Skip to content

Instantly share code, notes, and snippets.

@rnbguy
Created May 11, 2017 20:27
Show Gist options
  • Save rnbguy/8f2d8d39ab3db26f6194ca8b8637eb57 to your computer and use it in GitHub Desktop.
Save rnbguy/8f2d8d39ab3db26f6194ca8b8637eb57 to your computer and use it in GitHub Desktop.
generate csv from cbmc run dumps
#!/usr/bin/env python3
import os
import glob
import sys
import re
import csv
dump_dir = sys.argv[1].strip("/")
dump_basename = os.path.basename(dump_dir)
re_1 = r"Command exited with non-zero status (.*)"
re_2 = r"([^,]*), elapsed (.*)\(s\), max memory (.*)\(kB\), timelimit (.*)\(s\), memorylimit (.*)\(kB\)"
re_3 = r"propagator took (.*)s"
csv_file = open("info_{}.csv".format(dump_basename), "w")
fields = ["filename", "flags", "elapsed_time(s)", "propagator_time(s)", "timelimit(s)", "memory_peak(kB)", "memorylimit(kB)", "exit_code"]
csvwriter = csv.DictWriter(csv_file, fieldnames = fields)
csvwriter.writeheader()
for e in glob.glob("{}/*/*/".format(dump_dir)):
code_dir = e.strip("/")
c_code_name = os.path.basename(code_dir)
info_dict = dict()
info_dict["exit_code"] = 0
info_dict["filename"] = c_code_name
with open("{}/resources.txt".format(code_dir)) as f:
l = f.readline()
r = re.search(re_1, l)
if r:
info_dict["exit_code"] = r.group(1)
l = f.readline()
r = re.search(re_2, l)
if r:
info_dict["flags"] = r.group(1)
info_dict["elapsed_time(s)"] = r.group(2)
info_dict["memory_peak(kB)"] = r.group(3)
info_dict["timelimit(s)"] = r.group(4)
info_dict["memorylimit(kB)"] = r.group(5)
with open("{}/stdout.txt".format(code_dir)) as f:
l = f.read()
r = re.search(re_3, l)
if r:
info_dict["propagator_time(s)"] = r.group(1)
csvwriter.writerow(info_dict)
csv_file.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment