Commit | Line | Data |
---|---|---|
80d03428 JK |
1 | Linux Kernel Selftests |
2 | ||
3 | The kernel contains a set of "self tests" under the tools/testing/selftests/ | |
3409f9ab AA |
4 | directory. These are intended to be small tests to exercise individual code |
5 | paths in the kernel. Tests are intended to be run after building, installing | |
6 | and booting a kernel. | |
80d03428 | 7 | |
ddddda9b SK |
8 | On some systems, hot-plug tests could hang forever waiting for cpu and |
9 | memory to be ready to be offlined. A special hot-plug target is created | |
10 | to run full range of hot-plug tests. In default mode, hot-plug tests run | |
11 | in safe mode with a limited scope. In limited mode, cpu-hotplug test is | |
12 | run on a single cpu as opposed to all hotplug capable cpus, and memory | |
13 | hotplug test is run on 2% of hotplug capable memory instead of 10%. | |
14 | ||
15 | Running the selftests (hotplug tests are run in limited mode) | |
16 | ============================================================= | |
80d03428 JK |
17 | |
18 | To build the tests: | |
80d03428 JK |
19 | $ make -C tools/testing/selftests |
20 | ||
21 | ||
22 | To run the tests: | |
80d03428 JK |
23 | $ make -C tools/testing/selftests run_tests |
24 | ||
3c415707 TB |
25 | To build and run the tests with a single command, use: |
26 | $ make kselftest | |
27 | ||
80d03428 JK |
28 | - note that some tests will require root privileges. |
29 | ||
80d03428 | 30 | |
3c415707 TB |
31 | Running a subset of selftests |
32 | ======================================== | |
33 | You can use the "TARGETS" variable on the make command line to specify | |
34 | single test to run, or a list of tests to run. | |
35 | ||
36 | To run only tests targeted for a single subsystem: | |
37 | $ make -C tools/testing/selftests TARGETS=ptrace run_tests | |
38 | ||
39 | You can specify multiple tests to build and run: | |
40 | $ make TARGETS="size timers" kselftest | |
41 | ||
42 | See the top-level tools/testing/selftests/Makefile for the list of all | |
43 | possible targets. | |
80d03428 | 44 | |
80d03428 | 45 | |
ddddda9b SK |
46 | Running the full range hotplug selftests |
47 | ======================================== | |
48 | ||
3c415707 | 49 | To build the hotplug tests: |
ddddda9b SK |
50 | $ make -C tools/testing/selftests hotplug |
51 | ||
3c415707 | 52 | To run the hotplug tests: |
ddddda9b SK |
53 | $ make -C tools/testing/selftests run_hotplug |
54 | ||
55 | - note that some tests will require root privileges. | |
80d03428 | 56 | |
3c415707 | 57 | |
76caa6ca WL |
58 | Install selftests |
59 | ================= | |
60 | ||
61 | You can use kselftest_install.sh tool installs selftests in default | |
62 | location which is tools/testing/selftests/kselftest or an user specified | |
63 | location. | |
64 | ||
65 | To install selftests in default location: | |
66 | $ cd tools/testing/selftests | |
67 | $ ./kselftest_install.sh | |
68 | ||
69 | To install selftests in an user specified location: | |
70 | $ cd tools/testing/selftests | |
71 | $ ./kselftest_install.sh install_dir | |
72 | ||
78566cf1 SK |
73 | Running installed selftests |
74 | =========================== | |
75 | ||
76 | Kselftest install as well as the Kselftest tarball provide a script | |
77 | named "run_kselftest.sh" to run the tests. | |
78 | ||
79 | You can simply do the following to run the installed Kselftests. Please | |
80 | note some tests will require root privileges. | |
81 | ||
82 | cd kselftest | |
83 | ./run_kselftest.sh | |
76caa6ca | 84 | |
80d03428 JK |
85 | Contributing new tests |
86 | ====================== | |
87 | ||
4db1fa66 | 88 | In general, the rules for selftests are |
80d03428 JK |
89 | |
90 | * Do as much as you can if you're not root; | |
91 | ||
92 | * Don't take too long; | |
93 | ||
94 | * Don't break the build on any architecture, and | |
95 | ||
96 | * Don't cause the top-level "make run_tests" to fail if your feature is | |
97 | unconfigured. |