| ==================== |
| Livepatch Self Tests |
| ==================== |
| |
| This is a small set of sanity tests for the kernel livepatching. |
| |
| The test suite loads and unloads several test kernel modules to verify |
| livepatch behavior. Debug information is logged to the kernel's message |
| buffer and parsed for expected messages. (Note: the tests will compare |
| the message buffer for only the duration of each individual test.) |
| |
| |
| Config |
| ------ |
| |
| Set CONFIG_LIVEPATCH=y option and it's prerequisites. |
| |
| |
| Building the tests |
| ------------------ |
| |
| To only build the tests without running them, run: |
| |
| % make -C tools/testing/selftests/livepatch |
| |
| The command above will compile all test modules and test programs, making them |
| ready to be packaged if so desired. |
| |
| Running the tests |
| ----------------- |
| |
| Test kernel modules are built before running the livepatch selftests. The |
| modules are located under test_modules directory, and are built as out-of-tree |
| modules. This is specially useful since the same sources can be built and |
| tested on systems with different kABI, ensuring they the tests are backwards |
| compatible. The modules will be loaded by the test scripts using insmod. |
| |
| To run the livepatch selftests, from the top of the kernel source tree: |
| |
| % make -C tools/testing/selftests TARGETS=livepatch run_tests |
| |
| or |
| |
| % make kselftest TARGETS=livepatch |
| |
| |
| Adding tests |
| ------------ |
| |
| See the common functions.sh file for the existing collection of utility |
| functions, most importantly setup_config(), start_test() and |
| check_result(). The latter function greps the kernel's ring buffer for |
| "livepatch:" and "test_klp" strings, so tests be sure to include one of |
| those strings for result comparison. Other utility functions include |
| general module loading and livepatch loading helpers (waiting for patch |
| transitions, sysfs entries, etc.) |