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