summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>2016-06-29 19:45:41 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-08-17 10:35:23 +0100
commit09590ac76a19ee1b1b4a9188f7fce5029f0de52a (patch)
tree3db70958e7e61640c6a810ada19fbfad2029510f
parent249d99cd7ec00b3227c194eb4b9b21ea4dcb7315 (diff)
downloadopenembedded-core-contrib-09590ac76a19ee1b1b4a9188f7fce5029f0de52a.tar.gz
openembedded-core-contrib-09590ac76a19ee1b1b4a9188f7fce5029f0de52a.tar.bz2
openembedded-core-contrib-09590ac76a19ee1b1b4a9188f7fce5029f0de52a.zip
oeqa.buildperf: introduce runCmd2()
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> Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r--meta/lib/oeqa/buildperf/__init__.py3
-rw-r--r--meta/lib/oeqa/buildperf/base.py15
2 files changed, 12 insertions, 6 deletions
diff --git a/meta/lib/oeqa/buildperf/__init__.py b/meta/lib/oeqa/buildperf/__init__.py
index 85abf3a25e..605f429ecc 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 d592bd26b9..52c2ab61bf 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"""
@@ -265,7 +270,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