| #!/bin/bash | |
| # perf c2c tests | |
| # SPDX-License-Identifier: GPL-2.0 | |
| set -e | |
| err=0 | |
| perfdata=$(mktemp /tmp/__perf_c2c_test.perf.data.XXXXX) | |
| cleanup() { | |
| rm -f "${perfdata}" | |
| rm -f "${perfdata}".old | |
| trap - EXIT TERM INT | |
| } | |
| trap_cleanup() { | |
| echo "Unexpected signal in ${FUNCNAME[1]}" | |
| cleanup | |
| exit 1 | |
| } | |
| trap trap_cleanup EXIT TERM INT | |
| check_c2c_support() { | |
| # Check if perf c2c record works. | |
| if ! perf c2c record -o "${perfdata}" -- true > /dev/null 2>&1 ; then | |
| return 1 | |
| fi | |
| return 0 | |
| } | |
| test_c2c_record_report() { | |
| echo "c2c record and report test" | |
| if ! check_c2c_support ; then | |
| echo "c2c record and report test [Skipped: perf c2c record failed (possibly missing hardware support)]" | |
| err=2 | |
| return | |
| fi | |
| # Run a workload that does some memory operations. | |
| if ! perf c2c record -o "${perfdata}" -- perf test -w datasym 1 > /dev/null 2>&1 ; then | |
| echo "c2c record and report test [Skipped: perf c2c record failed during workload]" | |
| return | |
| fi | |
| if ! perf c2c report -i "${perfdata}" --stdio > /dev/null 2>&1 ; then | |
| echo "c2c record and report test [Failed: report failed]" | |
| err=1 | |
| return | |
| fi | |
| if ! perf c2c report -i "${perfdata}" -N > /dev/null 2>&1 ; then | |
| echo "c2c record and report test [Failed: report -N failed]" | |
| err=1 | |
| return | |
| fi | |
| echo "c2c record and report test [Success]" | |
| } | |
| test_c2c_record_report | |
| cleanup | |
| exit $err |