From: Markus Lehtonen <markus.lehtonen@linux.intel.com>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH 7/9] oeqa.buildperf: introduce runCmd2()
Date: Fri, 12 Aug 2016 12:11:24 +0300 [thread overview]
Message-ID: <1470993086-23718-8-git-send-email-markus.lehtonen@linux.intel.com> (raw)
In-Reply-To: <1470993086-23718-1-git-send-email-markus.lehtonen@linux.intel.com>
Special runCmd() for build perf tests which doesn't raise an
AssertionError when the command fails. This causes command failures to
be detected as test errors instead of test failures. This way "failed"
state of tests is reserved for future making it possible to set e.g.
thresholds for certain measurement results.
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
meta/lib/oeqa/buildperf/__init__.py | 3 ++-
meta/lib/oeqa/buildperf/base.py | 15 ++++++++++-----
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/meta/lib/oeqa/buildperf/__init__.py b/meta/lib/oeqa/buildperf/__init__.py
index 85abf3a..605f429 100644
--- a/meta/lib/oeqa/buildperf/__init__.py
+++ b/meta/lib/oeqa/buildperf/__init__.py
@@ -14,5 +14,6 @@ from .base import (BuildPerfTestCase,
BuildPerfTestLoader,
BuildPerfTestResult,
BuildPerfTestRunner,
- KernelDropCaches)
+ KernelDropCaches,
+ runCmd2)
from .test_basic import *
diff --git a/meta/lib/oeqa/buildperf/base.py b/meta/lib/oeqa/buildperf/base.py
index 9711a6a..7ea3183 100644
--- a/meta/lib/oeqa/buildperf/base.py
+++ b/meta/lib/oeqa/buildperf/base.py
@@ -21,6 +21,7 @@ import time
import traceback
import unittest
from datetime import datetime, timedelta
+from functools import partial
from oeqa.utils.commands import runCmd, get_bb_vars
from oeqa.utils.git import GitError, GitRepo
@@ -28,6 +29,10 @@ from oeqa.utils.git import GitError, GitRepo
# Get logger for this module
log = logging.getLogger('build-perf')
+# Our own version of runCmd which does not raise AssertErrors which would cause
+# errors to interpreted as failures
+runCmd2 = partial(runCmd, assert_error=False)
+
class KernelDropCaches(object):
"""Container of the functions for dropping kernel caches"""
@@ -39,7 +44,7 @@ class KernelDropCaches(object):
from getpass import getpass
from locale import getdefaultlocale
cmd = ['sudo', '-k', '-n', 'tee', '/proc/sys/vm/drop_caches']
- ret = runCmd(cmd, ignore_status=True, data=b'0')
+ ret = runCmd2(cmd, ignore_status=True, data=b'0')
if ret.output.startswith('sudo:'):
pass_str = getpass(
"\nThe script requires sudo access to drop caches between "
@@ -59,7 +64,7 @@ class KernelDropCaches(object):
input_data = b''
cmd += ['tee', '/proc/sys/vm/drop_caches']
input_data += b'3'
- runCmd(cmd, data=input_data)
+ runCmd2(cmd, data=input_data)
def time_cmd(cmd, **kwargs):
@@ -71,7 +76,7 @@ def time_cmd(cmd, **kwargs):
timecmd += cmd
# TODO: 'ignore_status' could/should be removed when globalres.log is
# deprecated. The function would just raise an exception, instead
- ret = runCmd(timecmd, ignore_status=True, **kwargs)
+ ret = runCmd2(timecmd, ignore_status=True, **kwargs)
timedata = tmpf.file.read()
return ret, timedata
@@ -213,7 +218,7 @@ class BuildPerfTestCase(unittest.TestCase):
"""Run a command and log it's output"""
cmd_log = os.path.join(self.out_dir, 'commands.log')
with open(cmd_log, 'a') as fobj:
- runCmd(cmd, stdout=fobj)
+ runCmd2(cmd, stdout=fobj)
def measure_cmd_resources(self, cmd, name, legend):
"""Measure system resource usage of a command"""
@@ -261,7 +266,7 @@ class BuildPerfTestCase(unittest.TestCase):
"""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 = runCmd(['du', '-s', path], ignore_status=True)
+ ret = runCmd2(['du', '-s', path], ignore_status=True)
if ret.status:
log.error("du failed, disk usage will be reported as 0")
size = 0
--
2.6.6
next prev parent reply other threads:[~2016-08-12 9:11 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-12 9:11 [PATCH 0/9] oe-build-perf-test: use Python unittest framework Markus Lehtonen
2016-08-12 9:11 ` [PATCH 1/9] oeqa.buildperf: rename module containing basic tests Markus Lehtonen
2016-08-12 9:11 ` [PATCH 2/9] oeqa.buildperf: derive BuildPerfTestCase class from unitest.TestCase Markus Lehtonen
2016-08-12 9:11 ` [PATCH 3/9] oeqa.buildperf: add BuildPerfTestLoader class Markus Lehtonen
2016-08-12 9:11 ` [PATCH 4/9] oeqa.buildperf: add BuildPerfTestResult class Markus Lehtonen
2016-08-12 9:11 ` [PATCH 5/9] oeqa.buildperf: convert test cases to unittest Markus Lehtonen
2016-08-12 9:11 ` [PATCH 6/9] oe-build-perf-test: use new unittest based framework Markus Lehtonen
2016-08-12 9:11 ` Markus Lehtonen [this message]
2016-08-12 9:11 ` [PATCH 8/9] oe-build-perf-test: write logger output into file only Markus Lehtonen
2016-08-12 9:11 ` [PATCH 9/9] oeqa.buildperf: be more verbose about failed commands Markus Lehtonen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1470993086-23718-8-git-send-email-markus.lehtonen@linux.intel.com \
--to=markus.lehtonen@linux.intel.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox