57 lines
1.8 KiB
Plaintext
57 lines
1.8 KiB
Plaintext
|
====================
|
||
|
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.)
|