mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 12:21:22 -05:00
The test starts a backgroup thloop workload and monitors it using cpu-clock ensuring test_loop appears in the output. Signed-off-by: Ian Rogers <irogers@google.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
75 lines
1.6 KiB
Bash
Executable File
75 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# perf top tests
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
set -e
|
|
|
|
err=0
|
|
log_file=$(mktemp /tmp/perf.top.log.XXXXX)
|
|
|
|
cleanup() {
|
|
rm -f "${log_file}"
|
|
trap - EXIT TERM INT
|
|
}
|
|
|
|
trap_cleanup() {
|
|
echo "Unexpected signal in ${FUNCNAME[1]}"
|
|
cleanup
|
|
exit 1
|
|
}
|
|
trap trap_cleanup EXIT TERM INT
|
|
|
|
test_basic_perf_top() {
|
|
echo "Basic perf top test"
|
|
|
|
# Start a workload that spins to generate samples
|
|
# thloop runs for the specified number of seconds
|
|
perf test -w thloop 20 &
|
|
PID=$!
|
|
|
|
# Allow it to start
|
|
sleep 0.1
|
|
|
|
# Run perf top for 5 seconds, monitoring that PID
|
|
# Use --stdio to avoid TUI and redirect output
|
|
# Use -d 1 to avoid flooding output
|
|
# Use -e cpu-clock to ensure we get samples
|
|
# Use sleep to keep stdin open but silent, preventing EOF loop or interactive spam
|
|
if ! sleep 10 | timeout 5s perf top --stdio -d 1 -e cpu-clock -p $PID > "${log_file}" 2>&1; then
|
|
retval=$?
|
|
if [ $retval -ne 124 ] && [ $retval -ne 0 ]; then
|
|
echo "Basic perf top test [Failed: perf top failed to start or run (ret=$retval)]"
|
|
head -n 50 "${log_file}"
|
|
kill $PID
|
|
wait $PID 2>/dev/null || true
|
|
err=1
|
|
return
|
|
fi
|
|
fi
|
|
|
|
kill $PID
|
|
wait $PID 2>/dev/null || true
|
|
|
|
# Check for some sample data (percentage)
|
|
if ! grep -E -q "[0-9]+\.[0-9]+%" "${log_file}"; then
|
|
echo "Basic perf top test [Failed: no sample percentage found]"
|
|
head -n 50 "${log_file}"
|
|
err=1
|
|
return
|
|
fi
|
|
|
|
# Check for the symbol
|
|
if ! grep -q "test_loop" "${log_file}"; then
|
|
echo "Basic perf top test [Failed: test_loop symbol not found]"
|
|
head -n 50 "${log_file}"
|
|
err=1
|
|
return
|
|
fi
|
|
|
|
echo "Basic perf top test [Success]"
|
|
}
|
|
|
|
test_basic_perf_top
|
|
cleanup
|
|
exit $err
|