| 1 | ==================== |
| 2 | Livepatch Self Tests |
| 3 | ==================== |
| 4 | |
| 5 | This is a small set of sanity tests for the kernel livepatching. |
| 6 | |
| 7 | The test suite loads and unloads several test kernel modules to verify |
| 8 | livepatch behavior. Debug information is logged to the kernel's message |
| 9 | buffer and parsed for expected messages. (Note: the tests will compare |
| 10 | the message buffer for only the duration of each individual test.) |
| 11 | |
| 12 | |
| 13 | Config |
| 14 | ------ |
| 15 | |
| 16 | Set CONFIG_LIVEPATCH=y option and it's prerequisites. |
| 17 | |
| 18 | |
| 19 | Building the tests |
| 20 | ------------------ |
| 21 | |
| 22 | To only build the tests without running them, run: |
| 23 | |
| 24 | % make -C tools/testing/selftests/livepatch |
| 25 | |
| 26 | The command above will compile all test modules and test programs, making them |
| 27 | ready to be packaged if so desired. |
| 28 | |
| 29 | Running the tests |
| 30 | ----------------- |
| 31 | |
| 32 | Test kernel modules are built before running the livepatch selftests. The |
| 33 | modules are located under test_modules directory, and are built as out-of-tree |
| 34 | modules. This is specially useful since the same sources can be built and |
| 35 | tested on systems with different kABI, ensuring they the tests are backwards |
| 36 | compatible. The modules will be loaded by the test scripts using insmod. |
| 37 | |
| 38 | To run the livepatch selftests, from the top of the kernel source tree: |
| 39 | |
| 40 | % make -C tools/testing/selftests TARGETS=livepatch run_tests |
| 41 | |
| 42 | or |
| 43 | |
| 44 | % make kselftest TARGETS=livepatch |
| 45 | |
| 46 | |
| 47 | Adding tests |
| 48 | ------------ |
| 49 | |
| 50 | See the common functions.sh file for the existing collection of utility |
| 51 | functions, most importantly setup_config(), start_test() and |
| 52 | check_result(). The latter function greps the kernel's ring buffer for |
| 53 | "livepatch:" and "test_klp" strings, so tests be sure to include one of |
| 54 | those strings for result comparison. Other utility functions include |
| 55 | general module loading and livepatch loading helpers (waiting for patch |
| 56 | transitions, sysfs entries, etc.) |