#!/bin/bash
# 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
