oeqa.buildperf: add git revision and branch to result data

BuildPerfTestRunner determines these from the Git repository under which
it is being run (i.e. where the build directory exists). The branch and
revision may be defined/overridden with OE_BUILDPERFTEST_GIT_BRANCH
and OE_BUILDPERFTEST_GIT_BRANCH environment variables, if needed. This
makes it possible to run the build performance test script even if the
top directory is not a git repository clone, for example.

(From OE-Core rev: e6004582454d8c6a18f617c12e6e408ded5be8df)

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Markus Lehtonen
2016-06-23 18:38:35 +03:00
committed by Richard Purdie
parent 964fffa514
commit 8c596369dd

View File

@@ -22,6 +22,7 @@ import traceback
from datetime import datetime, timedelta
from oeqa.utils.commands import runCmd, get_bb_vars
from oeqa.utils.git import GitError, GitRepo
# Get logger for this module
log = logging.getLogger('build-perf')
@@ -85,10 +86,41 @@ class BuildPerfTestRunner(object):
if not os.path.exists(self.out_dir):
os.makedirs(self.out_dir)
# Get Git parameters
try:
self.repo = GitRepo('.')
except GitError:
self.repo = None
self.git_rev, self.git_branch = self.get_git_revision()
log.info("Using Git branch:revision %s:%s", self.git_branch,
self.git_rev)
def get_git_revision(self):
"""Get git branch and revision under testing"""
rev = os.getenv('OE_BUILDPERFTEST_GIT_REVISION')
branch = os.getenv('OE_BUILDPERFTEST_GIT_BRANCH')
if not self.repo and (not rev or not branch):
log.info("The current working directory doesn't seem to be a Git "
"repository clone. You can specify branch and revision "
"used in test results with OE_BUILDPERFTEST_GIT_REVISION "
"and OE_BUILDPERFTEST_GIT_BRANCH environment variables")
else:
if not rev:
rev = self.repo.run_cmd(['rev-parse', 'HEAD'])
if not branch:
try:
# Strip 11 chars, i.e. 'refs/heads' from the beginning
branch = self.repo.run_cmd(['symbolic-ref', 'HEAD'])[11:]
except GitError:
log.debug('Currently on detached HEAD')
branch = None
return str(rev), str(branch)
def run_tests(self):
"""Method that actually runs the tests"""
self.results['schema_version'] = 1
self.results['git_revision'] = self.git_rev
self.results['git_branch'] = self.git_branch
self.results['tester_host'] = socket.gethostname()
start_time = datetime.utcnow()
self.results['start_time'] = start_time