1Linux Kernel Selftests 2 3The kernel contains a set of "self tests" under the tools/testing/selftests/ 4directory. These are intended to be small unit tests to exercise individual 5code paths in the kernel. 6 7On some systems, hot-plug tests could hang forever waiting for cpu and 8memory to be ready to be offlined. A special hot-plug target is created 9to run full range of hot-plug tests. In default mode, hot-plug tests run 10in safe mode with a limited scope. In limited mode, cpu-hotplug test is 11run on a single cpu as opposed to all hotplug capable cpus, and memory 12hotplug test is run on 2% of hotplug capable memory instead of 10%. 13 14Running the selftests (hotplug tests are run in limited mode) 15============================================================= 16 17To build the tests: 18 $ make -C tools/testing/selftests 19 20 21To run the tests: 22 $ make -C tools/testing/selftests run_tests 23 24To build and run the tests with a single command, use: 25 $ make kselftest 26 27- note that some tests will require root privileges. 28 29 30Running a subset of selftests 31======================================== 32You can use the "TARGETS" variable on the make command line to specify 33single test to run, or a list of tests to run. 34 35To run only tests targeted for a single subsystem: 36 $ make -C tools/testing/selftests TARGETS=ptrace run_tests 37 38You can specify multiple tests to build and run: 39 $ make TARGETS="size timers" kselftest 40 41See the top-level tools/testing/selftests/Makefile for the list of all 42possible targets. 43 44 45Running the full range hotplug selftests 46======================================== 47 48To build the hotplug tests: 49 $ make -C tools/testing/selftests hotplug 50 51To run the hotplug tests: 52 $ make -C tools/testing/selftests run_hotplug 53 54- note that some tests will require root privileges. 55 56 57Contributing new tests 58====================== 59 60In general, the rules for for selftests are 61 62 * Do as much as you can if you're not root; 63 64 * Don't take too long; 65 66 * Don't break the build on any architecture, and 67 68 * Don't cause the top-level "make run_tests" to fail if your feature is 69 unconfigured. 70