Live-Patching Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v2] selftests/livepatch: add test skip handling
@ 2019-07-16 13:34 Joe Lawrence
  2019-07-17  9:12 ` Miroslav Benes
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Joe Lawrence @ 2019-07-16 13:34 UTC (permalink / raw)
  To: live-patching, linux-kselftest; +Cc: shuah

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(+)

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"
 
-- 
2.21.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] selftests/livepatch: add test skip handling
  2019-07-16 13:34 [PATCH v2] selftests/livepatch: add test skip handling Joe Lawrence
@ 2019-07-17  9:12 ` Miroslav Benes
  2019-07-17 12:00 ` Petr Mladek
  2019-07-17 14:45 ` Kamalesh Babulal
  2 siblings, 0 replies; 5+ messages in thread
From: Miroslav Benes @ 2019-07-17  9:12 UTC (permalink / raw)
  To: Joe Lawrence; +Cc: live-patching, linux-kselftest, shuah

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] selftests/livepatch: add test skip handling
  2019-07-16 13:34 [PATCH v2] selftests/livepatch: add test skip handling Joe Lawrence
  2019-07-17  9:12 ` Miroslav Benes
@ 2019-07-17 12:00 ` Petr Mladek
  2019-07-17 12:45   ` Jiri Benc
  2019-07-17 14:45 ` Kamalesh Babulal
  2 siblings, 1 reply; 5+ messages in thread
From: Petr Mladek @ 2019-07-17 12:00 UTC (permalink / raw)
  To: Joe Lawrence, Jiri Benc; +Cc: linux-kselftest, live-patching, shuah

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] selftests/livepatch: add test skip handling
  2019-07-17 12:00 ` Petr Mladek
@ 2019-07-17 12:45   ` Jiri Benc
  0 siblings, 0 replies; 5+ messages in thread
From: Jiri Benc @ 2019-07-17 12:45 UTC (permalink / raw)
  To: Petr Mladek; +Cc: Joe Lawrence, linux-kselftest, live-patching, shuah

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] selftests/livepatch: add test skip handling
  2019-07-16 13:34 [PATCH v2] selftests/livepatch: add test skip handling Joe Lawrence
  2019-07-17  9:12 ` Miroslav Benes
  2019-07-17 12:00 ` Petr Mladek
@ 2019-07-17 14:45 ` Kamalesh Babulal
  2 siblings, 0 replies; 5+ messages in thread
From: Kamalesh Babulal @ 2019-07-17 14:45 UTC (permalink / raw)
  To: Joe Lawrence, live-patching, linux-kselftest; +Cc: shuah

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>

-- 
Kamalesh


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-16 13:34 [PATCH v2] selftests/livepatch: add test skip handling Joe Lawrence
2019-07-17  9:12 ` Miroslav Benes
2019-07-17 12:00 ` Petr Mladek
2019-07-17 12:45   ` Jiri Benc
2019-07-17 14:45 ` Kamalesh Babulal

Live-Patching Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/live-patching/0 live-patching/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 live-patching live-patching/ https://lore.kernel.org/live-patching \
		live-patching@vger.kernel.org live-patching@archiver.kernel.org
	public-inbox-index live-patching

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.live-patching


AGPL code for this site: git clone https://public-inbox.org/ public-inbox