1*9083ce53SIan Rogers#!/bin/bash 2*9083ce53SIan Rogers# 'perf data convert --to-ctf' command test 3*9083ce53SIan Rogers# SPDX-License-Identifier: GPL-2.0 4*9083ce53SIan Rogers 5*9083ce53SIan Rogersset -e 6*9083ce53SIan Rogers 7*9083ce53SIan Rogerserr=0 8*9083ce53SIan Rogers 9*9083ce53SIan Rogersperfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX) 10*9083ce53SIan Rogersctf_dir=$(mktemp -d /tmp/__perf_test.ctf.XXXXX) 11*9083ce53SIan Rogers 12*9083ce53SIan Rogerscleanup() 13*9083ce53SIan Rogers{ 14*9083ce53SIan Rogers rm -f "${perfdata}" 15*9083ce53SIan Rogers rm -rf "${ctf_dir}" 16*9083ce53SIan Rogers trap - exit term int 17*9083ce53SIan Rogers} 18*9083ce53SIan Rogers 19*9083ce53SIan Rogerstrap_cleanup() 20*9083ce53SIan Rogers{ 21*9083ce53SIan Rogers echo "Unexpected signal in ${FUNCNAME[1]}" 22*9083ce53SIan Rogers cleanup 23*9083ce53SIan Rogers exit ${err} 24*9083ce53SIan Rogers} 25*9083ce53SIan Rogerstrap trap_cleanup exit term int 26*9083ce53SIan Rogers 27*9083ce53SIan Rogerscheck_babeltrace_support() 28*9083ce53SIan Rogers{ 29*9083ce53SIan Rogers if ! perf check feature libbabeltrace 30*9083ce53SIan Rogers then 31*9083ce53SIan Rogers echo "perf not linked with libbabeltrace, skipping test" 32*9083ce53SIan Rogers exit 2 33*9083ce53SIan Rogers fi 34*9083ce53SIan Rogers} 35*9083ce53SIan Rogers 36*9083ce53SIan Rogerstest_ctf_converter_file() 37*9083ce53SIan Rogers{ 38*9083ce53SIan Rogers echo "Testing Perf Data Conversion Command to CTF (File input)" 39*9083ce53SIan Rogers # Record some data 40*9083ce53SIan Rogers if ! perf record -o "$perfdata" -F 99 -g -- perf test -w noploop 41*9083ce53SIan Rogers then 42*9083ce53SIan Rogers echo "Failed to record perf data" 43*9083ce53SIan Rogers err=1 44*9083ce53SIan Rogers return 45*9083ce53SIan Rogers fi 46*9083ce53SIan Rogers 47*9083ce53SIan Rogers # Cleanup previous ctf dir 48*9083ce53SIan Rogers rm -rf "${ctf_dir}" 49*9083ce53SIan Rogers 50*9083ce53SIan Rogers # Convert 51*9083ce53SIan Rogers if ! perf data convert --to-ctf "$ctf_dir" --force -i "$perfdata" 52*9083ce53SIan Rogers then 53*9083ce53SIan Rogers echo "Perf Data Converter Command to CTF (File input) [FAILED]" 54*9083ce53SIan Rogers err=1 55*9083ce53SIan Rogers return 56*9083ce53SIan Rogers fi 57*9083ce53SIan Rogers 58*9083ce53SIan Rogers if [ -d "${ctf_dir}" ] && [ "$(ls -A "${ctf_dir}")" ] 59*9083ce53SIan Rogers then 60*9083ce53SIan Rogers echo "Perf Data Converter Command to CTF (File input) [SUCCESS]" 61*9083ce53SIan Rogers else 62*9083ce53SIan Rogers echo "Perf Data Converter Command to CTF (File input) [FAILED]" 63*9083ce53SIan Rogers echo " Output directory empty or missing" 64*9083ce53SIan Rogers err=1 65*9083ce53SIan Rogers fi 66*9083ce53SIan Rogers} 67*9083ce53SIan Rogers 68*9083ce53SIan Rogerstest_ctf_converter_pipe() 69*9083ce53SIan Rogers{ 70*9083ce53SIan Rogers echo "Testing Perf Data Conversion Command to CTF (Pipe mode)" 71*9083ce53SIan Rogers 72*9083ce53SIan Rogers # Cleanup previous ctf dir 73*9083ce53SIan Rogers rm -rf "${ctf_dir}" 74*9083ce53SIan Rogers 75*9083ce53SIan Rogers # Record to stdout and pipe to $perfdata file 76*9083ce53SIan Rogers if ! perf record -o - -F 99 -g -- perf test -w noploop > "$perfdata" 77*9083ce53SIan Rogers then 78*9083ce53SIan Rogers echo "Failed to record perf data" 79*9083ce53SIan Rogers err=1 80*9083ce53SIan Rogers return 81*9083ce53SIan Rogers fi 82*9083ce53SIan Rogers 83*9083ce53SIan Rogers if ! perf data convert --to-ctf "$ctf_dir" --force -i "$perfdata" 84*9083ce53SIan Rogers then 85*9083ce53SIan Rogers echo "Perf Data Converter Command to CTF (Pipe mode) [FAILED]" 86*9083ce53SIan Rogers err=1 87*9083ce53SIan Rogers return 88*9083ce53SIan Rogers fi 89*9083ce53SIan Rogers 90*9083ce53SIan Rogers if [ -d "${ctf_dir}" ] && [ "$(ls -A "${ctf_dir}")" ] 91*9083ce53SIan Rogers then 92*9083ce53SIan Rogers echo "Perf Data Converter Command to CTF (Pipe mode) [SUCCESS]" 93*9083ce53SIan Rogers else 94*9083ce53SIan Rogers echo "Perf Data Converter Command to CTF (Pipe mode) [FAILED]" 95*9083ce53SIan Rogers echo " Output directory empty or missing" 96*9083ce53SIan Rogers err=1 97*9083ce53SIan Rogers fi 98*9083ce53SIan Rogers} 99*9083ce53SIan Rogers 100*9083ce53SIan Rogerscheck_babeltrace_support 101*9083ce53SIan Rogerstest_ctf_converter_file 102*9083ce53SIan Rogerstest_ctf_converter_pipe 103*9083ce53SIan Rogers 104*9083ce53SIan Rogersexit ${err} 105