2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-29 15:43:59 +08:00
linux-next/tools/testing/selftests/livepatch
Joe Lawrence fbb01c5247 selftests/livepatch: push and pop dynamic debug config
The livepatching self-tests tweak the dynamic debug config to verify
the kernel log during the tests.  Enhance set_dynamic_debug() so that
the config changes are restored when the script exits.

Note this functionality needs to keep in sync with:
  - dynamic_debug input/output formatting
  - functions affected by set_dynamic_debug()

  For example, push_dynamic_debug() transforms:
    kernel/livepatch/transition.c:530 [livepatch]klp_init_transition =_ "'%s': initializing %s transition\012"
  to the following:
    file kernel/livepatch/transition.c line 530 =_

Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
Tested-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
2019-07-30 15:47:10 -06:00
..
config selftests/livepatch: introduce tests 2019-01-11 20:51:24 +01:00
functions.sh selftests/livepatch: push and pop dynamic debug config 2019-07-30 15:47:10 -06:00
Makefile selftests/livepatch: Add functions.sh to TEST_PROGS_EXTENDED 2019-04-15 10:43:21 +02:00
README selftests/livepatch: introduce tests 2019-01-11 20:51:24 +01:00
test-callbacks.sh selftests/livepatch: introduce tests 2019-01-11 20:51:24 +01:00
test-livepatch.sh selftests/livepatch: introduce tests 2019-01-11 20:51:24 +01:00
test-shadow-vars.sh selftests/livepatch: introduce tests 2019-01-11 20:51:24 +01: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 clear
the message buffer between individual tests.)


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