From 00c5d60d6449715bc9e70fde0bdf63d2aaabbe83 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Mon, 29 Aug 2016 22:48:30 +0300 Subject: oeqa.buildperf: include buildstats file name in results.json No need to do lsdir magic for finding buildstats when reading results. Signed-off-by: Markus Lehtonen Signed-off-by: Richard Purdie --- meta/lib/oeqa/buildperf/base.py | 18 ++++++++++++++---- meta/lib/oeqa/buildperf/test_basic.py | 7 +++---- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/meta/lib/oeqa/buildperf/base.py b/meta/lib/oeqa/buildperf/base.py index 49da8f6161..0b2c0f8e73 100644 --- a/meta/lib/oeqa/buildperf/base.py +++ b/meta/lib/oeqa/buildperf/base.py @@ -141,7 +141,7 @@ class BuildPerfTestResult(unittest.TextTestResult): def startTest(self, test): """Pre-test hook""" - test.out_dir = os.path.join(self.out_dir, test.name) + test.base_dir = self.out_dir os.mkdir(test.out_dir) log.info("Executing test %s: %s", test.name, test.shortDescription()) self.stream.write(datetime.now().strftime("[%Y-%m-%d %H:%M:%S] ")) @@ -298,7 +298,7 @@ class BuildPerfTestCase(unittest.TestCase): def __init__(self, *args, **kwargs): super(BuildPerfTestCase, self).__init__(*args, **kwargs) self.name = self._testMethodName - self.out_dir = None + self.base_dir = None self.start_time = None self.elapsed_time = None self.measurements = [] @@ -308,6 +308,10 @@ class BuildPerfTestCase(unittest.TestCase): self.times = [] self.sizes = [] + @property + def out_dir(self): + return os.path.join(self.base_dir, self.name) + def setUp(self): """Set-up fixture for each test""" if self.build_target: @@ -332,7 +336,7 @@ class BuildPerfTestCase(unittest.TestCase): log.error("Command failed: %s", err.retcode) raise - def measure_cmd_resources(self, cmd, name, legend): + def measure_cmd_resources(self, cmd, name, legend, save_bs=False): """Measure system resource usage of a command""" def _worker(data_q, cmd, **kwargs): """Worker process for measuring resources""" @@ -387,6 +391,11 @@ class BuildPerfTestCase(unittest.TestCase): 'elapsed_time': etime, 'rusage': data['rusage'], 'iostat': data['iostat']} + if save_bs: + bs_file = self.save_buildstats(legend) + measurement['values']['buildstats_file'] = \ + os.path.relpath(bs_file, self.base_dir) + self.measurements.append(measurement) # Append to 'times' array for globalres log @@ -474,12 +483,13 @@ class BuildPerfTestCase(unittest.TestCase): buildstats.append(recipe_bs) # Write buildstats into json file - postfix = '.' + label if label else '' + postfix = '.' + str_to_fn(label) if label else '' postfix += '.json' outfile = os.path.join(self.out_dir, 'buildstats' + postfix) with open(outfile, 'w') as fobj: json.dump(buildstats, fobj, indent=4, sort_keys=True, cls=ResultsJsonEncoder) + return outfile def rm_tmp(self): """Cleanup temporary/intermediate files and directories""" diff --git a/meta/lib/oeqa/buildperf/test_basic.py b/meta/lib/oeqa/buildperf/test_basic.py index 25dbfb0bf7..e448ed18c9 100644 --- a/meta/lib/oeqa/buildperf/test_basic.py +++ b/meta/lib/oeqa/buildperf/test_basic.py @@ -28,9 +28,8 @@ class Test1P1(BuildPerfTestCase): self.rm_cache() self.sync() self.measure_cmd_resources(['bitbake', self.build_target], 'build', - 'bitbake ' + self.build_target) + 'bitbake ' + self.build_target, save_bs=True) self.measure_disk_usage(self.bb_vars['TMPDIR'], 'tmpdir', 'tmpdir') - self.save_buildstats() class Test1P2(BuildPerfTestCase): @@ -62,11 +61,11 @@ class Test1P3(BuildPerfTestCase): self.sync() cmd = ['bitbake', '-R', postfile, self.build_target] self.measure_cmd_resources(cmd, 'build', - 'bitbake' + self.build_target) + 'bitbake' + self.build_target, + save_bs=True) self.measure_disk_usage(self.bb_vars['TMPDIR'], 'tmpdir', 'tmpdir') finally: os.unlink(postfile) - self.save_buildstats() class Test2(BuildPerfTestCase): -- cgit 1.2.3-korg