Commit Graph

12 Commits

Author SHA1 Message Date
Alexander Kanavin
fda81f7c20 selftest/rust: correctly form the PATH environment variable
There were two issues here:

- the path to native python was not included, so the test
suite was running with host python, causing failures due to
host python being given native libraries:
https://autobuilder.yoctoproject.org/typhoon/#/builders/148/builds/1711/steps/12/logs/stdio
(rust recipe uses native python throughout)

- tmp/hosttools was listead ahead of native-sysroot/usr/bin

(From OE-Core rev: 72156282059aa5a013a386eb95f89dc38726326e)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit aec96b5aec8d6b4a5ae8a719ca05bb727a6197cb)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-02-12 06:25:37 -08:00
Ross Burton
48ac27c8dc oeqa/selftest/rust: skip on all MIPS platforms
As per "The rustc book"[1], mips*-unknown-linux-* are "tier 3" targets:

  Tier 3 targets are those which the Rust codebase has support for, but
  which the Rust project does not build or test automatically, so they
  may or may not work.

We already skip qemumips in this selftest, but we're now also seeing
failures with qemumips64 so refactor the test to skip all machines where
the architecture is mips or mips64.

[1] https://doc.rust-lang.org/nightly/rustc/platform-support.html

(From OE-Core rev: 681f5ea8d6a5050aebfb1f656da9ba679433e366)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 177e268811c04260923ac4b16fa047315304add0)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
2025-02-12 06:25:37 -08:00
Richard Purdie
c59d570024 oeqa/selftest/rust: Simplify the rust testsuite output gathering/processing
The rust testsuite was redirecting command output to a file, which made it
hard to debug failure cases since the logs were not available to print to
the console.

Rework the code so it uses the existing popen logging and hence allows us
to improve the error logging situation and make debugging failures easier.

(From OE-Core rev: ac82dc43b8151ed34c4ad51e9ab7f4a612990486)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-02-23 14:29:03 +00:00
Richard Purdie
c754218614 oeqa/selftest/rust: Exclude failing riscv tests
The rust tests nearly pass for qemurisv64, add the remaining ones to the
exclusion list so it matches everythig else in exlcuding all the know
to break cases.

(From OE-Core rev: 1d6c6e4418c9865a4aeae627e0f130b2181d3657)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-02-18 17:38:47 +00:00
Yash Shinde
bb630c3e29 rust: Enable rust oe-selftest.
* Enable rust oe-selftest.

* Include the dependent patches for rust oe-selftest in
  meta/recipes-devtools/rust/rust-source.inc

* Disable rust oe-selftest for mips32 target (Rust upstream has classified it into tier 3 target,
  for which the Rust project does not build or test automatically) as it is unstable with rust tests.
  https://doc.rust-lang.org/nightly/rustc/platform-support.html#tier-3

* The testing is done on arm32, arm64, mips64, x86 and  x86_64 targets on Ubuntu 22.04.

(From OE-Core rev: 8f3a2841540fc4779bbd7e11d910edcdc8b47683)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-01-26 14:06:55 +00:00
Yash Shinde
a6982bb6a4 rust: Remove the test cases whose parent dir is also present in the exclude list
To avoid overlap and redundancy of rust tests, remove the test cases whose
parent dir is already excluded.

Tests which are failing from below dirs are removed as these dirs are
already present in exclude list
            tests/run-make
            tests/rustdoc
            tests/mir-opt
            tests/ui-fulldeps

(From OE-Core rev: 58a7f3efa9e31e2c7b90e6490f3e51f388e6a7ce)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-01-26 14:06:55 +00:00
Yash Shinde
30872876dc rust: Add new tests in the exclude list for rust oe-selftest
Add newly failing tests cases in the exclude list for
rust oe-selftest.

(From OE-Core rev: 50119ddaaa810ad71063691fb1cc30cf8c8456c8)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-01-26 14:06:55 +00:00
Yash Shinde
7a20381430 rust: Disable rust oe-selftest
After rust is upgraded to 1.71 and later versions, the rust oe-selftest gives
build errors due to unstable nightly options(see the error mentioned below). Thus, disable the test suite
until the issue is fixed

error: the option `Z` is only accepted on the nightly compiler
thread 'main' panicked at 'failed to gather the target spec for x86_64-poky-linux-gnu', synthetic_targets.rs:66:9

Following issues are created in Yocto bugzilla and rust upstream to track this issue-

https://bugzilla.yoctoproject.org/show_bug.cgi?id=15275
https://github.com/rust-lang/rust/issues/115642
https://users.rust-lang.org/t/does-rust-test-suite-supports-nightly-options-during-bootstrapping-in-rust/103108
https://users.rust-lang.org/t/unable-to-read-target-specs-when-rust-1-73-is-bootstrapped-in-yocto-poky/102959

(From OE-Core rev: fa2d3cda8f7f932c0ed5c534c4bc820af2761cd5)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-12-13 11:49:42 +00:00
Richard Purdie
5d65d26db3 oeqa/selftest/rust: Round test execution time to integer
To match the other tests, round the test duration to an intger value
so the test reports are consistent.

(From OE-Core rev: c5be3b22a7d5b3f211080ecdf05a077f8b413ef2)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-07-30 07:54:44 +01:00
Yash Shinde
c496b1eaf4 oeqa/selftest/rust: Add failed test cases to exclude list for Rust Oe-selftest
* Add the failing test cases in exclude_list to exclude them from testing during the Rust Oe-selftest.

* Drop  meta/recipes-devtools/rust/files/rust-oe-selftest.patch file as the failing tests are
  moved from being a patch to exclude_list in meta/lib/oeqa/selftest/cases/rust.py.

* When updating to a newer version of Rust, it is manually needed to update the exclude_list. The tests that fail are observed to
  work on some versions and fail on others. These tests have been excluded in order to successfully complete testing of Rust Oe-selftest.

* The tests that are passed and skipped are as follows-

Target                  PASS                    SKIPPED

ARM                     15507                    428
ARM64                   15535                    400
MIPS64                  15479                    456
X86                     15528                    407
X86-64                  15643                    292

Also, time the test execution and pass the time taken for inclusion in the test report.

[RP: Note duration addiion in the commit log]
(From OE-Core rev: e81197c4d3b36e9ad52e56708c21987cacd13147)

Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-07-30 07:54:44 +01:00
Richard Purdie
07a65a3dec oeqa/selftest/rust: Various fixes to work correctly
* Ensure the test/class naming doesn't allow the to be triggered
  without the toolchain decorator

* Add the toolchain-user decorator so it runs on non-IA targets

* Strip the leading "[XX] " prefix from the test names

* Ensure skipped test counts are passed through correctly (as SKIPPED, not SKIP)

* Avoid duplicate test results and show a warning if any are found (duplicates
  were from other sources in the end but the code remains sensible to have)

(From OE-Core rev: b1718ce5b2b2db35a8e1c88087deee41f99094b4)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-07-19 18:00:32 +01:00
Yash Shinde
a1096d4a57 oeqa/selftest: Add rust selftests
The patch implements Rust testing framework similar to other selftest,
specifically the gcc selftest in OE. It uses the client and server
based method to test the binaries for cross-target on the image.
The test framework is a wrapper around the Rust build system as ./x.py
test. It tests many functionalities of Rust distribution like tools,
documentation, libraries, packages, tools, Cargo, Crater etc.
Please refer the following link for detailed description of Rust
testing:-
https://rustc-dev-guide.rust-lang.org/tests/intro.html#tool-tests

To support the rust tests in oe-core, the following functions were
added:-
setup_cargo_environment(): Build bootstrap and some early stage tools.
do_rust_setup_snapshot(): Install the snapshot version of rust binaries.
do_configure(): To generate config.toml
do_compile(): To build "remote-test-server" for qemu target image.

Approximate Number of Tests Run in the Rust Testsuite :- 18000
Approximate Number of Tests that FAIL in bitbake environment :- 100-150
Normally majority of the testcases are present in major folder "test/"
It contributes to more than 80% of the testcases present in Rust test
framework. These tests pass as expected on any Rust versions without
much fuss. The tests that fail are of less important and contribute to
less than 2% of the total testcases. These minor tests are observed to
work on some versions and fail on others. They have to be added, ignored
or excluded for different versions as per the behavior.
These tests have been ignored or excluded in the Rust selftest
environment to generate success of completing the testsuite.

These tests work in parallel mode even in the skipped test mode as
expected. Although the patch to disable tests is large, it is very simple
in that it only disables tests. When updating to a newer version of Rust,
the patch can usually be ported in a day.

Tested for X86, X86-64, ARM, ARM64 and MIPS64 on Ubuntu 22.04.
(From OE-Core rev: 7c3346d8fbe85302b605bb3f772b029ea7bfaa6c)

Signed-off-by: pgowda <pgowda.cve@gmail.com>
Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com>
Signed-off-by: Yash Shinde <yashinde145@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-07-19 18:00:32 +01:00