#!/bin/sh
# perf script tests
# SPDX-License-Identifier: GPL-2.0

set -e

temp_dir=$(mktemp -d /tmp/perf-test-script.XXXXXXXXXX)

perfdatafile="${temp_dir}/perf.data"
db_test="${temp_dir}/db_test.py"

err=0

cleanup()
{
	trap - EXIT TERM INT
	sane=$(echo "${temp_dir}" | cut -b 1-21)
	if [ "${sane}" = "/tmp/perf-test-script" ] ; then
		echo "--- Cleaning up ---"
		rm -rf "${temp_dir:?}/"*
		rmdir "${temp_dir}"
	fi
}

trap_cleanup()
{
	cleanup
	exit 1
}

trap trap_cleanup EXIT TERM INT


test_db()
{
	echo "DB test"

	# Check if python script is supported
        if perf version --build-options | grep python | grep -q OFF ; then
		echo "SKIP: python scripting is not supported"
		err=2
		return
	fi

	cat << "_end_of_file_" > "${db_test}"
perf_db_export_mode = True
perf_db_export_calls = False
perf_db_export_callchains = True

def sample_table(*args):
    print(f'sample_table({args})')

def call_path_table(*args):
    print(f'call_path_table({args}')
_end_of_file_
	case $(uname -m)
	in s390x)
		cmd_flags="--call-graph dwarf -e cpu-clock";;
	*)
		cmd_flags="-g";;
	esac

	perf record $cmd_flags -o "${perfdatafile}" true
	# Disable lsan to avoid warnings about python memory leaks.
	export ASAN_OPTIONS=detect_leaks=0
	perf script -i "${perfdatafile}" -s "${db_test}"
	export ASAN_OPTIONS=
	echo "DB test [Success]"
}

test_parallel_perf()
{
	echo "parallel-perf test"
	if ! python3 --version >/dev/null 2>&1 ; then
		echo "SKIP: no python3"
		err=2
		return
	fi
	pp=$(dirname "$0")/../../scripts/python/parallel-perf.py
	if [ ! -f "${pp}" ] ; then
		echo "SKIP: parallel-perf.py script not found "
		err=2
		return
	fi
	perf_data="${temp_dir}/pp-perf.data"
	output1_dir="${temp_dir}/output1"
	output2_dir="${temp_dir}/output2"
	perf record -o "${perf_data}" --sample-cpu uname
	python3 "${pp}" -o "${output1_dir}" --jobs 4 --verbose -- perf script -i "${perf_data}"
	python3 "${pp}" -o "${output2_dir}" --jobs 4 --verbose --per-cpu -- perf script -i "${perf_data}"
	echo "parallel-perf test [Success]"
}

test_db
test_parallel_perf

cleanup

exit $err
