mirror of https://github.com/torvalds/linux.git
selftest/ftrace: Generalise ftracetest to use with RV
The ftracetest script is a fairly complete test framework for tracefs-like subsystem, but it can only be used for ftrace selftests. If OPT_TEST_DIR is provided and includes a function file, use that as test directory going forward rather than just grabbing tests from it. Generalise function names like initialize_ftrace to initialize_system. Add the --rv argument to set up the test for rv, basically changing the trace directory to $TRACING_DIR/rv and displaying an error if that cannot be found. This prepares for rv selftests inclusion. Link: https://lore.kernel.org/r/20251017115203.140080-2-gmonaco@redhat.com Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
This commit is contained in:
parent
e9a6fb0bcd
commit
a0aa283c53
|
|
@ -22,6 +22,7 @@ echo " --fail-unresolved Treat UNRESOLVED as a failure"
|
|||
echo " -d|--debug Debug mode (trace all shell commands)"
|
||||
echo " -l|--logdir <dir> Save logs on the <dir>"
|
||||
echo " If <dir> is -, all logs output in console only"
|
||||
echo " --rv Run RV selftests instead of ftrace ones"
|
||||
exit $1
|
||||
}
|
||||
|
||||
|
|
@ -133,6 +134,10 @@ parse_opts() { # opts
|
|||
LINK_PTR=
|
||||
shift 2
|
||||
;;
|
||||
--rv)
|
||||
RV_TEST=1
|
||||
shift 1
|
||||
;;
|
||||
*.tc)
|
||||
if [ -f "$1" ]; then
|
||||
OPT_TEST_CASES="$OPT_TEST_CASES `abspath $1`"
|
||||
|
|
@ -152,9 +157,13 @@ parse_opts() { # opts
|
|||
;;
|
||||
esac
|
||||
done
|
||||
if [ ! -z "$OPT_TEST_CASES" ]; then
|
||||
if [ -n "$OPT_TEST_CASES" ]; then
|
||||
TEST_CASES=$OPT_TEST_CASES
|
||||
fi
|
||||
if [ -n "$OPT_TEST_DIR" -a -f "$OPT_TEST_DIR"/test.d/functions ]; then
|
||||
TOP_DIR=$OPT_TEST_DIR
|
||||
TEST_DIR=$TOP_DIR/test.d
|
||||
fi
|
||||
}
|
||||
|
||||
# Parameters
|
||||
|
|
@ -190,10 +199,6 @@ fi
|
|||
TOP_DIR=`absdir $0`
|
||||
TEST_DIR=$TOP_DIR/test.d
|
||||
TEST_CASES=`find_testcases $TEST_DIR`
|
||||
LOG_TOP_DIR=$TOP_DIR/logs
|
||||
LOG_DATE=`date +%Y%m%d-%H%M%S`
|
||||
LOG_DIR=$LOG_TOP_DIR/$LOG_DATE/
|
||||
LINK_PTR=$LOG_TOP_DIR/latest
|
||||
KEEP_LOG=0
|
||||
KTAP=0
|
||||
DEBUG=0
|
||||
|
|
@ -201,14 +206,23 @@ VERBOSE=0
|
|||
UNSUPPORTED_RESULT=0
|
||||
UNRESOLVED_RESULT=0
|
||||
STOP_FAILURE=0
|
||||
RV_TEST=0
|
||||
# Parse command-line options
|
||||
parse_opts $*
|
||||
|
||||
LOG_TOP_DIR=$TOP_DIR/logs
|
||||
LOG_DATE=`date +%Y%m%d-%H%M%S`
|
||||
LOG_DIR=$LOG_TOP_DIR/$LOG_DATE/
|
||||
LINK_PTR=$LOG_TOP_DIR/latest
|
||||
|
||||
[ $DEBUG -ne 0 ] && set -x
|
||||
|
||||
# Verify parameters
|
||||
if [ -z "$TRACING_DIR" -o ! -d "$TRACING_DIR" ]; then
|
||||
errexit "No ftrace directory found"
|
||||
if [ $RV_TEST -ne 0 ]; then
|
||||
TRACING_DIR=$TRACING_DIR/rv
|
||||
if [ ! -d "$TRACING_DIR" ]; then
|
||||
err_ret=$err_skip
|
||||
errexit "rv is not configured in this kernel"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Preparing logs
|
||||
|
|
@ -419,7 +433,7 @@ trap 'SIG_RESULT=$XFAIL' $SIG_XFAIL
|
|||
__run_test() { # testfile
|
||||
# setup PID and PPID, $$ is not updated.
|
||||
(cd $TRACING_DIR; read PID _ < /proc/self/stat; set -e; set -x;
|
||||
checkreq $1; initialize_ftrace; . $1)
|
||||
checkreq $1; initialize_system; . $1)
|
||||
[ $? -ne 0 ] && kill -s $SIG_FAIL $SIG_PID
|
||||
}
|
||||
|
||||
|
|
@ -496,7 +510,7 @@ for t in $TEST_CASES; do
|
|||
exit 1
|
||||
fi
|
||||
done
|
||||
(cd $TRACING_DIR; finish_ftrace) # for cleanup
|
||||
(cd $TRACING_DIR; finish_system) # for cleanup
|
||||
|
||||
prlog ""
|
||||
prlog "# of passed: " `echo $PASSED_CASES | wc -w`
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ unmount_tracefs() {
|
|||
local mount_point="$1"
|
||||
|
||||
# Need to make sure the mount isn't busy so that we can umount it
|
||||
(cd $mount_point; finish_ftrace;)
|
||||
(cd $mount_point; finish_system;)
|
||||
|
||||
cleanup
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ clear_dynamic_events() { # reset all current dynamic events
|
|||
done
|
||||
}
|
||||
|
||||
initialize_ftrace() { # Reset ftrace to initial-state
|
||||
initialize_system() { # Reset ftrace to initial-state
|
||||
# As the initial state, ftrace will be set to nop tracer,
|
||||
# no events, no triggers, no filters, no function filters,
|
||||
# no probes, and tracing on.
|
||||
|
|
@ -134,8 +134,8 @@ initialize_ftrace() { # Reset ftrace to initial-state
|
|||
enable_tracing
|
||||
}
|
||||
|
||||
finish_ftrace() {
|
||||
initialize_ftrace
|
||||
finish_system() {
|
||||
initialize_system
|
||||
# And recover it to default.
|
||||
[ -f options/pause-on-trace ] && echo 0 > options/pause-on-trace
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue