linux/tools/testing/selftests/livepatch
Joe Lawrence f1fea725cc selftests/livepatch: fix and refactor new dmesg message code
The livepatching kselftests rely on comparing expected vs. observed
dmesg output.  After each test, new dmesg entries are determined by the
'comm' utility comparing a saved, pre-test copy of dmesg to post-test
dmesg output.

Alexander reports that the 'comm --nocheck-order -13' invocation used by
the tests can be confused when dmesg entry timestamps vary in magnitude
(ie, "[   98.820331]" vs. "[  100.031067]"), in which case, additional
messages are reported as new.  The unexpected entries then spoil the
test results.

Instead of relying on 'comm' or 'diff' to determine new testing dmesg
entries, refactor the code:

  - pre-test  : log a unique canary dmesg entry
  - test      : run tests, log messages
  - post-test : filter dmesg starting from pre-test message

Reported-by: Alexander Gordeev <agordeev@linux.ibm.com>
Closes: https://lore.kernel.org/live-patching/ZYAimyPYhxVA9wKg@li-008a6a4c-3549-11b2-a85c-c5cc2836eea2.ibm.com/
Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
Tested-by: Marcos Paulo de Souza <mpdesouza@suse.com>
Reviewed-by: Marcos Paulo de Souza <mpdesouza@suse.com>
Acked-by: Miroslav Benes <mbenes@suse.cz>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
2024-01-30 08:55:42 -07:00
..
config selftests: livepatch: add missing fragments to config 2019-09-23 08:33:16 -06:00
functions.sh selftests/livepatch: fix and refactor new dmesg message code 2024-01-30 08:55:42 -07:00
Makefile selftests/livepatch: add sysfs test 2022-09-23 16:06:38 +02:00
README selftests/livepatch: Don't clear dmesg when running tests 2020-06-19 10:46:42 +02:00
settings selftests/livepatch: Disable the timeout 2019-10-25 19:59:12 +02:00
test-callbacks.sh selftests/livepatch: Don't clear dmesg when running tests 2020-06-19 10:46:42 +02:00
test-ftrace.sh livepatch: Skip livepatch tests if ftrace cannot be configured 2022-02-23 16:42:00 +01:00
test-livepatch.sh selftests/livepatch: Don't clear dmesg when running tests 2020-06-19 10:46:42 +02:00
test-shadow-vars.sh selftests/livepatch: Don't clear dmesg when running tests 2020-06-19 10:46:42 +02:00
test-state.sh selftests/livepatch: Don't clear dmesg when running tests 2020-06-19 10:46:42 +02:00
test-sysfs.sh selftests/livepatch: add sysfs test 2022-09-23 16:06:38 +02:00

====================
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 these config options and their prerequisites:

CONFIG_LIVEPATCH=y
CONFIG_TEST_LIVEPATCH=m


Running the tests
-----------------

Test kernel modules are built as part of lib/ (make modules) and need to
be installed (make modules_install) as the test scripts will modprobe
them.

To run the livepatch selftests, from the top of the kernel source tree:

  % make -C tools/testing/selftests TARGETS=livepatch run_tests


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.)