Message ID | 20190716133414.20196-1-joe.lawrence@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v2] selftests/livepatch: add test skip handling | expand |
On Tue, 16 Jul 2019, Joe Lawrence wrote: > Add a skip() message function that stops the test, logs an explanation, > and sets the "skip" return code (4). > > Before loading a livepatch self-test kernel module, first verify that > we've built and installed it by running a 'modprobe --dry-run'. This > should catch a few environment issues, including !CONFIG_LIVEPATCH and > !CONFIG_TEST_LIVEPATCH. In these cases, exit gracefully with the new > skip() function. > > Reported-by: Jiri Benc <jbenc@redhat.com> > Suggested-by: Shuah Khan <shuah@kernel.org> > Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com> Reviewed-by: Miroslav Benes <mbenes@suse.cz> Miroslav
On Tue 2019-07-16 09:34:14, Joe Lawrence wrote: > Add a skip() message function that stops the test, logs an explanation, > and sets the "skip" return code (4). > > Before loading a livepatch self-test kernel module, first verify that > we've built and installed it by running a 'modprobe --dry-run'. This > should catch a few environment issues, including !CONFIG_LIVEPATCH and > !CONFIG_TEST_LIVEPATCH. In these cases, exit gracefully with the new > skip() function. > > Reported-by: Jiri Benc <jbenc@redhat.com> Adding Jiri into CC to be sure that we really solved the original problem. I get the following output when livepatching is not configured: $> make run_tests TAP version 13 1..4 # selftests: livepatch: test-livepatch.sh # TEST: basic function patching ... SKIP: Failed modprobe --dry-run of module: test_klp_livepatch not ok 1 selftests: livepatch: test-livepatch.sh # SKIP # selftests: livepatch: test-callbacks.sh # TEST: target module before livepatch ... SKIP: Failed modprobe --dry-run of module: test_klp_callbacks_mod not ok 2 selftests: livepatch: test-callbacks.sh # SKIP # selftests: livepatch: test-shadow-vars.sh # TEST: basic shadow variable API ... SKIP: Failed modprobe --dry-run of module: test_klp_shadow_vars not ok 3 selftests: livepatch: test-shadow-vars.sh # SKIP # selftests: livepatch: test-state.sh # TEST: system state modification ... SKIP: Failed modprobe --dry-run of module: test_klp_state not ok 4 selftests: livepatch: test-state.sh # SKIP Jiri, is it acceptable solution for you, please? > Suggested-by: Shuah Khan <shuah@kernel.org> > Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com> Otherwise, the patch looks fine to me. If Jiri is fine then feel free to use: Reviewed-by: Petr Mladek <pmladek@suse.com> Best Regards, Petr
On Wed, 17 Jul 2019 14:00:55 +0200, Petr Mladek wrote: > Adding Jiri into CC to be sure that we really solved the original problem. The patch looks good to me, the runner expects 4 as an indication that the test was skipped. > I get the following output when livepatching is not configured: > > $> make run_tests > TAP version 13 > 1..4 > # selftests: livepatch: test-livepatch.sh > # TEST: basic function patching ... SKIP: Failed modprobe --dry-run of module: test_klp_livepatch > not ok 1 selftests: livepatch: test-livepatch.sh # SKIP > # selftests: livepatch: test-callbacks.sh > # TEST: target module before livepatch ... SKIP: Failed modprobe --dry-run of module: test_klp_callbacks_mod > not ok 2 selftests: livepatch: test-callbacks.sh # SKIP > # selftests: livepatch: test-shadow-vars.sh > # TEST: basic shadow variable API ... SKIP: Failed modprobe --dry-run of module: test_klp_shadow_vars > not ok 3 selftests: livepatch: test-shadow-vars.sh # SKIP > # selftests: livepatch: test-state.sh > # TEST: system state modification ... SKIP: Failed modprobe --dry-run of module: test_klp_state > not ok 4 selftests: livepatch: test-state.sh # SKIP > > Jiri, is it acceptable solution for you, please? It looks correct. My reading of the TAP 13 specification is that it should be returned as "ok" instead of "not ok" but that is not a problem of this patch. > Otherwise, the patch looks fine to me. If Jiri is fine > then feel free to use: > > Reviewed-by: Petr Mladek <pmladek@suse.com> Sure. Acked-by: Jiri Benc <jbenc@redhat.com> Thanks! Jiri
On 7/16/19 7:04 PM, Joe Lawrence wrote: > Add a skip() message function that stops the test, logs an explanation, > and sets the "skip" return code (4). > > Before loading a livepatch self-test kernel module, first verify that > we've built and installed it by running a 'modprobe --dry-run'. This > should catch a few environment issues, including !CONFIG_LIVEPATCH and > !CONFIG_TEST_LIVEPATCH. In these cases, exit gracefully with the new > skip() function. > > Reported-by: Jiri Benc <jbenc@redhat.com> > Suggested-by: Shuah Khan <shuah@kernel.org> > Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com> Reviewed-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh index 30195449c63c..de5a504ffdbc 100644 --- a/tools/testing/selftests/livepatch/functions.sh +++ b/tools/testing/selftests/livepatch/functions.sh @@ -13,6 +13,14 @@ function log() { echo "$1" > /dev/kmsg } +# skip(msg) - testing can't proceed +# msg - explanation +function skip() { + log "SKIP: $1" + echo "SKIP: $1" >&2 + exit 4 +} + # die(msg) - game over, man # msg - dying words function die() { @@ -43,6 +51,12 @@ function loop_until() { done } +function assert_mod() { + local mod="$1" + + modprobe --dry-run "$mod" &>/dev/null +} + function is_livepatch_mod() { local mod="$1" @@ -75,6 +89,9 @@ function __load_mod() { function load_mod() { local mod="$1"; shift + assert_mod "$mod" || + skip "Failed modprobe --dry-run of module: $mod" + is_livepatch_mod "$mod" && die "use load_lp() to load the livepatch module $mod" @@ -88,6 +105,9 @@ function load_mod() { function load_lp_nowait() { local mod="$1"; shift + assert_mod "$mod" || + skip "Failed modprobe --dry-run of module: $mod" + is_livepatch_mod "$mod" || die "module $mod is not a livepatch"
Add a skip() message function that stops the test, logs an explanation, and sets the "skip" return code (4). Before loading a livepatch self-test kernel module, first verify that we've built and installed it by running a 'modprobe --dry-run'. This should catch a few environment issues, including !CONFIG_LIVEPATCH and !CONFIG_TEST_LIVEPATCH. In these cases, exit gracefully with the new skip() function. Reported-by: Jiri Benc <jbenc@redhat.com> Suggested-by: Shuah Khan <shuah@kernel.org> Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com> --- v2: move assert_mod() call into load_mod() and load_lp_nowait(), before they check whether the module is a livepatch or not (a test-failing assertion). .../testing/selftests/livepatch/functions.sh | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+)