100 lines · bash
1#!/bin/sh2# perf script tests3# SPDX-License-Identifier: GPL-2.04 5set -e6 7temp_dir=$(mktemp -d /tmp/perf-test-script.XXXXXXXXXX)8 9perfdatafile="${temp_dir}/perf.data"10db_test="${temp_dir}/db_test.py"11 12err=013 14cleanup()15{16 trap - EXIT TERM INT17 sane=$(echo "${temp_dir}" | cut -b 1-21)18 if [ "${sane}" = "/tmp/perf-test-script" ] ; then19 echo "--- Cleaning up ---"20 rm -rf "${temp_dir:?}/"*21 rmdir "${temp_dir}"22 fi23}24 25trap_cleanup()26{27 cleanup28 exit 129}30 31trap trap_cleanup EXIT TERM INT32 33 34test_db()35{36 echo "DB test"37 38 # Check if python script is supported39 if perf version --build-options | grep python | grep -q OFF ; then40 echo "SKIP: python scripting is not supported"41 err=242 return43 fi44 45 cat << "_end_of_file_" > "${db_test}"46perf_db_export_mode = True47perf_db_export_calls = False48perf_db_export_callchains = True49 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 esac62 63 perf record $cmd_flags -o "${perfdatafile}" true64 # Disable lsan to avoid warnings about python memory leaks.65 export ASAN_OPTIONS=detect_leaks=066 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 ; then75 echo "SKIP: no python3"76 err=277 return78 fi79 pp=$(dirname "$0")/../../scripts/python/parallel-perf.py80 if [ ! -f "${pp}" ] ; then81 echo "SKIP: parallel-perf.py script not found "82 err=283 return84 fi85 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 uname89 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_db95test_parallel_perf96 97cleanup98 99exit $err100