diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2019-11-22 23:56:44 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2019-11-22 23:56:44 +0100 |
| commit | 05371d31e7946f8c5f2db9d4b6440c008f9ff1d9 (patch) | |
| tree | 83e4be149ed52d7423390a7fa377c47c899f4745 | |
| parent | 291627d0815a3371d4ffd7a732e94a60459d8399 (diff) | |
| download | allocbench-05371d31e7946f8c5f2db9d4b6440c008f9ff1d9.tar.gz allocbench-05371d31e7946f8c5f2db9d4b6440c008f9ff1d9.zip | |
let facter handle load/store of global facts
| -rwxr-xr-x | bench.py | 4 | ||||
| -rw-r--r-- | src/facter.py | 39 | ||||
| -rwxr-xr-x | summarize.py | 5 |
3 files changed, 41 insertions, 7 deletions
@@ -24,7 +24,6 @@ import atexit import datetime import importlib import os -import pickle import subprocess import sys import traceback @@ -49,8 +48,7 @@ def epilog(): endtime = datetime.datetime.now().isoformat() endtime = endtime[:endtime.rfind(':')] src.globalvars.facts["endtime"] = endtime - with open(os.path.join(src.globalvars.resdir, "facts.save"), "wb") as facts_file: - pickle.dump(src.globalvars.facts, facts_file) + src.facter.store_facts(src.globalvars.resdir) # remove a left over status file if some is present if os.path.exists("status"): diff --git a/src/facter.py b/src/facter.py index a1ee952..4d0d6ac 100644 --- a/src/facter.py +++ b/src/facter.py @@ -19,13 +19,14 @@ import ctypes import datetime +import json import multiprocessing import os import platform import subprocess import src.globalvars as gv -from src.util import print_error +from src.util import print_error, print_info def collect_facts(): @@ -51,6 +52,42 @@ def collect_facts(): starttime = starttime[:starttime.rfind(':')] gv.facts["starttime"] = starttime +def store_facts(path=None): + """Store facts to file""" + if not path: + filename = "facts.json" + elif os.path.isdir(path): + filename = os.path.join(path, "facts.json") + else: + filename = path + + print_info(f"Saving facts to: {filename}") + with open(filename, "w") as f: + json.dump(gv.facts, f) + +def load_facts(path=None): + """Load facts from file""" + if not path: + filename = self.name + else: + if os.path.isdir(path): + filename = os.path.join(path, self.name) + else: + filename = os.path.splitext(path) + + if os.path.exists(filename + ".json"): + filename += ".json" + with open(filename, "w") as f: + gv.facts = json.load(f) + if os.path.exists(filename + ".save"): + import pickle + filename += ".save" + with open(filename, "wb") as f: + gv.facts = pickle.load(f) + else: + raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), filename) + + print_info(f"Loading facts from: {filename}") # Copied from pip. # https://github.com/pypa/pip/blob/master/src/pip/_internal/utils/glibc.py diff --git a/summarize.py b/summarize.py index 261caaa..29b8525 100755 --- a/summarize.py +++ b/summarize.py @@ -22,9 +22,9 @@ import argparse import importlib import os -import pickle import sys +import src.facter import src.globalvars from src.util import print_status, print_debug, print_error from src.util import print_license_and_exit, print_version_and_exit @@ -118,8 +118,7 @@ def main(): os.chdir(args.results) # Load facts - with open("facts.save", "rb") as f: - src.globalvars.facts = pickle.load(f) + src.facter.load_facts() for benchmark in src.globalvars.benchmarks: if args.benchmarks and not benchmark in args.benchmarks: |
