xref: /linux-6.15/tools/perf/tests/shell/script.sh (revision e293f4b1)
1bb177a85SIan Rogers#!/bin/sh
2bb177a85SIan Rogers# perf script tests
3bb177a85SIan Rogers# SPDX-License-Identifier: GPL-2.0
4bb177a85SIan Rogers
5bb177a85SIan Rogersset -e
6bb177a85SIan Rogers
7bb177a85SIan Rogerstemp_dir=$(mktemp -d /tmp/perf-test-script.XXXXXXXXXX)
8bb177a85SIan Rogers
9bb177a85SIan Rogersperfdatafile="${temp_dir}/perf.data"
10bb177a85SIan Rogersdb_test="${temp_dir}/db_test.py"
11bb177a85SIan Rogers
12bb177a85SIan Rogerserr=0
13bb177a85SIan Rogers
14bb177a85SIan Rogerscleanup()
15bb177a85SIan Rogers{
16bb177a85SIan Rogers	trap - EXIT TERM INT
17bb177a85SIan Rogers	sane=$(echo "${temp_dir}" | cut -b 1-21)
18bb177a85SIan Rogers	if [ "${sane}" = "/tmp/perf-test-script" ] ; then
19bb177a85SIan Rogers		echo "--- Cleaning up ---"
20e0c48bf9SAdrian Hunter		rm -rf "${temp_dir:?}/"*
21bb177a85SIan Rogers		rmdir "${temp_dir}"
22bb177a85SIan Rogers	fi
23bb177a85SIan Rogers}
24bb177a85SIan Rogers
25bb177a85SIan Rogerstrap_cleanup()
26bb177a85SIan Rogers{
27bb177a85SIan Rogers	cleanup
28bb177a85SIan Rogers	exit 1
29bb177a85SIan Rogers}
30bb177a85SIan Rogers
31bb177a85SIan Rogerstrap trap_cleanup EXIT TERM INT
32bb177a85SIan Rogers
33bb177a85SIan Rogers
34bb177a85SIan Rogerstest_db()
35bb177a85SIan Rogers{
36bb177a85SIan Rogers	echo "DB test"
37bb177a85SIan Rogers
38bb177a85SIan Rogers	# Check if python script is supported
391c2124ecSIan Rogers        if perf version --build-options | grep python | grep -q OFF ; then
40bb177a85SIan Rogers		echo "SKIP: python scripting is not supported"
41bb177a85SIan Rogers		err=2
42bb177a85SIan Rogers		return
43bb177a85SIan Rogers	fi
44bb177a85SIan Rogers
45bb177a85SIan Rogers	cat << "_end_of_file_" > "${db_test}"
46bb177a85SIan Rogersperf_db_export_mode = True
47bb177a85SIan Rogersperf_db_export_calls = False
48bb177a85SIan Rogersperf_db_export_callchains = True
49bb177a85SIan Rogers
50bb177a85SIan Rogersdef sample_table(*args):
51bb177a85SIan Rogers    print(f'sample_table({args})')
52bb177a85SIan Rogers
53bb177a85SIan Rogersdef call_path_table(*args):
54bb177a85SIan Rogers    print(f'call_path_table({args}')
55bb177a85SIan Rogers_end_of_file_
562dac1f08SThomas Richter	case $(uname -m)
572dac1f08SThomas Richter	in s390x)
582dac1f08SThomas Richter		cmd_flags="--call-graph dwarf -e cpu-clock";;
592dac1f08SThomas Richter	*)
602dac1f08SThomas Richter		cmd_flags="-g";;
612dac1f08SThomas Richter	esac
622dac1f08SThomas Richter
632dac1f08SThomas Richter	perf record $cmd_flags -o "${perfdatafile}" true
64*e293f4b1SIan Rogers	# Disable lsan to avoid warnings about python memory leaks.
65*e293f4b1SIan Rogers	export ASAN_OPTIONS=detect_leaks=0
66bb177a85SIan Rogers	perf script -i "${perfdatafile}" -s "${db_test}"
67*e293f4b1SIan Rogers	export ASAN_OPTIONS=
68bb177a85SIan Rogers	echo "DB test [Success]"
69bb177a85SIan Rogers}
70bb177a85SIan Rogers
71e0c48bf9SAdrian Huntertest_parallel_perf()
72e0c48bf9SAdrian Hunter{
73e0c48bf9SAdrian Hunter	echo "parallel-perf test"
74e0c48bf9SAdrian Hunter	if ! python3 --version >/dev/null 2>&1 ; then
75e0c48bf9SAdrian Hunter		echo "SKIP: no python3"
76e0c48bf9SAdrian Hunter		err=2
77e0c48bf9SAdrian Hunter		return
78e0c48bf9SAdrian Hunter	fi
79e0c48bf9SAdrian Hunter	pp=$(dirname "$0")/../../scripts/python/parallel-perf.py
80e0c48bf9SAdrian Hunter	if [ ! -f "${pp}" ] ; then
81e0c48bf9SAdrian Hunter		echo "SKIP: parallel-perf.py script not found "
82e0c48bf9SAdrian Hunter		err=2
83e0c48bf9SAdrian Hunter		return
84e0c48bf9SAdrian Hunter	fi
85e0c48bf9SAdrian Hunter	perf_data="${temp_dir}/pp-perf.data"
86e0c48bf9SAdrian Hunter	output1_dir="${temp_dir}/output1"
87e0c48bf9SAdrian Hunter	output2_dir="${temp_dir}/output2"
88e0c48bf9SAdrian Hunter	perf record -o "${perf_data}" --sample-cpu uname
89e0c48bf9SAdrian Hunter	python3 "${pp}" -o "${output1_dir}" --jobs 4 --verbose -- perf script -i "${perf_data}"
90e0c48bf9SAdrian Hunter	python3 "${pp}" -o "${output2_dir}" --jobs 4 --verbose --per-cpu -- perf script -i "${perf_data}"
91e0c48bf9SAdrian Hunter	echo "parallel-perf test [Success]"
92e0c48bf9SAdrian Hunter}
93e0c48bf9SAdrian Hunter
94bb177a85SIan Rogerstest_db
95e0c48bf9SAdrian Huntertest_parallel_perf
96bb177a85SIan Rogers
97bb177a85SIan Rogerscleanup
98bb177a85SIan Rogers
99bb177a85SIan Rogersexit $err
100