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 a user specified
location.

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

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

Running installed selftests
===========================

Kselftest install as well as the Kselftest tarball provide a script
named "run_kselftest.sh" to run the tests.

You can simply do the following to run the installed Kselftests. Please
note some tests will require root privileges.

cd kselftest
./run_kselftest.sh

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.

Contributing new tests(details)
===============================

 * Use TEST_GEN_XXX if such binaries or files are generated during
   compiling.
   TEST_PROGS, TEST_GEN_PROGS mean it is the excutable tested by
   default.
   TEST_PROGS_EXTENDED, TEST_GEN_PROGS_EXTENDED mean it is the
   executable which is not tested by default.
   TEST_FILES, TEST_GEN_FILES mean it is the file which is used by
   test.
