Skip to content

Commit 542079b

Browse files
committed
selftests/ftrace: Add test that tests event :mod: commands
Now that here's a :mod: command that can be sent into set_event, add a test that tests its use. Both setting events for a loaded module, as well as caching what events to set for a module that is not loaded yet. Cc: Shuah Khan <shuah@kernel.org> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: linux-kselftest@vger.kernel.org Link: https://lore.kernel.org/20250116143533.819228058@goodmis.org Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
1 parent b355247 commit 542079b

File tree

1 file changed

+191
-0
lines changed

1 file changed

+191
-0
lines changed
Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
#!/bin/sh
2+
# SPDX-License-Identifier: GPL-2.0
3+
# description: event tracing - enable/disable with module event
4+
# requires: set_event "Can enable module events via: :mod:":README
5+
# flags: instance
6+
7+
rmmod trace-events-sample ||:
8+
if ! modprobe trace-events-sample ; then
9+
echo "No trace-events sample module - please make CONFIG_SAMPLE_TRACE_EVENTS=m"
10+
exit_unresolved;
11+
fi
12+
trap "rmmod trace-events-sample" EXIT
13+
14+
# Set events for the module
15+
echo ":mod:trace-events-sample" > set_event
16+
17+
test_all_enabled() {
18+
19+
# Check if more than one is enabled
20+
grep -q sample-trace:foo_bar set_event
21+
grep -q sample-trace:foo_bar_with_cond set_event
22+
grep -q sample-trace:foo_bar_with_fn set_event
23+
24+
# All of them should be enabled. Check via the enable file
25+
val=`cat events/sample-trace/enable`
26+
if [ $val -ne 1 ]; then
27+
exit_fail
28+
fi
29+
}
30+
31+
clear_events() {
32+
echo > set_event
33+
val=`cat events/enable`
34+
if [ "$val" != "0" ]; then
35+
exit_fail
36+
fi
37+
count=`cat set_event | wc -l`
38+
if [ $count -ne 0 ]; then
39+
exit_fail
40+
fi
41+
}
42+
43+
test_all_enabled
44+
45+
echo clear all events
46+
echo 0 > events/enable
47+
48+
echo Confirm the events are disabled
49+
val=`cat events/sample-trace/enable`
50+
if [ $val -ne 0 ]; then
51+
exit_fail
52+
fi
53+
54+
echo And the set_event file is empty
55+
56+
cnt=`wc -l set_event`
57+
if [ $cnt -ne 0 ]; then
58+
exit_fail
59+
fi
60+
61+
echo now enable all events
62+
echo 1 > events/enable
63+
64+
echo Confirm the events are enabled again
65+
val=`cat events/sample-trace/enable`
66+
if [ $val -ne 1 ]; then
67+
exit_fail
68+
fi
69+
70+
echo disable just the module events
71+
echo '!:mod:trace-events-sample' >> set_event
72+
73+
echo Should have mix of events enabled
74+
val=`cat events/enable`
75+
if [ "$val" != "X" ]; then
76+
exit_fail
77+
fi
78+
79+
echo Confirm the module events are disabled
80+
val=`cat events/sample-trace/enable`
81+
if [ $val -ne 0 ]; then
82+
exit_fail
83+
fi
84+
85+
echo 0 > events/enable
86+
87+
echo now enable the system events
88+
echo 'sample-trace:mod:trace-events-sample' > set_event
89+
90+
test_all_enabled
91+
92+
echo clear all events
93+
echo 0 > events/enable
94+
95+
echo Confirm the events are disabled
96+
val=`cat events/sample-trace/enable`
97+
if [ $val -ne 0 ]; then
98+
exit_fail
99+
fi
100+
101+
echo Test enabling foo_bar only
102+
echo 'foo_bar:mod:trace-events-sample' > set_event
103+
104+
grep -q sample-trace:foo_bar set_event
105+
106+
echo make sure nothing is found besides foo_bar
107+
if grep -q -v sample-trace:foo_bar set_event ; then
108+
exit_fail
109+
fi
110+
111+
echo Append another using the system and event name
112+
echo 'sample-trace:foo_bar_with_cond:mod:trace-events-sample' >> set_event
113+
114+
grep -q sample-trace:foo_bar set_event
115+
grep -q sample-trace:foo_bar_with_cond set_event
116+
117+
count=`cat set_event | wc -l`
118+
119+
if [ $count -ne 2 ]; then
120+
exit_fail
121+
fi
122+
123+
clear_events
124+
125+
rmmod trace-events-sample
126+
127+
echo ':mod:trace-events-sample' > set_event
128+
129+
echo make sure that the module shows up, and '-' is converted to '_'
130+
grep -q '\*:\*:mod:trace_events_sample' set_event
131+
132+
modprobe trace-events-sample
133+
134+
test_all_enabled
135+
136+
clear_events
137+
138+
rmmod trace-events-sample
139+
140+
echo Enable just the system events
141+
echo 'sample-trace:mod:trace-events-sample' > set_event
142+
grep -q 'sample-trace:mod:trace_events_sample' set_event
143+
144+
modprobe trace-events-sample
145+
146+
test_all_enabled
147+
148+
clear_events
149+
150+
rmmod trace-events-sample
151+
152+
echo Enable event with just event name
153+
echo 'foo_bar:mod:trace-events-sample' > set_event
154+
grep -q 'foo_bar:mod:trace_events_sample' set_event
155+
156+
echo Enable another event with both system and event name
157+
echo 'sample-trace:foo_bar_with_cond:mod:trace-events-sample' >> set_event
158+
grep -q 'sample-trace:foo_bar_with_cond:mod:trace_events_sample' set_event
159+
echo Make sure the other event was still there
160+
grep -q 'foo_bar:mod:trace_events_sample' set_event
161+
162+
modprobe trace-events-sample
163+
164+
echo There should be no :mod: cached events
165+
if grep -q ':mod:' set_event; then
166+
exit_fail
167+
fi
168+
169+
echo two events should be enabled
170+
count=`cat set_event | wc -l`
171+
if [ $count -ne 2 ]; then
172+
exit_fail
173+
fi
174+
175+
echo only two events should be enabled
176+
val=`cat events/sample-trace/enable`
177+
if [ "$val" != "X" ]; then
178+
exit_fail
179+
fi
180+
181+
val=`cat events/sample-trace/foo_bar/enable`
182+
if [ "$val" != "1" ]; then
183+
exit_fail
184+
fi
185+
186+
val=`cat events/sample-trace/foo_bar_with_cond/enable`
187+
if [ "$val" != "1" ]; then
188+
exit_fail
189+
fi
190+
191+
clear_trace

0 commit comments

Comments
 (0)