This is an old revision of the document!
This wiki is dedicated to holding information about the kselftest feature of the Linux kernel.
The purpose of kselftest is to provide kernel developers and end-users a quick method of running tests against
the Linux kernel. As of this writing, Samsung developer Shuah Kahn is the project leader.
kselftest was discussed at the 2014 kernel summit (in August, 2014), with Shuah making
a presentation during the "core day" of the summit. Some followup discussions were held during an
"unconference" session the following day.
Source code for kselftest tests is contained in the directory
tools/testing/selftests in the kernel source tree.
The kselftest feature (in rough draft form, I'd say) first appeared in kernel version 3.16.
Some features of kselftest
Here is a list of desired features for kselftest – some of which already exist (as of August 2014):
ability to quickly execute tests (current target is under 20 minutes)
ability to run different groups of tests
test source code is kept in the kernel source tree, where it is easily accessible to anyone working with the kernel source
As of August, 2014, Shuah Kahn reported the status of kselftest as follows:
Short summary of work done so far for 3.17:
fix compile errors and warnings in various tests
fix run-time errors when tests aren't run as root
enhance and improve cpu and memory hot-plug tests to run in limited scope mode by default. A new make target to select full-scope testing. Prior to this change, cpu and memory hot-plug tests hung trying to hot-plug all but cpu0 and a large portion of the memory.
add a new kselftest target to run existing selftests to start with.
What's planned for 3.18 and beyond:
get feedback on the new kselftest target from the community
add more tests to be run under kselftest umbrella
identify existing tests under /lib and other areas that make a good candidate to be included under kselftest
Some of these could be run as a tool and/or a independent test with a few changes and some probably aren't like the /lib/locking tests.
As a goal, try to leverage existing tests and modify them as needed to run them as a black-box test (e.g: look into ways to make it run as a tool)
Greg KH sparked the kernel selftest idea, has been in the loop for the work done so far, and reviewed the plan for 3.18.
There are some sub-projects or additional features, that some developers have expressed interest in, for
the kselftest system. Below is a bullet list for tracking the status of these different sub-projects:
(In parenthesis are some people who have expressed interest in this sub-project or feature) If a link is present then there's a sub-page to discuss that project.
standardize the test output format (Grant Likely)
support local execution of tests in a virtualized environment (kvm, virtualbox, qemu)
documentation, and this wiki
integration with rest of kernel build system to support standard kernel options:
separate output directory (ie. KBUILD_OUTPUT support)
verbose vs. quiet building (ie V=1 support)
cross-compilation (ie CROSS_COMPILE support)
Some desired tests
Initially, Shuah started collecting existing unit tests from other places both inside and outside the kernel
source tree. Here are some tests that have been discussed or requested: