summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa
AgeCommit message (Collapse)Author
2023-10-27recipetool: add python_hatchling supportlucaceresoli/master-nextTim Orling
One of the newer PEP-517 backends to be added was python_hatchling.bbclass but it was not included in the recent improvements. Add selftest for 'jsonschema' pypi package. Signed-off-by: Tim Orling <tim.orling@konsulko.com> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
2023-10-27selftest/sstatetests: add a test for CDN sstate cacheAlexander Kanavin
Specifically, the test checks that everything needed for building standard oe-core images for x86_64 and arm64 is available from the cache (with minor exceptions). Going forward, a complete world check could be enabled and additional configurations, but that requires improvements to performance of hash equivalence server in particular. Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
2023-10-27lib/oe/sstatesig.py: dump locked.sigs.inc only when explicitly asked via -S ↵Alexander Kanavin
lockedsigs This was writing out locked-sigs.inc into cwd with every 'bitbake -S' invocation. When the intent is only to to get task stamps (-S none), or print the difference between them (-S printdiff), the file is unnecessary clutter. A couple of selftests/scripts were however relying on this, so they're adjusted to explicitly request the file. eSDK code calls dump_lockedsigs() separately via oe.copy_buildsystem.generate_locked_sigs() and so isn't affected. Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-27selftest/sstatetests: add tests for 'bitbake -S printdiff'Alexander Kanavin
'bitbake -S printdiff' is a useful diagnostic facility for finding out why sstate is not being reused, but until now it had no tests that would ensure it works. This commit adds three basic scenarios: 1. make a change in a really basic, common recipe that is at the very root of dependency trees (quilt-native), and ensure that change is correctly discovered when building an image. 2. make a change in gcc-source recipe, which is somewhat special (operates in work-shared), and ensure that gcc-runtime builds track that down as well. 3. make a change in base_do_configure() definition from base.bbclass, which is not recipe-specific, but affects many basic recipes, and ensure that is correctly reported as well. The test itself actually runs twice: - first against a fully populated build directory, where the printdiff code is guaranteed to find the correct previous stamp that can be compared with in a predictable manner. - then in an empty build directory where the printdiff code goes to look in the sstate cache, and so the existence of the previous signature can be tested, but not the difference with it (what the exact difference would be is unpredictable as the sstate cache is indeed shared between many builds). Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-27oeqa/selftest/recipetool: add selftest for PEP-517 recipe creationJulien Stephan
Add 3 tests to check the creation of PEP-517 project using the 3 backends supported by bitbake: - setuptools.build_meta - poetry.core.masonry.api - flit_core.buildapi Theses tests requires the tomllib python module, so skip theses tests if module is not present. tomllib module is part of python starting from 3.11 Signed-off-by: Julien Stephan <jstephan@baylibre.com> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-27recipetool/create_buildsys_python: prefix created recipes with python3-Julien Stephan
By convention, all python recipes start with "python3-" so update create_buildsys_python to do this This rule doesn't apply for packages already starting with "python" Update recipetool's selftest accordingly Signed-off-by: Julien Stephan <jstephan@baylibre.com> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-27oeqa/selftest/devtool: remove spaces on empty lineJulien Stephan
Signed-off-by: Julien Stephan <jstephan@baylibre.com> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-27oeqa/selftest/devtool: abort if a local workspace already existJulien Stephan
if user run devtool selftests with a local workspacelayer the tests fail with various error such as: - devtool.DevtoolAddTests.test_devtool_add just hangs - devtool.DevtoolModifyTests.* fail with the following error: ERROR: Found duplicated BBFILE_COLLECTIONS 'workspacelayer', check bblayers.conf or layer.conf to fix it. Found duplicated BBFILE_COLLECTIONS 'workspacelayer', check bblayers.conf or layer.conf to fix it. Check if a workspacelayer exists, warn the user and abort the tests Signed-off-by: Julien Stephan <jstephan@baylibre.com> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-26oeqa/runtime/cases/parselogs: remove "edgerouter" caseMichael Opdenacker
The "edgerouter" machine has been removed since https://git.yoctoproject.org/poky/commit/?id=0c64d0e4317e3749f7f7ed9ecd5d08bbb0cedc9e Signed-off-by: Michael Opdenacker <michael.opdenacker@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-20selftest/buildoptions: tag the download mirror test with 'yocto-mirrors'Alexander Kanavin
This will allow bundling all yocto mirror tests together, both for the purposes of running only them specifically, and excluding them from 'general' oe-selftest runs. There is an upcoming test for sstate cache served over content delivery network which will use the same tag, so it can be run together with this. Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-19oeqa/sdk/rust: Add build and run test of rust binary with SDK hostSean Nyekjaer
Add a QA test to the SDK to test that a basic cargo build works for the SDK host. Signed-off-by: Sean Nyekjaer <sean@geanix.com> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
2023-10-15oeqa/qemurunner: Drop newlines serial workaroundRichard Purdie
Drop the newlines serial workaround, it doesn't seem to fix things enough of the time to be useful. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-13reproducible: Exclude rust for now againRichard Purdie
Unfortunately there is still an issue with rustdoc not being reproducible so part of the problem has been fixed but not everything. Add the exclusion back until this has been addressed to avoid autobuilder failures and long diffoscope analysis time. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-11oeqa/runtime/_qemutiny: rewrite test to be functionalRoss Burton
The _qemutiny is a small test case that was explicitly designed to do a minimal level of testing for poky-tiny images. These typically don't have SSH servers so we need to assume that qemu is being used and access the serial console directly. Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-11oeqa/selftest: don't skip test_read_only_image on qemuarm64Ross Burton
There's no need to skip this test anymore, as skipping on qemuarm64 was a proxy for "uses SERIAL_CONSOLES_CHECK" which no longer exists. [ YOCTO #14962 ] Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-11oeqa/utils/gitarchive: ensure tag matches regex before getting its fieldsAlexis Lothoré
Whenever we ask gitarchive to retrieve test results for specific revisions, we first do a "large" search in get_tags, which uses glob patterns with git ls-remote, and then we filter received tags with a regex to parse the tags fields. Currently gitarchive assumes that all tags returned by get_tags will match the regex. This assumption is wrong (for example searching "master-next" in get_tags may return some tags like "abelloni/master-next), and leads then to exception when we try to retrieve tags fields: Traceback (most recent call last): File "/home/pokybuild/yocto-worker/a-full/build/scripts/resulttool", line 78, in <module> sys.exit(main()) ^^^^^^ File "/home/pokybuild/yocto-worker/a-full/build/scripts/resulttool", line 72, in main ret = args.func(args, logger) ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/pokybuild/yocto-worker/a-full/build/scripts/lib/resulttool/regression.py", line 315, in regression_git revs2 = gitarchive.get_test_revs(logger, repo, tag_name, branch=args.branch2) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/pokybuild/yocto-worker/a-full/build/meta/lib/oeqa/utils/gitarchive.py", line 246, in get_test_revs fields, runs = get_test_runs(log, repo, tag_name, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/pokybuild/yocto-worker/a-full/build/meta/lib/oeqa/utils/gitarchive.py", line 238, in get_test_runs groups = m.groupdict() Fix this exception by merely skipping those additionals tags which won't match the regex Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-11oeqa/utils/gitarchive: fix tag pattern searchingAlexis Lothoré
Whenever we ask gitarchive to search for tags, we can provide it with a pattern (containing glob patterns). However, when searching for example for tags matching branch master-next, it can find more tags which does not correspond exactly to branch master-next (e.g. abelloni/master-next tags will match). Prevent those additional tags from being fetched by gitarchive by using a more specific pattern: prefix user-provided pattern with "refs/tags" Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-11oeqa/qemurunner: Ensure we retry after BrokenPipeErrorRichard Purdie
If the BrokenPipeError occurs when writing to the serial port to wake it up, defer the write and try again (which will happen on the 5s timeout of the select call). Why it should return ESHUTDOWN and then work later I'm not sure but it does appear to make it work. For now we need 'working' QA tests whilst the issue is debugged. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-11rust: reproducibility issue fixSundeep KOKKONDA
The '--remap-path-prefix' option removes all references to build directory structure in the debug information within the compiled output for Cargo dependencies and the project's binary. However, some references to build directories remains in the final binary in .rustc section in the form of compressed metadata and this makes the build output dependent on the folder structure of the computer it's compiled on. So, for reproducible builds, use the configuration option 'remap-debuginfo = true' along with the '--remap-path-prefix'. [YOCTO# 14875] Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-10oeqa/qemurunner: Add extra logging when console doesn't appearRichard Purdie
If the console doesn't appear, breifly sleep and try an extra read. This is a useful debugging trick which we may as well preserve in the code. We're already failing at this point so extra data is useful. This means if we perturb things on the other port, we may gain useful logging insight. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-10runqemu/qemurunner: Use nodelay with tcp serial connectionsRichard Purdie
This disables Nagle's algorithm for our tcp serial connections which may be causing data transfer issues. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-10oeqa/qemurunner: Add newlines serial workaroundRichard Purdie
We're struggling with the 6.5 kernel as the serial port getty doesn't appears sometimes leading to failures in CI. Add a workaround of sending some newlines as a way of unblocking the kernel/release issues whilst we try and work out how to get to the bottom of the issue. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-09oeqa/selftest/bblock: add self test for bblock toolJulien Stephan
it implements various combination of locking single/multiple recipe(s)/task(s) it also tests that locked sig are architecture dependant Signed-off-by: Julien Stephan <jstephan@baylibre.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2023-10-08qemurunner.py: detect login prompt without without utf-8 conversionMikko Rapeli
In case utf-8 conversion of the serial console data is flaky due to bad characters in the stream. Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2023-10-05oeqa/concurrencytest: Remove invalid buffering optionRichard Purdie
Fix warnings from oe-selftest -j: /usr/lib/python3.10/os.py:1030: RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used return io.open(fd, mode, buffering, encoding, *args, **kwargs) Remove the option since it clearly doesn't do much. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-04qemurunner: Show both the login console log and all logging upon failureRichard Purdie
It is unclear when things fail which output was on which serial port. Improve the output to show the last lines of both data to improve debugging. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-04qemurunner: Log the second serial console as well as the firstRichard Purdie
To aid debugging, always log the second serial console as well as the first to a seperate log file. This should make it clearer what happened when we see test failures. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-04qemurunner: Use backslashreplace with utf8 to make invalid characters clearRichard Purdie
Switch to the backslashreplace error handling when decoding strings so that invalid characters are clear in the stream to improve debugging. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-10-04qemurunner: Skip conversion from/to binary data for logfileRichard Purdie
There is no point in decoding binary data only to encode it again risking conversion issues. Write the raw data to the log file as binary and skip the conversion. Also always update self.msg even if a logfile isn't specified to improve logging/debug. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-28oeqa/utils/gitarchive: Handle broken commit counts in results repoRichard Purdie
The test results repository contains tags like: master/64501-g65c94ca3196e5ef3344a469fea8e30444f2e967a/0 master/1-g65c94ca3196e5ef3344a469fea8e30444f2e967a/3 master/1-g65c94ca3196e5ef3344a469fea8e30444f2e967a/2 master/1-g65c94ca3196e5ef3344a469fea8e30444f2e967a/1 master/1-g65c94ca3196e5ef3344a469fea8e30444f2e967a/0 where the commit count is correct in one case and not in the others. This causes assertion errors in the current code. Add in some code to work around these historical issues where the commit counts are low. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2023-09-27qa: Add selftest for python3-spdx-toolsSamantha Jalabert
Signed-off-by: Marta Rybczynska <mrybczynska@syslinbit.com> Signed-off-by: Samantha Jalabert <samantha.jalabert@syslinbit.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-26oeqa/runtime/parselogs: parse the logs with Python, not grepRoss Burton
Instead of constructing huge grep statements, we can simply open the logs in Python and do the relevant string operations directly. The trick is to remember to casefold() all of the strings, so that the "in" operator can be used. Just one of the ignores needs to be adjusted because it uses a regular expression and the new logic doesn't support that. This is handled by simply reducing the size of the ignore match. Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-26oeqa/runtime/parselogs: select the correct machine-specific ignores earlyRoss Burton
This has no impact to the execution, but makes the following changes neater. Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-26oeqa/runtime/parselogs: move some variables out of global scopeRoss Burton
errors and log_locations can be trivially set in the class directly, instead of being defined in the module and then copied into the class. Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-26oeqa/runtime/parselogs: don't pass around membersRoss Burton
There's no point in passing around member fields, just access them directly. Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-26oeqa/runtime/parselogs: improve find callRoss Burton
getLogList() uses remote find invocations to find the logs. Instead of relying on shell expansion of wildcards and redundant use of -maxdepth (pointless as the shell expansion means the find is passed the files to return), invoke find idiomatically by telling it what directory to search for and escape the glob so find processes it. Also remove many pointless str() calls. Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-26oeqa: Use 2.14 release of cpio instead of 2.13Khem Raj
2.13 may not be buildable with latest compilers without patching Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-26oeqa/runner: Ensure class setup errors are shown to bitbake loggingRichard Purdie
This took a bit of digging but failure messages from testimage are shown to bitbake's logging through stopTest. In the case of a setUpClass failure stopTest is never called and the bitbake logging never sees the error. It would still be in the task logfile. Add some code+comment to ensure logs not shown to the user mid stream are shown at the end. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-22oeqa/selftest/oescripts: Avoid variable access at module loadRichard Purdie
Using get_bb_var in the class setup leads to slow startup of oe-selftest. Move the calls into setupClass instead to remove the overhead at the expense of some code duplication. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-22oeqa: Streamline oe-selftest startup timeRichard Purdie
"bitbake -e" executions from get_bb_var calls are slow and slow down oe-selftest startup. Rationalise the code to avoid them and minimise the number of "parsing" locations we use by caching key variables and passing them around more. This was particularly problematic with oe-selftest -j usage since it would have multiple bitbake -e executions per process making parallel usage particularly slow. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-22oeqa/selftest/reproducible: Avoid oe-selftest startup delaysRichard Purdie
Currently the bb_get_var calls trigger multiple "bitbake -e" executions which slow the start of oe-selftest for any test. Rework the code to avoid these delays. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-22oeqa/selftest: Fix broken symlink removal handlingRichard Purdie
The test above this removal correctly looks at symlinks however to remove a symlink we should call unlink(), not remove(). This avoids some build failures/tracebacks. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-22oeqa/runtime/parselogs: inline single-caller functionsRoss Burton
There's no need to have one-liner functions to get the MACHINE or WORKDIR when they're only called once. Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-22oeqa/runtime/parselogs: remove obsolete LSB testing supportRoss Burton
The LSB compliance tests were removed in 2019[1], so this is obsolete. [1] oe-core fb064356 Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-22oeqa/runtime/parselogs: don't bother to show target hardware informationRoss Burton
This information is pretty useless as we know what the target is from the build configuration (be it a qemu machine or real hardware). Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-22oeqa/runtime/parselogs: remove unused importsRoss Burton
Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-20oeqa/selftest/bbtests: Improve and update test_non_gplv3Richard Purdie
This test no longer worked with fixes to avoid overlapping license files in deploy. Fix the test but also improve the logging messages so we don't get "False is not True" messages upon failure. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-20oeqa/selftest/wic: Improve assertTrue callsRichard Purdie
assertTrue is a problematic call use in test cases since when it fails, you just get an unhelpful "False is not True" message. Replace some uses with assertIn/assertNotIn which will give more helpful results and for the rest, add msg entries which given more helpful debugging. For example, this patch would help debugging of #15176. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-18go-helloworld: update to latest revisionAlexander Kanavin
Fix up test case to match what binary prints. Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-18ptest: report tests that were killed on timeoutAlexander Kanavin
I'm not sure if this was reported correctly before, but it currently is not. Test that is stuck is an error in itself. Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>