xref: /linux/tools/perf/tests/shell/test_perf_data_converter_ctf.sh (revision c7decec2f2d2ab0366567f9e30c0e1418cece43f)
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