From: Yoann Congal Date: Fri, 13 Mar 2026 15:59:15 +0000 (-0700) Subject: selftest/cases/runtime_test: Add test for Linux Rust sample X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=01ea2b2add3c0e87a4a23c9d2dabee8a46b60702;p=thirdparty%2Fopenembedded%2Fopenembedded-core.git selftest/cases/runtime_test: Add test for Linux Rust sample This new case tests that the rust_mininal sample inside the kernel source tree is buildable and works properly: check that the module can be loaded and that it prints correctly. Signed-off-by: Yoann Congal Signed-off-by: Harish Sadineni Signed-off-by: Richard Purdie --- diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py index 22b1048838..46d4e99207 100644 --- a/meta/lib/oeqa/selftest/cases/runtime_test.py +++ b/meta/lib/oeqa/selftest/cases/runtime_test.py @@ -489,3 +489,30 @@ IMAGE_INSTALL:append = " systemtap-runtime" cmd = "crosstap -r root@192.168.7.2 -s %s/process/ syscalls_by_pid.stp" % systemtap_examples result = runCmd(cmd) self.assertEqual(0, result.status, 'crosstap syscalls_by_pid returned a non 0 status:%s' % result.output) +@OETestTag("runqemu") +class RustKernel(OESelftestTestCase): + @classmethod + def setUpClass(cls): + super(RustKernel, cls).setUpClass() + cls.image = "core-image-minimal" + + def test_kernel_rust_sample(self): + import textwrap + self.write_config(textwrap.dedent(""" + KERNEL_FEATURES += "rust" + KERNEL_EXTRA_FEATURES:append = " features/kernel-sample/kernel-rust-sample.scc" + CORE_IMAGE_EXTRA_INSTALL += "kernel-module-rust-minimal" + """)) + bitbake(self.image) + + with runqemu(self.image, runqemuparams = "nographic") as qemu: + qemu.run_serial("dmesg -c > /dev/null") + status, _ = qemu.run_serial("modprobe rust_minimal") + #Disable status check due to intermittent failures on armhost/qemuarm64. + #The module loads successfully, but qemu.run_serial() occasionally + #returns an incorrect status. + #Bug report: https://bugzilla.yoctoproject.org/show_bug.cgi?id=16189 + #self.assertEqual(status, 1, "Loading rust_minimal module failed!") + _, output = qemu.run_serial("dmesg") + self.logger.debug(f"rust_minimal dmesg output:\n" + textwrap.indent(output, " ")) + self.assertIn("Rust minimal sample", output, "Kernel Rust sample expected output not found in dmesg")