Linux Kernel Selftests

The kernel contains a set of "self tests" under the tools/testing/selftests/
directory. These are intended to be small tests to exercise individual code
paths in the kernel. Tests are intended to be run after building, installing
and booting a kernel.

On some systems, hot-plug tests could hang forever waiting for cpu and
memory to be ready to be offlined. A special hot-plug target is created
to run full range of hot-plug tests. In default mode, hot-plug tests run
in safe mode with a limited scope. In limited mode, cpu-hotplug test is
run on a single cpu as opposed to all hotplug capable cpus, and memory
hotplug test is run on 2% of hotplug capable memory instead of 10%.

Running the selftests (hotplug tests are run in limited mode)
=============================================================

To build the tests:
  $ make -C tools/testing/selftests


To run the tests:
  $ make -C tools/testing/selftests run_tests

To build and run the tests with a single command, use:
  $ make kselftest

- note that some tests will require root privileges.


Running a subset of selftests
========================================
You can use the "TARGETS" variable on the make command line to specify
single test to run, or a list of tests to run.

To run only tests targeted for a single subsystem:
  $  make -C tools/testing/selftests TARGETS=ptrace run_tests

You can specify multiple tests to build and run:
  $  make TARGETS="size timers" kselftest

See the top-level tools/testing/selftests/Makefile for the list of all
possible targets.


Running the full range hotplug selftests
========================================

To build the hotplug tests:
  $ make -C tools/testing/selftests hotplug

To run the hotplug tests:
  $ make -C tools/testing/selftests run_hotplug

- note that some tests will require root privileges.


Install selftests
=================

You can use kselftest_install.sh tool installs selftests in default
location which is tools/testing/selftests/kselftest or an user specified
location.

To install selftests in default location:
   $ cd tools/testing/selftests
   $ ./kselftest_install.sh

To install selftests in an user specified location:
   $ cd tools/testing/selftests
   $ ./kselftest_install.sh install_dir


Contributing new tests
======================

In general, the rules for selftests are

 * Do as much as you can if you're not root;

 * Don't take too long;

 * Don't break the build on any architecture, and

 * Don't cause the top-level "make run_tests" to fail if your feature is
   unconfigured.
