From: Tanushree Shah <tshah@linux.ibm.com>
To: acme@kernel.org, jolsa@kernel.org, adrian.hunter@intel.com,
vmolnaro@redhat.com, mpetlan@redhat.com, tmricht@linux.ibm.com,
maddy@linux.ibm.com, irogers@google.com, namhyung@kernel.org
Cc: linux-perf-users@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
atrajeev@linux.ibm.com, hbathini@linux.ibm.com,
Tejas.Manhas1@ibm.com, Tanushree.Shah@ibm.com,
rostedt@goodmis.org, Tanushree Shah <tshah@linux.ibm.com>
Subject: [RFC PATCH v3 5/5] perf test: Add test validating trace.dat generated by 'perf data convert --to-trace-dat'
Date: Mon, 3 Aug 2026 20:29:55 +0530 [thread overview]
Message-ID: <20260803145958.299956-6-tshah@linux.ibm.com> (raw)
In-Reply-To: <20260803145958.299956-1-tshah@linux.ibm.com>
Add a shell test covering perf data convert --to-trace-dat,
alongside the existing --to-json and --to-ctf tests.
The test:
- skips if perf isn't linked with libtraceevent
- converts a plain sched:sched_switch recording to trace.dat
- converts a pipe-mode recording (perf record -o - | perf data
convert -i -)
- converts a recording with both tracepoint and non-tracepoint
events (sched:sched_switch,cycles)
- validates the resulting file with trace-cmd report if trace-cmd
is installed, otherwise falls back to a basic non-empty-file check
Signed-off-by: Tanushree Shah <tshah@linux.ibm.com>
---
...rf_data_converter_tracepoints_trace_dat.sh | 169 ++++++++++++++++++
1 file changed, 169 insertions(+)
create mode 100755 tools/perf/tests/shell/test_perf_data_converter_tracepoints_trace_dat.sh
diff --git a/tools/perf/tests/shell/test_perf_data_converter_tracepoints_trace_dat.sh b/tools/perf/tests/shell/test_perf_data_converter_tracepoints_trace_dat.sh
new file mode 100755
index 000000000000..9ca6432618cb
--- /dev/null
+++ b/tools/perf/tests/shell/test_perf_data_converter_tracepoints_trace_dat.sh
@@ -0,0 +1,169 @@
+#!/bin/bash
+# 'perf data convert --to-trace-dat' command test
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright 2026, IBM Corporation
+# Author: Tanushree Shah <tshah@linux.ibm.com>
+
+set -e
+
+err=0
+
+perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
+result=$(mktemp /tmp/__perf_test.output.trace.dat.XXXXX)
+
+cleanup()
+{
+ rm -f "${perfdata}"
+ rm -f "${result}"
+ trap - exit term int
+}
+
+trap_cleanup()
+{
+ echo "Unexpected signal in ${FUNCNAME[1]}"
+ cleanup
+ exit 1
+}
+trap trap_cleanup exit term int
+
+# Check if libtraceevent support is available
+if ! perf check feature libtraceevent
+then
+ echo "perf not linked with libtraceevent, skipping test"
+ exit 2
+fi
+
+# Check if trace-cmd is available for validation
+have_trace_cmd=0
+if command -v trace-cmd >/dev/null 2>&1; then
+ have_trace_cmd=1
+fi
+
+check_sched_switch()
+{
+ if ! perf list | grep -q 'sched:sched_switch'
+ then
+ echo "sched:sched_switch tracepoint not available, skipping test"
+ exit 2
+ fi
+}
+
+test_trace_converter_command()
+{
+ echo "Testing Perf Data Conversion Command to trace.dat"
+
+ if ! perf record -e sched:sched_switch -o "$perfdata" -- sleep 0.1
+ then
+ echo "Failed to record perf data"
+ err=1
+ return
+ fi
+
+ rm -f "$result"
+
+ if ! perf data convert --to-trace-dat "$result" --force -i "$perfdata"
+ then
+ echo "Perf Data Converter Command to trace.dat [FAILED]"
+ err=1
+ return
+ fi
+
+ if [ -f "$result" ] && [ -s "$result" ] ; then
+ echo "Perf Data Converter Command to trace.dat [SUCCESS]"
+ else
+ echo "Perf Data Converter Command to trace.dat [FAILED]"
+ err=1
+ fi
+}
+
+test_trace_converter_pipe()
+{
+ echo "Testing Perf Data Conversion Command to trace.dat (Pipe mode)"
+
+ rm -f "$result"
+
+ if ! perf record -e sched:sched_switch -o - -- sleep 0.1 | \
+ perf data convert --to-trace-dat "$result" --force -i -
+ then
+ echo "Perf Data Converter Command to trace.dat (Pipe mode) [FAILED]"
+ err=1
+ return
+ fi
+
+ if [ -f "$result" ] && [ -s "$result" ]; then
+ echo "Perf Data Converter Command to trace.dat (Pipe mode) [SUCCESS]"
+ else
+ echo "Perf Data Converter Command to trace.dat (Pipe mode) [FAILED]"
+ err=1
+ fi
+}
+
+test_trace_converter_mixed_events()
+{
+ echo "Testing Perf Data Conversion with tracepoint and non-tracepoint events"
+
+ # Record both tracepoint and non-tracepoint events
+ if ! perf record -e sched:sched_switch,cycles -o "$perfdata" -- sleep 0.1
+ then
+ echo "Failed to record perf data (mixed events)"
+ err=1
+ return
+ fi
+
+ rm -f "$result"
+
+ if ! perf data convert --to-trace-dat "$result" --force -i "$perfdata"
+ then
+ echo "Perf Data Converter with mixed events [FAILED]"
+ err=1
+ return
+ fi
+
+ if [ -f "$result" ] && [ -s "$result" ] ; then
+ echo "Perf Data Converter with mixed events [SUCCESS]"
+ else
+ echo "Perf Data Converter with mixed events [FAILED]"
+ err=1
+ fi
+}
+
+validate_trace_format()
+{
+ echo "Validating Perf Data Converted trace.dat file"
+
+ if [ ! -f "$result" ] ; then
+ echo "File not found [FAILED]"
+ err=1
+ return
+ fi
+
+ # If trace-cmd is available, use it to validate the file
+ if [ "$have_trace_cmd" -eq 1 ] ; then
+ if trace-cmd report -i "$result" >/dev/null 2>&1 ; then
+ echo "trace-cmd can read the file [SUCCESS]"
+ else
+ echo "trace-cmd cannot read the file [FAILED]"
+ err=1
+ fi
+ else
+ # Without trace-cmd, just check file exists and has content
+ if [ -s "$result" ] ; then
+ echo "Output file exists and has content [SUCCESS]"
+ else
+ echo "Output file is empty [FAILED]"
+ err=1
+ fi
+ fi
+}
+
+check_sched_switch
+test_trace_converter_command
+validate_trace_format
+test_trace_converter_pipe
+validate_trace_format
+test_trace_converter_mixed_events
+validate_trace_format
+
+cleanup
+exit ${err}
--
2.47.1
next prev parent reply other threads:[~2026-08-03 15:01 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-03 14:59 [RFC PATCH v3 0/5] Add perf.data tracepoint events to trace.dat conversion Tanushree Shah
2026-08-03 14:59 ` [RFC PATCH v3 1/5] perf/trace-dat: Add trace.dat export infrastructure Tanushree Shah
2026-08-03 15:14 ` sashiko-bot
2026-08-03 14:59 ` [RFC PATCH v3 2/5] perf/trace-event: Write trace.dat metadata sections during parsing Tanushree Shah
2026-08-03 15:14 ` sashiko-bot
2026-08-03 14:59 ` [RFC PATCH v3 3/5] perf data-convert: Add perf.data to trace.dat conversion backend Tanushree Shah
2026-08-03 15:11 ` sashiko-bot
2026-08-03 14:59 ` [RFC PATCH v3 4/5] perf data: Add --to-trace-dat option for converting perf.data tracepoint events into trace.dat format Tanushree Shah
2026-08-03 15:13 ` sashiko-bot
2026-08-03 14:59 ` Tanushree Shah [this message]
2026-08-03 15:19 ` [RFC PATCH v3 5/5] perf test: Add test validating trace.dat generated by 'perf data convert --to-trace-dat' sashiko-bot
2026-08-06 0:15 ` Ian Rogers
2026-08-06 9:20 ` Tanushree Shah
2026-08-06 0:18 ` [RFC PATCH v3 0/5] Add perf.data tracepoint events to trace.dat conversion Ian Rogers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260803145958.299956-6-tshah@linux.ibm.com \
--to=tshah@linux.ibm.com \
--cc=Tanushree.Shah@ibm.com \
--cc=Tejas.Manhas1@ibm.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=atrajeev@linux.ibm.com \
--cc=hbathini@linux.ibm.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=mpetlan@redhat.com \
--cc=namhyung@kernel.org \
--cc=rostedt@goodmis.org \
--cc=tmricht@linux.ibm.com \
--cc=vmolnaro@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.