aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2019-12-13 16:14:37 +0100
committerFlorian Fischer <florian.fl.fischer@fau.de>2019-12-14 01:06:24 +0100
commit0980de3da64e273a363dace79e56345bc4ed2dbc (patch)
tree731e4790728176038c70cd6a409540182969f5b1 /src
parentabc685736453ae866a7dd450a4ef4f30528f845f (diff)
downloadallocbench-0980de3da64e273a363dace79e56345bc4ed2dbc.tar.gz
allocbench-0980de3da64e273a363dace79e56345bc4ed2dbc.zip
move allocbench_version to facter and make the facts a global variable of facter.py
Diffstat (limited to 'src')
-rw-r--r--src/benchmark.py2
-rw-r--r--src/facter.py45
-rw-r--r--src/globalvars.py3
-rw-r--r--src/util.py25
4 files changed, 30 insertions, 45 deletions
diff --git a/src/benchmark.py b/src/benchmark.py
index bbb6d50..905a11f 100644
--- a/src/benchmark.py
+++ b/src/benchmark.py
@@ -734,7 +734,7 @@ class Benchmark:
print(comment_symbol, self.name, file=f)
print(file=f)
print(comment_symbol, "Common facts:", file=f)
- for k, v in src.globalvars.facts.items():
+ for k, v in src.facter.FACTS.items():
print(comment_symbol, k + ":", v, file=f)
print(file=f)
print(comment_symbol, "Benchmark facts:", file=f)
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
diff --git a/src/globalvars.py b/src/globalvars.py
index c1ec6b0..bcb722b 100644
--- a/src/globalvars.py
+++ b/src/globalvars.py
@@ -17,7 +17,6 @@
"""Global variables for allocbench
-facts: Dict holding facts about the current benchmark run
verbosity: Verbosity level -1: quiet, 0: status, 1: info, 2: stdout of subcommands, 3: debug info
allocators: Dict holding the allocators to compare
benchmarks: List of available benchmarks
@@ -35,8 +34,6 @@ import inspect
import os
-facts = {}
-
verbosity = 0
allocators = {}
diff --git a/src/util.py b/src/util.py
index 618eaf8..c5074b6 100644
--- a/src/util.py
+++ b/src/util.py
@@ -169,31 +169,6 @@ def print_license_and_exit():
exit(0)
-def print_version_and_exit():
- """Print current commit info before exit"""
- proc = subprocess.run(["git", "rev-parse", "HEAD"],
- universal_newlines=True,
- stdout=subprocess.PIPE)
-
- if proc.returncode != 0:
- print_error("git rev-parse failed")
- exit(1)
- commit = proc.stdout[:-1]
-
- proc = subprocess.run(["git", "status", "--porcelain"],
- universal_newlines=True,
- stdout=subprocess.PIPE)
-
- if proc.returncode != 0:
- print_error("git status --porcelain failed")
- exit(1)
-
- dirty = "-dirty" if proc.stdout != "" else ""
-
- print(f"{commit}{dirty}")
- exit(0)
-
-
def sha1sum(filename):
"""Return sha1sum of a file"""
sha1 = hashlib.sha1()