[oe-commits] [openembedded-core] 06/09: oeqa/runtime/ptest: refactor for future work
git at git.openembedded.org
git at git.openembedded.org
Mon May 13 19:52:52 UTC 2019
This is an automated email from the git hooks/post-receive script.
rpurdie pushed a commit to branch master-next
in repository openembedded-core.
commit 73cfef08fc536cd490e606e086f7dd1b8ea746d9
Author: Armin Kuster <akuster808 at gmail.com>
AuthorDate: Mon May 13 08:41:01 2019 -0700
oeqa/runtime/ptest: refactor for future work
This in preparation for being able to run and capture each
ptest separately.
moves things to setup and finish functions
breaks a few checks out into their own tests.
no change in result tool output.
Recipe | Passed | Failed | Skipped | Time(s)
-------------------------------------------------
openssh | 0 | 0 | 1 | 1
openssl | 146 | 1 | 8 | 68
python | 0 | 0 | 0 | 22
Signed-off-by: Armin Kuster <akuster808 at gmail.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
meta/lib/oeqa/runtime/cases/ptest.py | 100 +++++++++++++++++++++++------------
1 file changed, 65 insertions(+), 35 deletions(-)
diff --git a/meta/lib/oeqa/runtime/cases/ptest.py b/meta/lib/oeqa/runtime/cases/ptest.py
index d8d1e1b..95dd19a 100644
--- a/meta/lib/oeqa/runtime/cases/ptest.py
+++ b/meta/lib/oeqa/runtime/cases/ptest.py
@@ -12,59 +12,92 @@ from oeqa.core.decorator.data import skipIfNotFeature
from oeqa.runtime.decorator.package import OEHasPackage
from oeqa.utils.logparser import PtestParser
-class PtestRunnerTest(OERuntimeTestCase):
- @skipIfNotFeature('ptest', 'Test requires ptest to be in DISTRO_FEATURES')
- @OETestDepends(['ssh.SSHTest.test_ssh'])
- @OEHasPackage(['ptest-runner'])
- @unittest.expectedFailure
- def test_ptestrunner(self):
- status, output = self.target.run('which ptest-runner', 0)
- if status != 0:
- self.skipTest("No -ptest packages are installed in the image")
+class PTestBase(OERuntimeTestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ cls.ptest_startup()
+
+ @classmethod
+ def tearDownClass(cls):
+ cls.ptest_finishup()
- test_log_dir = self.td.get('TEST_LOG_DIR', '')
+ @classmethod
+ def ptest_startup(cls):
+ cls.failmsg = ""
+
+ cls.test_log_dir = cls.td.get('TEST_LOG_DIR', '')
# The TEST_LOG_DIR maybe NULL when testimage is added after
# testdata.json is generated.
- if not test_log_dir:
- test_log_dir = os.path.join(self.td.get('WORKDIR', ''), 'testimage')
+ if not cls.test_log_dir:
+ cls.test_log_dir = os.path.join(cls.td.get('WORKDIR', ''), 'testimage')
# Don't use self.td.get('DATETIME'), it's from testdata.json, not
# up-to-date, and may cause "File exists" when re-reun.
+
timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
- ptest_log_dir_link = os.path.join(test_log_dir, 'ptest_log')
- ptest_log_dir = '%s.%s' % (ptest_log_dir_link, timestamp)
- ptest_runner_log = os.path.join(ptest_log_dir, 'ptest-runner.log')
+ cls.ptest_log_dir_link = os.path.join(cls.test_log_dir, 'ptest_log')
+ cls.ptest_log_dir = '%s.%s' % (cls.ptest_log_dir_link, timestamp)
+ cls.ptest_runner_log = os.path.join(cls.ptest_log_dir, 'ptest-runner.log')
+
+ os.makedirs(cls.ptest_log_dir)
+
+ if not hasattr(cls.tc, "extraresults"):
+ cls.tc.extraresults = {}
+
+ cls.extras = cls.tc.extraresults
+
+ @classmethod
+ def ptest_finishup(cls):
+ # update symlink to ptest_log
+ if os.path.exists(cls.ptest_log_dir_link):
+ # Remove the old link to create a new one
+ os.remove(cls.ptest_log_dir_link)
+ os.symlink(os.path.basename(cls.ptest_log_dir), cls.ptest_log_dir_link)
+
+ if cls.failmsg:
+ cls.fail(cls.failmsg)
+
+class PtestRunnerTest(PTestBase):
+
+ @skipIfNotFeature('ptest', 'Test requires ptest to be in DISTRO_FEATURES')
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ @OEHasPackage(['ptest-runner'])
+ @unittest.expectedFailure
+ def test_ptestrunner_check(self):
+ status, output = self.target.run('which ptest-runner')
+ msg = 'ptest-runner not installed . %s' % output
+ self.assertEqual(status, 0, msg=msg)
+
+ def test_ptests_installed(self):
+ status, output = self.target.run('ptest-runner -l')
+ msg = 'No ptests found. %s' % output
+ self.assertEqual(status, 0, msg=msg)
+
+ @OETestDepends(['ptest.PtestRunnerTest.test_ptests_installed'])
+ def test_ptestrunner(self):
status, output = self.target.run('ptest-runner', 0)
- os.makedirs(ptest_log_dir)
- with open(ptest_runner_log, 'w') as f:
+ with open(self.ptest_runner_log, 'w') as f:
f.write(output)
# status != 0 is OK since some ptest tests may fail
self.assertTrue(status != 127, msg="Cannot execute ptest-runner!")
- if not hasattr(self.tc, "extraresults"):
- self.tc.extraresults = {}
- extras = self.tc.extraresults
- extras['ptestresult.rawlogs'] = {'log': output}
-
# Parse and save results
parser = PtestParser()
- results, sections = parser.parse(ptest_runner_log)
- parser.results_as_files(ptest_log_dir)
- if os.path.exists(ptest_log_dir_link):
- # Remove the old link to create a new one
- os.remove(ptest_log_dir_link)
- os.symlink(os.path.basename(ptest_log_dir), ptest_log_dir_link)
+ results, sections = parser.parse(self.ptest_runner_log)
+ parser.results_as_files(self.ptest_log_dir)
- extras['ptestresult.sections'] = sections
+ self.extras['ptestresult.rawlogs'] = {'log': output}
+ self.extras['ptestresult.sections'] = sections
trans = str.maketrans("()", "__")
for section in results:
for test in results[section]:
result = results[section][test]
testname = "ptestresult." + (section or "No-section") + "." + "_".join(test.translate(trans).split())
- extras[testname] = {'status': result}
+ self.extras[testname] = {'status': result}
failed_tests = {}
for section in results:
@@ -72,13 +105,10 @@ class PtestRunnerTest(OERuntimeTestCase):
if failed_testcases:
failed_tests[section] = failed_testcases
- failmsg = ""
status, output = self.target.run('dmesg | grep "Killed process"', 0)
if output:
- failmsg = "ERROR: Processes were killed by the OOM Killer:\n%s\n" % output
+ self.failmsg = "ERROR: Processes were killed by the OOM Killer:\n%s\n" % output
if failed_tests:
- failmsg = failmsg + "Failed ptests:\n%s" % pprint.pformat(failed_tests)
+ self.failmsg = self.failmsg + "Failed ptests:\n%s" % pprint.pformat(failed_tests)
- if failmsg:
- self.fail(failmsg)
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Openembedded-commits
mailing list