Commit 916a9c5b authored by Tomas Glozar's avatar Tomas Glozar Committed by Steven Rostedt (Google)
Browse files

rtla/tests: Check rtla output with grep

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: default avatarTomas Glozar <tglozar@redhat.com>
Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
parent 3aadb65d
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -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
}