brintos

brintos / linux-shallow public Read only

0
0
Text · 2.0 KiB · d3e2958 Raw
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