mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 03:27:30 -04:00
rtla/tests: Run runtime tests in temporary directory
Create a temporary directory before each test case to serve as working directory during the duration of the test. This prevents littering of the original working directory as well as allows tests to use it to avoid path conflicts. In order not to break already existing tests, also add a new "testdir" variable containing the directory where the test file is located. This is then used to locate artifacts used during testing like BPF programs and scripts for checking the tracer threads. Link: https://lore.kernel.org/r/20260526102523.2662391-3-tglozar@redhat.com Signed-off-by: Tomas Glozar <tglozar@redhat.com>
This commit is contained in:
@@ -4,6 +4,9 @@ test_begin() {
|
||||
# Count tests to allow the test harness to double-check if all were
|
||||
# included correctly.
|
||||
ctr=0
|
||||
# Set test directory to the directory of the script
|
||||
scriptfile=$(realpath "$0")
|
||||
testdir=$(dirname "$scriptfile")
|
||||
[ -z "$RTLA" ] && RTLA="./rtla"
|
||||
[ -n "$TEST_COUNT" ] && echo "1..$TEST_COUNT"
|
||||
}
|
||||
@@ -51,6 +54,11 @@ check() {
|
||||
then
|
||||
# Reset osnoise options before running test.
|
||||
[ "$NO_RESET_OSNOISE" == 1 ] || reset_osnoise
|
||||
|
||||
# Create a temporary directory to contain rtla output
|
||||
tmpdir=$(mktemp -d)
|
||||
pushd $tmpdir >/dev/null
|
||||
|
||||
# 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=$?
|
||||
@@ -82,6 +90,10 @@ check() {
|
||||
echo "$result" | col -b | while read line; do echo "# $line"; done
|
||||
printf "#\n# exit code %s\n" $exitcode
|
||||
fi
|
||||
|
||||
# Remove temporary directory
|
||||
popd >/dev/null
|
||||
rm -r $tmpdir
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -16,15 +16,15 @@ check_top_q_hist "verify the --trace param" \
|
||||
|
||||
# Thread tests
|
||||
check_top_q_hist "verify the --priority/-P param" \
|
||||
"osnoise TOOL -P F:1 -c 0 -r 900000 -d 10s -S 1 --on-threshold shell,command=\"tests/scripts/check-priority.sh SCHED_FIFO 1\"" \
|
||||
"osnoise TOOL -P F:1 -c 0 -r 900000 -d 10s -S 1 --on-threshold shell,command=\"$testdir/scripts/check-priority.sh SCHED_FIFO 1\"" \
|
||||
2 "Priorities are set correctly"
|
||||
check_top_q_hist "verify the -C/--cgroup param" \
|
||||
"osnoise TOOL -C -c 0 -r 900000 -d 10s -S 1 --on-threshold shell,command=\"tests/scripts/check-cgroup-match.sh\"" \
|
||||
"osnoise TOOL -C -c 0 -r 900000 -d 10s -S 1 --on-threshold shell,command=\"$testdir/scripts/check-cgroup-match.sh\"" \
|
||||
2 "cgroup matches for all workload PIDs"
|
||||
check_top_q_hist "verify the -c/--cpus param" \
|
||||
"osnoise TOOL -P F:1 -c 0 -r 900000 -d 10s -S 1 --on-threshold shell,command=tests/scripts/check-cpus.sh" 2 "^Affinity of threads: 0$"
|
||||
"osnoise TOOL -P F:1 -c 0 -r 900000 -d 10s -S 1 --on-threshold shell,command=$testdir/scripts/check-cpus.sh" 2 "^Affinity of threads: 0$"
|
||||
check_top_q_hist "verify the -H/--house-keeping param" \
|
||||
"osnoise TOOL -P F:1 -H 0 -r 900000 -d 10s -S 1 --on-threshold shell,command=tests/scripts/check-housekeeping-cpus.sh" 2 "^Affinity of threads: 0$"
|
||||
"osnoise TOOL -P F:1 -H 0 -r 900000 -d 10s -S 1 --on-threshold shell,command=$testdir/scripts/check-housekeeping-cpus.sh" 2 "^Affinity of threads: 0$"
|
||||
|
||||
# Histogram tests
|
||||
check "hist with -b/--bucket-size" \
|
||||
|
||||
@@ -41,19 +41,19 @@ check_top_hist "disable auto-analysis" \
|
||||
|
||||
# Thread tests
|
||||
check_top_hist "verify -P/--priority" \
|
||||
"timerlat TOOL -P F:1 -c 0 -d 10s -T 1 --on-threshold shell,command=\"tests/scripts/check-priority.sh SCHED_FIFO 1\"" \
|
||||
"timerlat TOOL -P F:1 -c 0 -d 10s -T 1 --on-threshold shell,command=\"$testdir/scripts/check-priority.sh SCHED_FIFO 1\"" \
|
||||
2 "Priorities are set correctly"
|
||||
check_top_hist "verify -C/--cgroup" \
|
||||
"timerlat TOOL -k -C -c 0 -d 10s -T 1 --on-threshold shell,command=\"tests/scripts/check-cgroup-match.sh\"" \
|
||||
"timerlat TOOL -k -C -c 0 -d 10s -T 1 --on-threshold shell,command=\"$testdir/scripts/check-cgroup-match.sh\"" \
|
||||
2 "cgroup matches for all workload PIDs"
|
||||
check_top_q_hist "verify -c/--cpus" \
|
||||
"timerlat TOOL -c 0 -d 10s -T 1 --on-threshold shell,command=tests/scripts/check-cpus.sh" 2 "^Affinity of threads: 0$"
|
||||
"timerlat TOOL -c 0 -d 10s -T 1 --on-threshold shell,command=$testdir/scripts/check-cpus.sh" 2 "^Affinity of threads: 0$"
|
||||
check_top_q_hist "verify -H/--house-keeping" \
|
||||
"timerlat TOOL -H 0 -d 10s -T 1 --on-threshold shell,command=tests/scripts/check-housekeeping-cpus.sh" 2 "^Affinity of threads: 0$"
|
||||
"timerlat TOOL -H 0 -d 10s -T 1 --on-threshold shell,command=$testdir/scripts/check-housekeeping-cpus.sh" 2 "^Affinity of threads: 0$"
|
||||
check_top_q_hist "verify -k/--kernel-threads" \
|
||||
"timerlat TOOL -k -c 0 -d 10s -T 1 --on-threshold shell,command=tests/scripts/check-user-kernel-threads.sh" 2 "1 kernel threads, 0 user threads"
|
||||
"timerlat TOOL -k -c 0 -d 10s -T 1 --on-threshold shell,command=$testdir/scripts/check-user-kernel-threads.sh" 2 "1 kernel threads, 0 user threads"
|
||||
check_top_q_hist "verify -u/--user-threads" \
|
||||
"timerlat TOOL -u -c 0 -d 10s -T 1 --on-threshold shell,command=tests/scripts/check-user-kernel-threads.sh" 2 "0 kernel threads, 1 user threads"
|
||||
"timerlat TOOL -u -c 0 -d 10s -T 1 --on-threshold shell,command=$testdir/scripts/check-user-kernel-threads.sh" 2 "0 kernel threads, 1 user threads"
|
||||
|
||||
# Histogram tests
|
||||
check "hist with -b/--bucket-size" \
|
||||
@@ -103,12 +103,12 @@ then
|
||||
# Test BPF action program properly in BPF mode
|
||||
[ -z "$BPFTOOL" ] && BPFTOOL=bpftool
|
||||
check_top_q_hist "with BPF action program (BPF mode)" \
|
||||
"timerlat TOOL -T 2 --bpf-action tests/bpf/bpf_action_map.o --on-threshold shell,command='$BPFTOOL map dump name rtla_test_map'" \
|
||||
"timerlat TOOL -T 2 --bpf-action $testdir/bpf/bpf_action_map.o --on-threshold shell,command='$BPFTOOL map dump name rtla_test_map'" \
|
||||
2 '"value": 42'
|
||||
else
|
||||
# Test BPF action program failure in non-BPF mode
|
||||
check_top_q_hist "with BPF action program (non-BPF mode)" \
|
||||
"timerlat TOOL -T 2 --bpf-action tests/bpf/bpf_action_map.o" \
|
||||
"timerlat TOOL -T 2 --bpf-action $testdir/bpf/bpf_action_map.o" \
|
||||
1 "BPF actions are not supported in tracefs-only mode"
|
||||
fi
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user