From eb36f0000205230e78ab326d8ae6a504939af9c8 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Thu, 23 Jun 2016 18:43:33 +0300 Subject: 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 Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- meta/lib/oeqa/buildperf/base.py | 32 ++++++++++++++++++++++++++++++++ scripts/oe-build-perf-test | 5 +++++ 2 files changed, 37 insertions(+) diff --git a/meta/lib/oeqa/buildperf/base.py b/meta/lib/oeqa/buildperf/base.py index e10cbf4572..527563bb0b 100644 --- a/meta/lib/oeqa/buildperf/base.py +++ b/meta/lib/oeqa/buildperf/base.py @@ -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""" diff --git a/scripts/oe-build-perf-test b/scripts/oe-build-perf-test index ca90f69e1e..9dd073cdfb 100755 --- a/scripts/oe-build-perf-test +++ b/scripts/oe-build-perf-test @@ -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 -- cgit 1.2.3-korg