192 lines
4.0 KiB
Bash
192 lines
4.0 KiB
Bash
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# description: event tracing - enable/disable with module event
|
|
# requires: set_event "Can enable module events via: :mod:":README
|
|
# flags: instance
|
|
|
|
rmmod trace-events-sample ||:
|
|
if ! modprobe trace-events-sample ; then
|
|
echo "No trace-events sample module - please make CONFIG_SAMPLE_TRACE_EVENTS=m"
|
|
exit_unresolved;
|
|
fi
|
|
trap "rmmod trace-events-sample" EXIT
|
|
|
|
# Set events for the module
|
|
echo ":mod:trace-events-sample" > set_event
|
|
|
|
test_all_enabled() {
|
|
|
|
# Check if more than one is enabled
|
|
grep -q sample-trace:foo_bar set_event
|
|
grep -q sample-trace:foo_bar_with_cond set_event
|
|
grep -q sample-trace:foo_bar_with_fn set_event
|
|
|
|
# All of them should be enabled. Check via the enable file
|
|
val=`cat events/sample-trace/enable`
|
|
if [ $val -ne 1 ]; then
|
|
exit_fail
|
|
fi
|
|
}
|
|
|
|
clear_events() {
|
|
echo > set_event
|
|
val=`cat events/enable`
|
|
if [ "$val" != "0" ]; then
|
|
exit_fail
|
|
fi
|
|
count=`cat set_event | wc -l`
|
|
if [ $count -ne 0 ]; then
|
|
exit_fail
|
|
fi
|
|
}
|
|
|
|
test_all_enabled
|
|
|
|
echo clear all events
|
|
echo 0 > events/enable
|
|
|
|
echo Confirm the events are disabled
|
|
val=`cat events/sample-trace/enable`
|
|
if [ $val -ne 0 ]; then
|
|
exit_fail
|
|
fi
|
|
|
|
echo And the set_event file is empty
|
|
|
|
cnt=`wc -l set_event`
|
|
if [ $cnt -ne 0 ]; then
|
|
exit_fail
|
|
fi
|
|
|
|
echo now enable all events
|
|
echo 1 > events/enable
|
|
|
|
echo Confirm the events are enabled again
|
|
val=`cat events/sample-trace/enable`
|
|
if [ $val -ne 1 ]; then
|
|
exit_fail
|
|
fi
|
|
|
|
echo disable just the module events
|
|
echo '!:mod:trace-events-sample' >> set_event
|
|
|
|
echo Should have mix of events enabled
|
|
val=`cat events/enable`
|
|
if [ "$val" != "X" ]; then
|
|
exit_fail
|
|
fi
|
|
|
|
echo Confirm the module events are disabled
|
|
val=`cat events/sample-trace/enable`
|
|
if [ $val -ne 0 ]; then
|
|
exit_fail
|
|
fi
|
|
|
|
echo 0 > events/enable
|
|
|
|
echo now enable the system events
|
|
echo 'sample-trace:mod:trace-events-sample' > set_event
|
|
|
|
test_all_enabled
|
|
|
|
echo clear all events
|
|
echo 0 > events/enable
|
|
|
|
echo Confirm the events are disabled
|
|
val=`cat events/sample-trace/enable`
|
|
if [ $val -ne 0 ]; then
|
|
exit_fail
|
|
fi
|
|
|
|
echo Test enabling foo_bar only
|
|
echo 'foo_bar:mod:trace-events-sample' > set_event
|
|
|
|
grep -q sample-trace:foo_bar set_event
|
|
|
|
echo make sure nothing is found besides foo_bar
|
|
if grep -q -v sample-trace:foo_bar set_event ; then
|
|
exit_fail
|
|
fi
|
|
|
|
echo Append another using the system and event name
|
|
echo 'sample-trace:foo_bar_with_cond:mod:trace-events-sample' >> set_event
|
|
|
|
grep -q sample-trace:foo_bar set_event
|
|
grep -q sample-trace:foo_bar_with_cond set_event
|
|
|
|
count=`cat set_event | wc -l`
|
|
|
|
if [ $count -ne 2 ]; then
|
|
exit_fail
|
|
fi
|
|
|
|
clear_events
|
|
|
|
rmmod trace-events-sample
|
|
|
|
echo ':mod:trace-events-sample' > set_event
|
|
|
|
echo make sure that the module shows up, and '-' is converted to '_'
|
|
grep -q '\*:\*:mod:trace_events_sample' set_event
|
|
|
|
modprobe trace-events-sample
|
|
|
|
test_all_enabled
|
|
|
|
clear_events
|
|
|
|
rmmod trace-events-sample
|
|
|
|
echo Enable just the system events
|
|
echo 'sample-trace:mod:trace-events-sample' > set_event
|
|
grep -q 'sample-trace:mod:trace_events_sample' set_event
|
|
|
|
modprobe trace-events-sample
|
|
|
|
test_all_enabled
|
|
|
|
clear_events
|
|
|
|
rmmod trace-events-sample
|
|
|
|
echo Enable event with just event name
|
|
echo 'foo_bar:mod:trace-events-sample' > set_event
|
|
grep -q 'foo_bar:mod:trace_events_sample' set_event
|
|
|
|
echo Enable another event with both system and event name
|
|
echo 'sample-trace:foo_bar_with_cond:mod:trace-events-sample' >> set_event
|
|
grep -q 'sample-trace:foo_bar_with_cond:mod:trace_events_sample' set_event
|
|
echo Make sure the other event was still there
|
|
grep -q 'foo_bar:mod:trace_events_sample' set_event
|
|
|
|
modprobe trace-events-sample
|
|
|
|
echo There should be no :mod: cached events
|
|
if grep -q ':mod:' set_event; then
|
|
exit_fail
|
|
fi
|
|
|
|
echo two events should be enabled
|
|
count=`cat set_event | wc -l`
|
|
if [ $count -ne 2 ]; then
|
|
exit_fail
|
|
fi
|
|
|
|
echo only two events should be enabled
|
|
val=`cat events/sample-trace/enable`
|
|
if [ "$val" != "X" ]; then
|
|
exit_fail
|
|
fi
|
|
|
|
val=`cat events/sample-trace/foo_bar/enable`
|
|
if [ "$val" != "1" ]; then
|
|
exit_fail
|
|
fi
|
|
|
|
val=`cat events/sample-trace/foo_bar_with_cond/enable`
|
|
if [ "$val" != "1" ]; then
|
|
exit_fail
|
|
fi
|
|
|
|
clear_trace
|