]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rtla/tests: Check rtla output with grep
authorTomas Glozar <tglozar@redhat.com>
Thu, 26 Jun 2025 12:34:02 +0000 (14:34 +0200)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Fri, 25 Jul 2025 20:43:57 +0000 (16:43 -0400)
Add argument to the check command in the test suite that takes a regular
expression that the output of rtla command is checked against. This
allows testing for specific information in rtla output in addition
to checking the return value.

Two minor improvements are included: running rtla with "eval" so that
arguments with spaces can be passed to it via shell quotations, and
the stdout of pushd and popd is suppressed to clean up the test output.

Cc: John Kacur <jkacur@redhat.com>
Cc: Luis Goncalves <lgoncalv@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Chang Yin <cyin@redhat.com>
Cc: Costa Shulyupin <costa.shul@redhat.com>
Cc: Crystal Wood <crwood@redhat.com>
Cc: Gabriele Monaco <gmonaco@redhat.com>
Link: https://lore.kernel.org/20250626123405.1496931-7-tglozar@redhat.com
Signed-off-by: Tomas Glozar <tglozar@redhat.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
tools/tracing/rtla/tests/engine.sh

index f2616a8e4179e40571fe99865cb921c3ee180b28..64c5be4313def9214fcb4d7af4572ed00dd34e30 100644 (file)
@@ -11,7 +11,7 @@ test_begin() {
 reset_osnoise() {
        # Reset osnoise options to default and remove any dangling instances created
        # by improperly exited rtla runs.
-       pushd /sys/kernel/tracing || return 1
+       pushd /sys/kernel/tracing >/dev/null || return 1
 
        # Remove dangling instances created by previous rtla run
        echo 0 > tracing_thresh
@@ -35,11 +35,14 @@ reset_osnoise() {
        echo 0 > stop_tracing_us
        echo 1000 > timerlat_period_us
 
-       popd
+       popd >/dev/null
 }
 
 check() {
+       test_name=$0
+       tested_command=$1
        expected_exitcode=${3:-0}
+       expected_output=$4
        # 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))
@@ -49,8 +52,16 @@ check() {
                [ "$NO_RESET_OSNOISE" == 1 ] || reset_osnoise
                # Run rtla; in case of failure, include its output as comment
                # in the test results.
-               result=$(stdbuf -oL $TIMEOUT "$RTLA" $2 2>&1); exitcode=$?
-               if [ $exitcode -eq $expected_exitcode ]
+               result=$(eval stdbuf -oL $TIMEOUT "$RTLA" $2 2>&1); exitcode=$?
+               # Test if the results matches if requested
+               if [ -n "$expected_output" ]
+               then
+                       grep -E "$expected_output" <<< "$result" > /dev/null; grep_result=$?
+               else
+                       grep_result=0
+               fi
+
+               if [ $exitcode -eq $expected_exitcode ] && [ $grep_result -eq 0 ]
                then
                        echo "ok $ctr - $1"
                else
@@ -58,6 +69,8 @@ check() {
                        # Add rtla output and exit code as comments in case of failure
                        echo "$result" | col -b | while read line; do echo "# $line"; done
                        printf "#\n# exit code %s\n" $exitcode
+                       [ -n "$expected_output" ] && \
+                               printf "# Output match failed: \"%s\"\n" "$expected_output"
                fi
        fi
 }