oe-build-perf-test: implement --globalres-file option

Using this option the script appends test results into a 'global results
file'. A CSV-formatted output of the results. This option is to provide
compatibility with the old build-perf-test.sh.

(From OE-Core rev: e9f18e63220e452f2b0c878998e57d944ae83980)

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:43:33 +03:00
committed by Richard Purdie
parent 8c596369dd
commit eb36f00002
2 changed files with 37 additions and 0 deletions

View File

@@ -152,6 +152,38 @@ class BuildPerfTestRunner(object):
os.makedirs(os.path.dirname(tgt_dir))
shutil.copytree(src_dir, tgt_dir)
def update_globalres_file(self, filename):
"""Write results to globalres csv file"""
if self.repo:
git_tag_rev = self.repo.run_cmd(['describe', self.git_rev])
else:
git_tag_rev = self.git_rev
times = []
sizes = []
for test in self.results['tests'].values():
for measurement in test['measurements']:
res_type = measurement['type']
values = measurement['values']
if res_type == BuildPerfTest.SYSRES:
e_sec = values['elapsed_time'].total_seconds()
times.append('{:d}:{:02d}:{:.2f}'.format(
int(e_sec / 3600),
int((e_sec % 3600) / 60),
e_sec % 60))
elif res_type == BuildPerfTest.DISKUSAGE:
sizes.append(str(values['size']))
else:
log.warning("Unable to handle '%s' values in "
"globalres.log", res_type)
log.debug("Writing globalres log to %s", filename)
with open(filename, 'a') as fobj:
fobj.write('{},{}:{},{},'.format(self.results['tester_host'],
self.results['git_branch'],
self.results['git_revision'],
git_tag_rev))
fobj.write(','.join(times + sizes) + '\n')
def perf_test_case(obj):
"""Decorator for adding test classes"""

View File

@@ -70,6 +70,8 @@ def parse_args(argv):
parser.add_argument('-D', '--debug', action='store_true',
help='Enable debug level logging')
parser.add_argument('--globalres-file',
help="Append results to 'globalres' csv file")
return parser.parse_args(argv)
@@ -94,6 +96,9 @@ def main(argv=None):
# Run actual tests
runner = BuildPerfTestRunner(out_dir)
ret = runner.run_tests()
if not ret:
if args.globalres_file:
runner.update_globalres_file(args.globalres_file)
return ret