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.

Signed-off-by: Tomas Glozar <[email protected]>
---

Depends on "rtla/tests: Extend runtime test coverage" patchset
- 
https://lore.kernel.org/linux-trace-kernel/[email protected]/

 tools/tracing/rtla/tests/engine.sh  | 12 ++++++++++++
 tools/tracing/rtla/tests/osnoise.t  |  8 ++++----
 tools/tracing/rtla/tests/timerlat.t | 16 ++++++++--------
 3 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/tools/tracing/rtla/tests/engine.sh 
b/tools/tracing/rtla/tests/engine.sh
index 27d92f19a322..5bf8453d354d 100644
--- a/tools/tracing/rtla/tests/engine.sh
+++ b/tools/tracing/rtla/tests/engine.sh
@@ -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
 }
 
diff --git a/tools/tracing/rtla/tests/osnoise.t 
b/tools/tracing/rtla/tests/osnoise.t
index 06787471d0e8..9c2f84a4187d 100644
--- a/tools/tracing/rtla/tests/osnoise.t
+++ b/tools/tracing/rtla/tests/osnoise.t
@@ -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" \
diff --git a/tools/tracing/rtla/tests/timerlat.t 
b/tools/tracing/rtla/tests/timerlat.t
index 3ebfe316b39e..f3e5f99e862b 100644
--- a/tools/tracing/rtla/tests/timerlat.t
+++ b/tools/tracing/rtla/tests/timerlat.t
@@ -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
-- 
2.54.0


Reply via email to