Commit Graph

91 Commits

Author SHA1 Message Date
Richard Leitner
a0de8a6fb8 oeqa/core/decorator: add skipIfInDataVar
skipIfInDataVar will skip a test if a value is in a certain variable.

(From OE-Core rev: 10b935c713748346aea6c36c2f41e0ae6c320821)

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-08-23 18:02:23 +01:00
Richard Purdie
b45f3ecc00 oeqa/runner: Print any errors/failures early
Its a pain to have to wait until oe-selftest finishes to see the
failures for example.

(From OE-Core rev: 4c499a1b10a0c2647b6a753b8f9cd934ae4ad0da)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-08-23 07:50:00 +01:00
Richard Purdie
af87cc83cf oeqa/runner: Use the proper logger functions instead of print()
(From OE-Core rev: 5ccd2284e5dd994230e9e229b7931d049c9f46c0)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-08-23 07:50:00 +01:00
Richard Purdie
f2288adb57 oeqa/context: Only set buffer mode for non-concurrent tests
Periodically we'd see:

NOTE: core-image-sato-1.0-r0 do_testsdk: ======================================================================
NOTE: core-image-sato-1.0-r0 do_testsdk: ERROR: broken-runner
NOTE: core-image-sato-1.0-r0 do_testsdk: ----------------------------------------------------------------------
NOTE: core-image-sato-1.0-r0 do_testsdk: testtools.testresult.real._StringException: Traceback (most recent call last):
  File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-mips/build/meta/lib/oeqa/core/utils/concurrencytest.py", line 122, in _run_test
    test.run(process_result)
  File "/usr/lib/python3.6/site-packages/subunit/__init__.py", line 1194, in run
    protocol = TestProtocolServer(result, self._passthrough, self._forward)
  File "/usr/lib/python3.6/site-packages/subunit/__init__.py", line 514, in __init__
    stream = stream.buffer
AttributeError: '_io.StringIO' object has no attribute 'buffer'

which seems to occur if a result arrives before all the runner threads
have started. The runner's result handling changes sys.stdout to a buffer
temporarily which can be seen in other threads and it can sometimes fail.

Since the tests are running in a separate process we don't need this buffer
handling in the concurrent case so only set when not parallelising. The
concurrent class handle setting buffer mode internally.

(From OE-Core rev: e2c66aa0f74d19fbc7e56af1fb440ad6473d3a8e)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-08-23 07:50:00 +01:00
Richard Purdie
c2e589ee0d oeqa/concurrencytest: Ensure subunit streams are flushed at exit
Without this, error output such as that in the teardown can be lost
and processes may recieve signals they're not expecting causing other
strange errors.

(From OE-Core rev: 1e3f44737a15feb3128ba7fc0dbe896dd8782e07)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-08-23 07:50:00 +01:00
Richard Purdie
1d4760a47f oeqa/loader: Ensure invalid test names don't trigger a traceback
oe-selftest -r <invalid test name>

currently triggers a traceback. Ensure this doesn't happen and the user gets a
sensible error message.

(From OE-Core rev: f2042bf3638ed4edfb167e7f7d4be6da60997ead)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-26 17:14:42 +01:00
Richard Purdie
928d6159ed oeqa/decorator: Improve reliability
Checking if the dependency had any failure is unreliable, for example
if the underlying data doesn't get transferred and the list is empty,
success of the dependency is assumed.

Since we now have success data available, change the code to use it.

(From OE-Core rev: 4abba4c30d5a6163a968a119395a679e5e281ab4)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-18 10:18:41 +01:00
Richard Purdie
f5975278e3 oeqa: Remove xmlrunner
This isn't present on modern distros by default and doesn't work with
testtools, needing multiple code paths in the code. Remove it in favour
of finding a better replacement for results collection/analysis.

(From OE-Core rev: 8001d933a8dc86004db014777f094d718086687d)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-18 10:18:41 +01:00
Richard Purdie
d9de34ce99 oeqa/runner: Simplify code
There doesn't appear to be any reason we need this _results indirection
any more so remove it.

(From OE-Core rev: b618261811c48ff3b98eab1b340a8cd09ef183c6)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-18 10:18:41 +01:00
Richard Purdie
4e4958cba2 oeqa/core/threaded: Remove in favour of using concurrenttests
We have several options for parallel processing in oeqa, parallel
execution of modules, threading and mulitple processes for the runners.

After much experimentation is appears the most scalable and least
invasive approach is multiple processes using concurrenttestsuite
from testtools. This means we can drop the current threading code
which is only used by the sdk test execution.

oeqa/decorator/depends: Remove threading code

Revert "oeqa/sdk: Enable usage of OEQA thread mode"
This reverts commit adc434c063.

Revert "oeqa/core/tests: Add tests of OEQA Threaded mode"
This reverts commit a4eef558c9.

Revert "oeqa/core/decorator/oetimeout: Add support for OEQA threaded mode"
This reverts commit d3d4ba902d.

(From OE-Core rev: a98ab5e560e73b6988512fbae5cefe9e42ceed53)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-18 10:18:41 +01:00
Richard Purdie
ebd97e728a oeqa: Add selftest parallelisation support
This allows oe-selftest to take a -j option which specifies how much test
parallelisation to use. Currently this is "module" based with each module
being split and run in a separate build directory. Further splitting could
be done but this seems a good compromise between test setup and parallelism.

You need python-testtools and python-subunit installed to use this but only
when the -j option is specified.

See notes posted to the openedmbedded-architecture list for more details
about the design choices here.

Some of this functionality may make more sense in the oeqa core ultimately.

(From OE-Core rev: 326ababfd620ae5ea29bf486b9d68ba3d60cad30)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-18 10:18:41 +01:00
Richard Purdie
6b219f64c4 oeqa: Default to buffer mode for tests
Currently some tests run in buffer mode and some don't. Those that don't can
corrupt stdout/stderr. Switch to using buffer mode everywhere so we're consistent.

If there is useful output on stdout/stderr, it will be displayed if the test
fails.

(From OE-Core rev: 978548c0abde2cb94c2782538552f39bdf2bf630)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-16 13:21:35 +01:00
Richard Purdie
75d5d0e873 oeqa/runner: Ensure we don't print misleading results output
The current code assumes if something isn't a failure of some
kind, it was a pass. When test case IDs weren't matching, this lead
to very confusing output where things would fail, then be listed as
passing.

This adds code to track successes, ensuring we don't end up in this
position again with unmatched entries being listed as UNKNOWN.

(From OE-Core rev: 4374c296d8963e4f6a1aa7bef7983ad0a1c2fcff)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-16 13:21:34 +01:00
Richard Purdie
754cf58700 oeqa/core/runner: Improve test case comparision
We can directly compare the test case IDs rather than representations,
then if we're using subunit to split the tests, the comparisions still
work as intended.

(From OE-Core rev: 72e5f46f75454ba4c445c65c1cbc616a9e72fc6e)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-16 13:21:34 +01:00
Chen Qi
6db8b6a777 oeqa/core/target/ssh.py: increase maximum read bytes from 1024 to 4096
When running testimage task for core-image-sato-sdk, the following
error appeared.

  UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 at position 0: invalid start byte

Checking the codes, I found it's caused by setting a 1024 limit for the
read method of the StreamReader object.

Comments from the manual:
"""
The chars argument indicates the number of decoded code points or bytes to
return. The read() method will never return more data than requested, but
it might return less, if there is not enough available.
"""

When running `systemctl status --full' on target, this error occurs.

This patch increase the bytes limit to 4096 to fix the error.

(From OE-Core rev: f1fad60ae3be4450aca6058d5665fb10a9148b44)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-06-04 15:15:00 +01:00
Chen Qi
395108faac oeqa/core/decorator/data.py: fix skipIfNotInDataVar
The var might not be set, resulting in unexpected error.

  RESULTS - multilib.MultilibTest.test_check_multilib_libc - Testcase 1593: ERROR

The above error is due to MULTILIBS being not set, which is the default
for OE. This patch fixes this problem.

Also, the debugging message in skipIfNotInDataVar is currently confusing.
Instead of
DEBUG: Checking if 'MULTILIBS' value is in 'multilib:lib32' to run the test
it should be
DEBUG: Checking if 'MULTILIBS' value contains 'multilib:lib32' to run the test

This patch also fixes it.

(From OE-Core rev: 3f5c678664a2bba43d99508779dc2ce227cf52a2)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-06-04 15:15:00 +01:00
Chen Qi
93bbc30fb9 oeqa/core/decorator/__init__.py: use 'cls' instead of 'obj'
Use 'cls' instead of 'obj' to better reflect that registerDecorator
actually serves as a class decorator.

(From OE-Core rev: e06e4c859e8be5225d80806a2ebe175f0b152fe1)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-06-04 15:15:00 +01:00
Chen Qi
a233b59fb0 oeqa/core/decorator/__init__.py: set metaclass to ABCMeta
OETestFilter is a subclass of OETestDecorator. It wants to make
use of @abstractmethod decorator. But such decorator requires
metaclass to be ABCMeta to have effect. So add it now to achieve
the designed behaviour.

Comments from python's manual:
"""
Using this decorator requires that the class's metaclass is ABCMeta
or is derived from it.
"""

(From OE-Core rev: 28c4fafb2322ea8c37bcd7710f22f46ef552a902)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-06-04 15:15:00 +01:00
Chen Qi
79b6e96682 oeqa/core/loader.py: support the 'auto' keyword
In previous OEQA, having 'auto' in TEST_SUITES results in executing
as many test cases as possible.

This behaviour is broken for now. From the codes in core/loader.py,
I can see that it tries to use another keyword 'all'. But in fact,
it does not work.

I've checked the current manual. The manual says using 'auto'.
Below is the current information in manual.

  """
  Alternatively, you can provide the "auto" option to have all applicable
  tests run against the image.

  TEST_SUITES_append = " auto"
  """

So we should restore this behaviour. This patch does so.

Also, output warning message is some module is named as 'auto', as this
is a reserved keyword.

(From OE-Core rev: a65460a063a958cc887c756db5f7ab18e3f5a8c1)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-06-04 15:15:00 +01:00
Leonardo Sandoval
28a1d1973d core/loader.py: fix regex to include all available test cases
Some test cases (eSDK.oeSDK*, runtime_test/*) does not match
with current regex, fix it accept all.

[YOCTO #12385]

(From OE-Core rev: 1ecf48fd286a77078451b67879a44f9c9dc7a894)

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-01-04 12:57:42 +00:00
Saul Wold
c27f5dc245 oeqa/qemu: remove elf image type
Since we are depercating the ELF image type, we should not test it
here either.

(From OE-Core rev: c0c10ae9f7e206ee156a68ddbed73c8820c37824)

Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-01-02 17:24:37 +00:00
Richard Purdie
c86e8900e8 oeqa/runner: Pass the value of buffer, don't force to True
The value could be False in which case we should pass that through.

(From OE-Core rev: d0a3379bbcbcd8153bd59ccdb56d40fff7ad6c6b)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-11 12:14:26 +00:00
Richard Purdie
fccc51596f oeqa/target/ssh: Drop command/output logging to debug level
This ensures the console is kept clear of confusing output but that
the main logs contain good debugging information.

(From OE-Core rev: caeb5dcfbd3c1d71f8e0eb78b3dd45d5ce349d25)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-09 12:24:24 +00:00
Richard Purdie
0e198a7311 oeqa: Clean up logger handling
The logger handling in oeqa was confused at best. This patch:

a) Passes in a logger through various qemu runner pieces
b) Uses that logger consistently in the code
c) Creates a logger for QemuRunner outside the bitbake namespace
   meaning we don't conflict with the tinfoil logging changes

The result of this is more consistency. For runtime tests in testimage,
the logs always contain the debug info, nothing is shwon on the console.
For the oe-selftests, logs are intercepted and only shown if the test
fails.

(From OE-Core rev: 4ff678137a55b93c9ba2cbffda34335ba859f704)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-09 12:24:24 +00:00
Richard Purdie
a3a122d2f5 oeqa/runqemu: Only show stdout/stderr upon test failure
In general we don't need to see the output of runqemu however if it fails
we do. Use the buffer option that already exists in TestResult but allow
us to trigger it on a per test basis.

(From OE-Core rev: 86bef95bccbe9dad3dc3445ea365439861966179)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-09 12:24:24 +00:00
Peter Kjellerstedt
b40d80993e oeqa/core/loader: Make _built_modules_dict() support packages correctly
For test modules in a package, e.g., oelib.license, running
`oe-selftest -r oelib.license` or `oe-selftest -r
oelib.license.TestSimpleCombinations` would fail with a message that
the specified test cases could not be found. This was due to the
parsing in _built_modules_dict(), which failed to distinguish between
<package>.<module>.<class> and <module>.<class>.<testcase> and treated
both cases as the latter.

(From OE-Core rev: 80db3d999ae26d298d9d5418a32b11a4f27af9d5)

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-08 22:24:03 +00:00
Robert Yang
b261fca0dc core/target/ssh.py: use reader to handle partial data
This can avoid UnicodeDecodeError error.

(From OE-Core rev: baa78420d8d8e716935852c9c7b749af0161395a)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-24 13:48:10 +01:00
Robert Yang
9fd9fae634 core/target/ssh.py: replace decode errors
There might be wild strings when read from target (especially when
reading ptest results), replace the errors to avoid breaking the test.

Fixed: (Not always happen)
$ bitbake core-image-sato -ctestimage
[snip]
    status, output = self.target.run('ptest-runner', 0)
  File "/buildarea/lyang1/poky/meta/lib/oeqa/core/target/ssh.py", line 84, in run
    status, output = self._run(sshCmd, processTimeout, True)
  File "/buildarea/lyang1/poky/meta/lib/oeqa/core/target/ssh.py", line 55, in _run
    status, output = SSHCall(command, self.logger, timeout)
  File "/buildarea/lyang1/poky/meta/lib/oeqa/core/target/ssh.py", line 258, in SSHCall
    run()
  File "/buildarea/lyang1/poky/meta/lib/oeqa/core/target/ssh.py", line 236, in run
    output = process.communicate()[0].decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 4906: invalid continuation byte

[YOCTO #11547]

(From OE-Core rev: d0d2f892f0bed6adb5ec6fb59d64efcc97c83e19)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-23 14:16:01 +01:00
Leonardo Sandoval
5ec91f9a32 context: Include a command line argument to run all except certain tests
A new command line argument (-R, which is the oposite of current -r) that allows
to run all test cases except the ones indicated through the command line.

Some command line examples:

* Run all except the distro test case:
$ oe-selftest -R distrodata

* Run all except the archiver test case and a single bblayers unit test
$ oe-selftest -R archiver bblayers.BitbakeLayers.test_bitbakelayers_add_remove

[YOCTO #11847]

(From OE-Core rev: e40eeaa790b95d9c25832405c0b0d5b3a0d0292b)

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-13 09:27:37 +01:00
Aníbal Limón
0f0368d052 oeqa/core/runner: OEStreamLogger don't buffer test execution writes
Since OEQA framework uses Python logging functionality to report test
results there is a class that wraps PyUnit writes into logging commands
(OEStreamLogger), so don't buffer the actual test execution to have
insight of what is currently executing.

This fix will change a little the test output format adding an '\n'
previous the test result, for example:

From:

test_nonmatching_checksum (lic_checksum.LicenseTests) ... ok

To:

test_nonmatching_checksum (lic_checksum.LicenseTests)
 ... ok

This is because the new line added by the PyUnit StreamLogger because
currently we don't have a manner to identify when a test execution
starts at report level (write msg).

[YOCTO #11827]

(From OE-Core rev: 4c2276469f58a88f864eb374c00dbbaace702de4)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-30 08:46:19 +01:00
Aníbal Limón
2d50f153b5 oeqa/{core,selftest}: Add support to validate if a specified test case isn't found
If some test module/case is specified to run and isn't found the OEQA
framework didn't notice it, so complete the implementation using
modules_required and validate for the test case prescense.

Raise an exception when the test module/case required isn't found.

[YOCTO #11645]

(From OE-Core rev: e50b415aaaa1581473f85f0a8afa278b5f95129b)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-30 08:46:19 +01:00
Aníbal Limón
bec45829e3 oeqa/core/loader: Generate function _make_failed_test dynamically
Python versions has different features from branches 3.4.x, 3.5.x and
3.6.x, i expected in wrong mode that was incremental for example changes
in 3.4.4 be in 3.5.x but that's not true.

The _make_failed_test internal method differs and is only available in
certain versions >= 3.4.4 and in 3.5.x and 3.6.x branches but not
realeses have been made including it.

So to avoid futher problems inspect the _make_failed_test and generates
function definition according what parameters are needed, the unique
supossition is that exception argument is always passed.

Related to,
http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=d8380d098a290510b442a7abd2dd5a50cabf5844

(From OE-Core rev: b4740d2b325a80bcecc5e56dff9add9081fcd31b)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-21 08:44:25 +01:00
Aníbal Limón
d8380d098a oeqa/core/loader.py: Fix _make_failed_test for python >= 3.4.4
Python unittest change the signature of the _make_failed_test
after python 3.4.4 don't pass the method name.

(From OE-Core rev: 767b68e6ca22512ff80e6fbc42154f3f0c2206c0)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-23 11:44:12 +01:00
Aníbal Limón
aa6e333de9 oeqa/core/threaded: Don't assume that results exists on logDetails
(From OE-Core rev: 7beed75c97a78e945e44a55b28f0f463cd6c8dcd)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-23 11:44:12 +01:00
Aníbal Limón
77a358e41e oeqa/core/loader: Use full and small module name on filtering
The small module name was added to support run a whole suite that
has more that 3 levels in the test case name, but this broke the
behaviour for use a full test case name.

[YOCTO #11632]

(From OE-Core rev: 9ab20ceb5801bee8dd8b218b3928720da5e1d403)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-13 10:46:34 +01:00
Aníbal Limón
3c5c8ccee1 oeqa/core/runner: Don't log details twice if test fails
The details of a test failure is upper on the unittest output
so don't log twice the actual failure.

[YOCTO #11622]

(From OE-Core rev: 0f2e81c2a4458ad0ec6bab2710952ac2c2bbf1af)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-13 10:46:34 +01:00
Aníbal Limón
0b168b269b oeqa/core/loader: Allow unittest.TestCase's to be executed
Currently there was a restriction to only execute tests that's
inherits from OETestCase but in some circunstancies the features
from the OEQA framework isn't needed so we need to support
basic unittests.

[YOCTO #10828]

(From OE-Core rev: baac26f1b36e89e07637b738dd31ec7356f05a02)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-12 15:08:30 +01:00
Aníbal Limón
652df69b02 oeqa/core/loader: Fix filtering on test modules with submodules
Our filtering allows to specify which tests to run using,

<module_name>.[test_class].[test_name]

But the module name logic was restricted to only accept one level,
for example: runtime_test vs oelib.types, to support multiple
submodules use only the first part for filtering.

This allows to run the whole tests in a module with more than tree
levels.

Due to the ambiguity on the test filtering options with test cases
with more than tree levels the supported sytnax is,

<module>

or

<module>.[submoduleN].[test_class].[test_name]

[YOCTO #11632]

(From OE-Core rev: cf2ee12b007e5570959ccfbb643159b21d90426e)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-12 15:08:30 +01:00
Aníbal Limón
e9a6fd9e97 oeqa: Change the order to logDetails and logSummary
Is better to log the summary at end to see in an easy way
the actual result of the test run.

[YOCTO #11622]

(From OE-Core rev: 4e3ab36e8c90abc740cce1ba31faf6595116e1e2)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-09 17:12:15 +01:00
Anibal Limon
cfa8245e0e oeqa/core/loader: Call parent init method in OETestLoader
After Python 3.5 the init method contains initialization of
_loading_packages set to avoid infinite loops in recursive
loading.

Fix,

Traceback (most recent call last):
  File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/scripts/oe-selftest", line 70, in <module>
    ret = main()
  File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/scripts/oe-selftest", line 57, in main
    results = args.func(logger, args)
  File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/meta/lib/oeqa/selftest/context.py", line 214, in run
    rc = self._internal_run(logger, args)
  File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/meta/lib/oeqa/selftest/context.py", line 175, in _internal_run
    self.tc.loadTests(self.module_paths, **self.tc_kwargs['load'])
  File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/meta/lib/oeqa/core/context.py", line 51, in loadTests
    self.suites = self.loader.discover()
  File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/meta/lib/oeqa/core/loader.py", line 268, in discover
    pattern='*.py', top_level_dir=path)
  File "/usr/lib/python3.5/unittest/loader.py", line 341, in discover
    tests = list(self._find_tests(start_dir, pattern))
  File "/usr/lib/python3.5/unittest/loader.py", line 398, in _find_tests
    full_path, pattern, namespace)
  File "/usr/lib/python3.5/unittest/loader.py", line 473, in _find_test_path
    self._loading_packages.add(name)
AttributeError: 'OETestLoader' object has no attribute '_loading_packages'

(From OE-Core rev: 17b832ba05d640570a773adbff2fa4e9ff83fce3)

Signed-off-by: Anibal Limon <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-06 19:02:44 +01:00
Aníbal Limón
7c8f3c3980 scripts/oe-test: Move load_test_components to oeqa.utils
In order to maintain compatibility with oe-selftest, the
load_test_components needs to be re-used, so the script
executor needs to pass to only load components supported
by certain script (oe-test, oe-selftest).

(From OE-Core rev: d6b78ae711b93b4059690320cb8d821aaadd1684)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-06 19:02:43 +01:00
Randy MacLeod
a89fe5ec17 oeqa/core: Improve grammar in README and loader comments
(From OE-Core rev: 48cd7ff7ae61ca5772a42ece9fce51976dd0d790)

Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 09:19:51 +01:00
Leonardo Sandoval
60ade6074e oeqa/core/context: Include a _pre_run method
This pre runner will serve to allow Test components executes code
previously of the run a suite.

(From OE-Core rev: bafb7e221d40d7a87a02cec8a97d98eec7c23438)

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-02 13:36:14 +01:00
Leonardo Sandoval
5e0efc9942 oeqa/core/context: Omit docstring output on XMLResult
By default, the xml runner class prints out the docstring for every
unit test but it order to keep the same format as the standard
runner, avoid docstring output setting descriptions to False.

(From OE-Core rev: 05b16219698fbd30ec76697e1b3be6d31e8f8878)

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-02 13:36:14 +01:00
Leonardo Sandoval
542831e3d5 oeqa/core/context: Use a default iterable modules object
The OETestLoader.modules must be an iterable object, otherwise
checking presence of specific modules with the 'in' operator fails
with the following command/error:

    % oe-test core
    .. - core - INFO - Running bitbake -p
    Traceback (most recent call last):
      File "..poky2/scripts/oe-test", line 108, in <module>
        ret = main()
      File "..poky2/scripts/oe-test", line 93, in main
        results = args.func(logger, args)
      File "..poky2/meta/lib/oeqa/core/context.py", line 235, in run
        self.tc.loadTests(self.module_paths, **self.tc_kwargs['load'])
      File "..poky2/meta/lib/oeqa/core/context.py", line 53, in loadTests
        self.suites = self.loader.discover()
      File "..poky2/meta/lib/oeqa/core/loader.py", line 204, in discover
        pattern='*.py', top_level_dir=path)
      File "/usr/lib64/python3.4/unittest/loader.py", line 275, in discover
        tests = list(self._find_tests(start_dir, pattern))
      File "/usr/lib64/python3.4/unittest/loader.py", line 339, in _find_tests
        yield self.loadTestsFromModule(module)
      File "..poky2/meta/lib/oeqa/core/loader.py", line 266, in loadTestsFromModule
        and module.__name__ in self.modules \
    TypeError: argument of type 'NoneType' is not iterable

(From OE-Core rev: 2bb02cd3d6ec6c2c22ab6b567e2985015655fae6)

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-02 13:36:14 +01:00
Leonardo Sandoval
dedb6ba63b oeqa/core/context: Raise exception when a manifest is specified but missing
(From OE-Core rev: e7458dd24cb7464852fb7f5357d9108d5c052fa6)

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-02 13:36:14 +01:00
Leonardo Sandoval
de06dd1e49 oeqa/core/case: fix typo on comment about exception name
(From OE-Core rev: 943a2a30e84660b412df4f1d60fb7e2e46764c50)

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-02 13:36:14 +01:00
Leonardo Sandoval
1974a68926 oeqa/core/README: Improve documentation
Most of the text include on this text refactor came from [1].

[1] http://lists.openembedded.org/pipermail/openembedded-architecture/2016-December/000351.html

(From OE-Core rev: 77635ffa3b621add9894ed247dafe146f4af1e84)

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-02 13:36:14 +01:00
Aníbal Limón
c746ee11ec oeqa/core: Add support for run tests by module, class and name
This will enable only run certain module tests and filter by
class and test name.

(From OE-Core rev: 0f7531803aa6ffef2b7c5be9acee3efe7d2974ef)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-02 13:36:14 +01:00
Aníbal Limón
49223c47fc oeqa/core: Add list tests support in context and runner
A common operation is to list tests, currently only selftest
support it, this changes enables this functionality into the
core framework.

(From OE-Core rev: 7e803f1a855d3091a772b13efd3cc8e9c0c766e9)

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-02 13:36:14 +01:00