From cb9afce8a7020108813dc7565249e681e5a6fae4 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Fri, 26 Aug 2016 10:33:10 +0300 Subject: oeqa.buildperf: treat failed measurements as errors Now failed measurements correctly cause a test failure (recorded as an error). There should be no need to continue the test if one step fails, especially now that the tests don't depend on each other. Signed-off-by: Markus Lehtonen Signed-off-by: Richard Purdie --- meta/lib/oeqa/buildperf/base.py | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) (limited to 'meta/lib') diff --git a/meta/lib/oeqa/buildperf/base.py b/meta/lib/oeqa/buildperf/base.py index 83439f1bdb..dbc534efe3 100644 --- a/meta/lib/oeqa/buildperf/base.py +++ b/meta/lib/oeqa/buildperf/base.py @@ -75,9 +75,7 @@ def time_cmd(cmd, **kwargs): if isinstance(cmd, str): timecmd = ' '.join(timecmd) + ' ' timecmd += cmd - # TODO: 'ignore_status' could/should be removed when globalres.log is - # deprecated. The function would just raise an exception, instead - ret = runCmd2(timecmd, ignore_status=True, **kwargs) + ret = runCmd2(timecmd, **kwargs) timedata = tmpf.file.read() return ret, timedata @@ -315,16 +313,15 @@ class BuildPerfTestCase(unittest.TestCase): cmd_str = cmd if isinstance(cmd, str) else ' '.join(cmd) log.info("Timing command: %s", cmd_str) cmd_log = os.path.join(self.out_dir, 'commands.log') - with open(cmd_log, 'a') as fobj: - ret, timedata = time_cmd(cmd, stdout=fobj) - if ret.status: - log.error("Time will be reported as 0. Command failed: %s", - ret.status) - etime = timedelta(0) - self._failed = True - else: - match = re.search(r'.*wall clock.*: (?P.*)\n', timedata) - etime = str_time_to_timedelta(match.group('etime')) + try: + with open(cmd_log, 'a') as fobj: + ret, timedata = time_cmd(cmd, stdout=fobj) + except CommandError: + log.error("Command '%s' failed, see %s for more details", cmd_str, + cmd_log) + raise + match = re.search(r'.*wall clock.*: (?P.*)\n', timedata) + etime = str_time_to_timedelta(match.group('etime')) measurement = {'type': self.SYSRES, 'name': name, @@ -344,16 +341,9 @@ class BuildPerfTestCase(unittest.TestCase): def measure_disk_usage(self, path, name, legend): """Estimate disk usage of a file or directory""" - # TODO: 'ignore_status' could/should be removed when globalres.log is - # deprecated. The function would just raise an exception, instead - ret = runCmd2(['du', '-s', path], ignore_status=True) - if ret.status: - log.error("du failed, disk usage will be reported as 0") - size = 0 - self._failed = True - else: - size = int(ret.output.split()[0]) - log.debug("Size of %s path is %s", path, size) + ret = runCmd2(['du', '-s', path]) + size = int(ret.output.split()[0]) + log.debug("Size of %s path is %s", path, size) measurement = {'type': self.DISKUSAGE, 'name': name, 'legend': legend} -- cgit 1.2.3-korg