All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: "John Warthog9 Hawley" <warthog9@kernel.org>,
	"Ricardo B. Marlière" <rbm@suse.com>,
	"John Hawley" <warthog9@eaglescrag.net>,
	"Andrea Righi" <arighi@nvidia.com>,
	"Marcos Paulo de Souza" <mpdesouza@suse.com>,
	"Matthieu Baerts" <matttbe@kernel.org>,
	"Fernando Fernandez Mancera" <fmancera@suse.de>,
	"Pedro Falcato" <pfalcato@suse.de>
Subject: [for-next][PATCH 8/9] ktest: Run POST_KTEST hooks on failure and cancellation
Date: Mon, 16 Mar 2026 14:40:41 -0400	[thread overview]
Message-ID: <20260316184116.847775505@kernel.org> (raw)
In-Reply-To: 20260316184033.927944169@kernel.org

From: =?UTF-8?q?Ricardo=20B=2E=20Marli=C3=A8re?= <rbm@suse.com>

PRE_KTEST can be useful for setting up the environment and POST_KTEST to
tear it down, however POST_KTEST only runs on the normal end-of-run path.
It is skipped when ktest exits through dodie() or cancel_test(). Final
cleanup hooks are skipped.

Factor the final hook execution into run_post_ktest(), call it from the
normal exit path and from the early exit paths, and guard it so the hook
runs at most once.

Cc: John Hawley <warthog9@eaglescrag.net>
Cc: Andrea Righi <arighi@nvidia.com>
Cc: Marcos Paulo de Souza <mpdesouza@suse.com>
Cc: Matthieu Baerts <matttbe@kernel.org>
Cc: Fernando Fernandez Mancera <fmancera@suse.de>
Cc: Pedro Falcato <pfalcato@suse.de>
Link: https://patch.msgid.link/20260307-ktest-fixes-v1-8-565d412f4925@suse.com
Fixes: 921ed4c7208e ("ktest: Add PRE/POST_KTEST and TEST options")
Signed-off-by: Ricardo B. Marlière <rbm@suse.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
 tools/testing/ktest/ktest.pl | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
index b018b937e028..8962857ce4a6 100755
--- a/tools/testing/ktest/ktest.pl
+++ b/tools/testing/ktest/ktest.pl
@@ -100,6 +100,7 @@ my $test_type;
 my $build_type;
 my $build_options;
 my $final_post_ktest;
+my $post_ktest_done = 0;
 my $pre_ktest;
 my $pre_ktest_die;
 my $post_ktest;
@@ -1586,6 +1587,24 @@ sub get_test_name() {
     return $name;
 }
 
+sub run_post_ktest {
+    my $cmd;
+
+    return if ($post_ktest_done);
+
+    if (defined($final_post_ktest)) {
+	$cmd = $final_post_ktest;
+    } elsif (defined($post_ktest)) {
+	$cmd = $post_ktest;
+    } else {
+	return;
+    }
+
+    my $cp_post_ktest = eval_kernel_version($cmd);
+    run_command $cp_post_ktest;
+    $post_ktest_done = 1;
+}
+
 sub dodie {
     # avoid recursion
     return if ($in_die);
@@ -1645,6 +1664,7 @@ sub dodie {
     if (defined($post_test)) {
 	run_command $post_test;
     }
+    run_post_ktest;
 
     die @_, "\n";
 }
@@ -4314,6 +4334,7 @@ sub cancel_test {
 	send_email("KTEST: Your [$name] test was cancelled",
 	    "Your test started at $script_start_time was cancelled: sig int");
     }
+    run_post_ktest;
     die "\nCaught Sig Int, test interrupted: $!\n"
 }
 
@@ -4679,11 +4700,7 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
     success $i;
 }
 
-if (defined($final_post_ktest)) {
-
-    my $cp_final_post_ktest = eval_kernel_version $final_post_ktest;
-    run_command $cp_final_post_ktest;
-}
+run_post_ktest;
 
 if ($opt{"POWEROFF_ON_SUCCESS"}) {
     halt;
-- 
2.51.0



  parent reply	other threads:[~2026-03-16 18:40 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-16 18:40 [for-next][PATCH 0/9] ktest: Updates to ktest for 7.1 Steven Rostedt
2026-03-16 18:40 ` [for-next][PATCH 1/9] ktest: Avoid undef warning when WARNINGS_FILE is unset Steven Rostedt
2026-03-16 18:40 ` [for-next][PATCH 2/9] ktest: Resolve LOG_FILE in test option context Steven Rostedt
2026-03-16 18:40 ` [for-next][PATCH 3/9] ktest: Treat undefined self-reference as empty Steven Rostedt
2026-03-16 18:40 ` [for-next][PATCH 4/9] ktest: Honor empty per-test option overrides Steven Rostedt
2026-03-16 18:40 ` [for-next][PATCH 5/9] ktest: Run commands through list-form shell open Steven Rostedt
2026-03-16 18:40 ` [for-next][PATCH 6/9] ktest: Stop dropping console output during power-cycle reboot Steven Rostedt
2026-03-16 18:40 ` [for-next][PATCH 7/9] ktest: Add PRE_KTEST_DIE for PRE_KTEST failures Steven Rostedt
2026-03-16 18:40 ` Steven Rostedt [this message]
2026-03-16 18:40 ` [for-next][PATCH 9/9] ktest: Add a --dry-run mode Steven Rostedt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260316184116.847775505@kernel.org \
    --to=rostedt@kernel.org \
    --cc=arighi@nvidia.com \
    --cc=fmancera@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matttbe@kernel.org \
    --cc=mpdesouza@suse.com \
    --cc=pfalcato@suse.de \
    --cc=rbm@suse.com \
    --cc=warthog9@eaglescrag.net \
    --cc=warthog9@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.