User Tools

Site Tools


start

The Linux kernel contains a set of developer unit and regression tests (Kselftests) in the Kernel sources under tools/testing/selftest directory. These tests exercise individual code paths in the kernel. Even though kselftest’s main purpose is for developer regression test, testers and users can also use it to ensure there are no regressions in a new kernel.

Kselftest is run everyday on several Linux kernel trees on the 0-Day and Linaro Test Farm and other Linux kernel integration test rings.

Please find current status as of Linux 4.19 and progress made since 3.17 in Shuah's Kselftest Overview.

Please find Kselftest framework details and how to contribute to Kselftest sub-system and write new tests in Shuah's Kselftest How to Guide

Resources

  • Shuah Khan maintains next and fixes branches of the Kselftest git on kernel.org
    • git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git
  • mailing list: linux-kselftest@vger.kernel.org
    • lkml should be copied (as for other kernel sub-system work)
  • Join #linux-kselftest IRC Channel on freenode.This server recommends Nick registration.
    • Server Name: irc.freenode.net/6667
    • You can register your Nick in the server tab with command: identify /msg NickServ identify <password>
    • You can configure your chat client to auto identify using NickServ(/MSG MickServ+password) option - works on hexchat

Archived Information - About kselftest

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 Khan 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)
    • some developers want tests to run in a few seconds
  • 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

Status

As of August, 2014, Shuah Khan reported the status of kselftest as follows: (see http://lists.linuxfoundation.org/pipermail/ksummit-discuss/2014-August/001059.html)

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.

Sub-projects

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 cross-compilation (Tim Bird, Grant Likely, and others)
  • support local execution of tests in a virtualized environment (kvm, virtualbox, qemu)
  • documentation, and this wiki
    • docs should go in the kernel Documentation directory
    • this wiki is for project tracking
  • 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:

  • system size test
  • performance tests
  • basic boot test (get to login prompt)
start.txt · Last modified: 2019-09-25 23:50 by tbird20d