Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/ftrace: Add a basic testcase for snapshot

This testcase is constrived to reproduce a problem that the cpu buffers
become unavailable which is due to 'record_disabled' of array_buffer and
max_buffer being messed up.

Local test result after bugfix:
# ./ftracetest test.d/00basic/snapshot1.tc
=== Ftrace unit tests ===
[1] Snapshot and tracing_cpumask [PASS]
[2] (instance) Snapshot and tracing_cpumask [PASS]

# of passed: 2
# of failed: 0
# of unresolved: 0
# of untested: 0
# of unsupported: 0
# of xfailed: 0
# of undefined(test bug): 0

Link: https://lkml.kernel.org/r/20230805033816.3284594-3-zhengyejian1@huawei.com

Cc: <mhiramat@kernel.org>
Cc: <vnagarnaik@google.com>
Cc: <shuah@kernel.org>
Signed-off-by: Zheng Yejian <zhengyejian1@huawei.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>

authored by

Zheng Yejian and committed by
Steven Rostedt (Google)
5450be6b b71645d6

+31
+31
tools/testing/selftests/ftrace/test.d/00basic/snapshot1.tc
··· 1 + #!/bin/sh 2 + # SPDX-License-Identifier: GPL-2.0 3 + # description: Snapshot and tracing_cpumask 4 + # requires: trace_marker tracing_cpumask snapshot 5 + # flags: instance 6 + 7 + # This testcase is constrived to reproduce a problem that the cpu buffers 8 + # become unavailable which is due to 'record_disabled' of array_buffer and 9 + # max_buffer being messed up. 10 + 11 + # Store origin cpumask 12 + ORIG_CPUMASK=`cat tracing_cpumask` 13 + 14 + # Stop tracing all cpu 15 + echo 0 > tracing_cpumask 16 + 17 + # Take a snapshot of the main buffer 18 + echo 1 > snapshot 19 + 20 + # Restore origin cpumask, note that there should be some cpus being traced 21 + echo ${ORIG_CPUMASK} > tracing_cpumask 22 + 23 + # Set tracing on 24 + echo 1 > tracing_on 25 + 26 + # Write a log into buffer 27 + echo "test input 1" > trace_marker 28 + 29 + # Ensure the log writed so that cpu buffers are still available 30 + grep -q "test input 1" trace 31 + exit 0