aboutsummaryrefslogtreecommitdiff
path: root/src/facter.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/facter.py')
-rw-r--r--src/facter.py45
1 files changed, 29 insertions, 16 deletions
diff --git a/src/facter.py b/src/facter.py
index fe0b316..4c1c14d 100644
--- a/src/facter.py
+++ b/src/facter.py
@@ -26,31 +26,31 @@ import platform
import subprocess
import src.globalvars as gv
-from src.util import print_error, print_info
+from src.util import print_error, print_info, run_cmd
+FACTS = {}
def collect_facts():
- """Collect facts ad store them in src.globalvars.facts"""
+ """Collect general facts about the benchmark environment"""
# Populate src.globalvars.facts on import
_uname = platform.uname()
- gv.facts["hostname"] = _uname.node
- gv.facts["system"] = _uname.system
- gv.facts["kernel"] = _uname.release
- gv.facts["arch"] = _uname.machine
- gv.facts["cpus"] = multiprocessing.cpu_count()
- gv.facts["LD_PRELOAD"] = os.environ.get("LD_PRELOAD", None)
+ FACTS["hostname"] = _uname.node
+ FACTS["system"] = _uname.system
+ FACTS["kernel"] = _uname.release
+ FACTS["arch"] = _uname.machine
+ FACTS["cpus"] = multiprocessing.cpu_count()
+ FACTS["LD_PRELOAD"] = os.environ.get("LD_PRELOAD", None)
with open(os.path.join(gv.builddir, "ccinfo"), "r") as ccinfo:
- gv.facts["cc"] = ccinfo.readlines()[-1][:-1]
+ FACTS["cc"] = ccinfo.readlines()[-1][:-1]
- gv.facts["allocbench"] = subprocess.run(["git", "rev-parse", "master"],
- stdout=subprocess.PIPE,
- universal_newlines=True).stdout
+ # get commit info from git
+ allocbench_version()
starttime = datetime.datetime.now().isoformat()
# strip seconds from string
starttime = starttime[:starttime.rfind(':')]
- gv.facts["starttime"] = starttime
+ FACTS["starttime"] = starttime
def store_facts(path=None):
@@ -64,7 +64,7 @@ def store_facts(path=None):
print_info(f"Saving facts to: {filename}")
with open(filename, "w") as f:
- json.dump(gv.facts, f)
+ json.dump(FACTS, f)
def load_facts(path=None):
@@ -80,18 +80,31 @@ def load_facts(path=None):
if os.path.exists(filename + ".json"):
filename += ".json"
with open(filename, "r") as f:
- gv.facts = json.load(f)
+ FACTS = json.load(f)
elif os.path.exists(filename + ".save"):
import pickle
filename += ".save"
with open(filename, "rb") as f:
- gv.facts = pickle.load(f)
+ FACTS = pickle.load(f)
else:
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT),
filename)
print_info(f"Loading facts from: {filename}")
+def allocbench_version():
+ "Store and return allocbench version string."""
+ if "allocbench" in FACTS:
+ return FACTS["allocbench"]
+
+ commit = run_cmd(["git", "rev-parse", "HEAD"], capture=True).stdout[:-1]
+
+ proc = run_cmd(["git", "status", "--porcelain"], capture=True)
+ dirty = "-dirty" if proc.stdout != "" else ""
+
+ FACTS["allocbench"] = f"{commit}{dirty}"
+ return FACTS["allocbench"]
+
# Copied from pip.
# https://github.com/pypa/pip/blob/master/src/pip/_internal/utils/glibc.py