On 7/15/24 9:40 PM, Kees Cook wrote:
On Mon, Jul 15, 2024 at 03:09:24PM +0500, Muhammad Usama Anjum wrote:
Hi Kees and All,
There are several tests in kselftest subsystem which load modules to tests the internals of the kernel. Most of these test modules are just loaded by the kselftest, their status isn't read and reported to the user logs. Hence they don't provide benefit of executing those tests.
I've found patches from Kees where he has been converting such kselftests to kunit tests [1]. The probable motivation is to move tests output of kselftest subsystem which only triggers tests without correctly reporting the results. On the other hand, kunit is there to test the kernel's internal functions which can't be done by userspace.
Kselftest: Test user facing APIs from userspace Kunit: Test kernel's internal functions from kernelspace
I would say this is a reasonable guide to how these things should be separated, yes. That said, much of what was kind of ad-hoc kernel internals testing that was triggered via kselftests is better done via KUnit these days, but not everything.
I started investigated when I found that kselftest doesn't parse the kernel logs to mark these tests pass/fail. (kselftest/lib is good example of it)
This brings me to conclusion that kselftest which are loading modules to test kernelspace should be converted to kunit tests. I've noted several such kselftests.
I would tend to agree, yes. Which stand out to you? I've mainly been doing the conversions when I find myself wanting to add new tests, etc.
lib test_bitmap prime_numbers test_printf test_scanf test_strscpy (already converted, need to remove this test) lock test-ww_mutex module net test_blackhole_dev user test_user_copy (probably already converted, need to remove this test) firmware test_firmware fpu test_fpu
Most of these modules are found in lib/*.
Would it be desired to move these to kunit?