[PATCH 3/3] rtla/tests: Add $SUBTESTS and $STOPONFAIL
From: Crystal Wood <hidden>
Date: 2026-09-19 06:28:29
Subsystem:
real-time linux analysis (rtla) tools, the rest · Maintainers:
Steven Rostedt, Tomas Glozar, Linus Torvalds
Give the user more control over the test execution when the test scripts are run directly (not through prove), in order to do things like run a particular test repeatedly to diagnose an intermittent failure. If $SUBTESTS is provided, then only tests whose number is on the list will run. For example: # SUBTESTS="14 133 4 $(seq 98 103) 9" bash ./tests/timerlat.t 1..150 ok 4 - top verify -s/--stack ok 9 - hist set the automatic trace mode ok 14 - top disable auto-analysis ok 98 - hist verify -H/--house-keeping ok 99 - top verify -k/--kernel-threads ok 100 - hist verify -k/--kernel-threads ok 101 - top verify -u/--user-threads ok 102 - hist verify -u/--user-threads ok 103 - apply default timerlat_period_us ok 133 - top trace output through --on-threshold trace If $STOPONFAIL is set, then the script will exit with a non-zero exit code on the first failure. If the output directory is non-empty, it will be preserved, and the location shown. Signed-off-by: Crystal Wood <redacted> --- tools/tracing/rtla/tests/engine.sh | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/tools/tracing/rtla/tests/engine.sh b/tools/tracing/rtla/tests/engine.sh
index ab4fa0a8ded7..395b472921a7 100644
--- a/tools/tracing/rtla/tests/engine.sh
+++ b/tools/tracing/rtla/tests/engine.sh@@ -9,6 +9,12 @@ test_begin() { testdir=$(dirname "$scriptfile") [ -z "$RTLA" ] && RTLA="$(pwd)/rtla" [ -n "$TEST_COUNT" ] && echo "1..$TEST_COUNT" + + # Convert newlines to spaces so that seq can be used + unset subtests + if [ -n "$SUBTESTS" ]; then + subtests=$(echo "$SUBTESTS"|tr '\n' ' ') + fi } reset_osnoise() {
@@ -50,8 +56,7 @@ check() { # Simple check: run rtla with given arguments and test exit code. # If TEST_COUNT is set, run the test. Otherwise, just count. ctr=$(($ctr + 1)) - if [ -n "$TEST_COUNT" ] - then + if [[ -n "$TEST_COUNT" && ( -z "$subtests" || " $subtests " == *" $ctr "* ) ]]; then # Reset osnoise options before running test. [ "$NO_RESET_OSNOISE" == 1 ] || reset_osnoise
@@ -62,6 +67,7 @@ check() { # Run rtla; in case of failure, include its output as comment # in the test results. result=$(eval stdbuf -oL $TIMEOUT "$RTLA" $2 2>&1); exitcode=$? + popd >/dev/null failbuf='' fail=0
@@ -90,10 +96,18 @@ check() { echo -n "$failbuf" echo "$result" | col -b | while read line; do echo "# $line"; done printf "#\n# exit code %s\n" $exitcode + + if [ -n "$STOPONFAIL" ]; then + # If the directory is not empty, tell the user where + # to find the output + if ! rmdir $tmpdir; then + echo "# output dir: $tmpdir" + fi + exit 1 + fi fi # Remove temporary directory - popd >/dev/null rm -r $tmpdir fi }
--
2.54.0