[LTP] [PATCH V2 4/9] ftrace_stress: skip unsupported tests
Chunyu Hu
chuhu@redhat.com
Mon Apr 18 10:04:11 CEST 2016
Checking if it's supported before lanuching a test script. This action is
through verifing the matched file in ftrace tracing direcrotry.
At the same time, transform the hard coded pids to the test_targets string and
make it easier to be controlled.
With this modification, the outdated tracing_enabled issue can be skiped on
newer kernels.
V2:
fix the bashism code style.
use ltp lib.
Signed-off-by: Chunyu Hu <chuhu@redhat.com>
---
testcases/kernel/tracing/ftrace_test/ftrace_lib.sh | 10 +-
.../ftrace_test/ftrace_stress/ftrace_set_event.sh | 5 +-
.../ftrace_stress/ftrace_set_ftrace_pid.sh | 11 --
.../ftrace_stress/ftrace_stack_max_size.sh | 11 --
.../ftrace_stress/ftrace_stack_trace.sh | 12 --
.../ftrace_stress/ftrace_tracing_max_latency.sh | 12 --
.../tracing/ftrace_test/ftrace_stress_test.sh | 132 ++++++++++-----------
7 files changed, 78 insertions(+), 115 deletions(-)
diff --git a/testcases/kernel/tracing/ftrace_test/ftrace_lib.sh b/testcases/kernel/tracing/ftrace_test/ftrace_lib.sh
index ea082dc..b7aef34 100755
--- a/testcases/kernel/tracing/ftrace_test/ftrace_lib.sh
+++ b/testcases/kernel/tracing/ftrace_test/ftrace_lib.sh
@@ -40,9 +40,12 @@ save_old_setting()
old_trace_options=( `cat trace_options` )
old_tracing_on=`cat tracing_on`
- old_tracing_enabled=`cat tracing_enabled`
old_buffer_size=`cat buffer_size_kb`
+ if [ -e tracing_enabled ]; then
+ old_tracing_enabled=`cat tracing_enabled`
+ fi
+
if [ -e stack_max_size ]; then
old_stack_tracer_enabled=`cat /proc/sys/kernel/stack_tracer_enabled`
fi
@@ -85,7 +88,10 @@ restore_old_setting()
echo $old_buffer_size > buffer_size_kb
echo $old_tracing_on > tracing_on
- echo $old_tracing_enabled > tracing_enabled
+
+ if [ -e tracing_enabled ];then
+ echo $old_tracing_enabled > tracing_enabled
+ fi
for option in $old_trace_options
do
diff --git a/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_set_event.sh b/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_set_event.sh
index d7efdd4..e8fd5ea 100755
--- a/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_set_event.sh
+++ b/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_set_event.sh
@@ -36,9 +36,12 @@ for ((; ;))
for event in `cat $TRACING_PATH/available_events`;
do
+ # ftrace event sys is special, skip it
+ if echo "$event" | grep "ftrace:*"; then
+ continue
+ fi
echo $event >> "$TRACING_PATH"/set_event
done
sleep 1
}
-
diff --git a/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_set_ftrace_pid.sh b/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_set_ftrace_pid.sh
index 7bc76d9..3eaf017 100755
--- a/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_set_ftrace_pid.sh
+++ b/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_set_ftrace_pid.sh
@@ -15,19 +15,9 @@
LOOP=300
-if [ ! -e "$TRACING_PATH"/set_ftrace_pid ]; then
- should_skip=1
-else
- should_skip=0
-fi
for ((; ; ))
{
- if [ $should_skip -eq 1 ]; then
- sleep 2
- continue
- fi
-
for ((j = 0; j < $LOOP; j++))
{
for ((k = 1; k <= NR_PIDS; k++))
@@ -46,4 +36,3 @@ for ((; ; ))
sleep 1
}
-
diff --git a/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_stack_max_size.sh b/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_stack_max_size.sh
index 682d05e..34d506b 100755
--- a/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_stack_max_size.sh
+++ b/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_stack_max_size.sh
@@ -15,19 +15,8 @@
MAX_STACK_SIZE=8192
-if [ ! -e /proc/sys/kernel/stack_tracer_enabled ]; then
- should_skip=1
-else
- should_skip=0
-fi
-
for ((; ;))
{
- if [ $should_skip -eq 1 ]; then
- sleep 2
- continue
- fi
-
for ((i = 0; i < $MAX_STACK_SIZE; i += 70))
{
echo $i > "$TRACING_PATH"/stack_max_size
diff --git a/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_stack_trace.sh b/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_stack_trace.sh
index a406c51..1850c26 100755
--- a/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_stack_trace.sh
+++ b/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_stack_trace.sh
@@ -15,19 +15,8 @@
LOOP=400
-if [ ! -e /proc/sys/kernel/stack_tracer_enabled ]; then
- should_skip=1
-else
- should_skip=0
-fi
-
for ((; ;))
{
- if [ $should_skip -eq 1 ]; then
- sleep 2
- continue
- fi
-
for ((i = 0; i < $LOOP; i++))
{
cat "$TRACING_PATH"/stack_trace > /dev/null
@@ -43,4 +32,3 @@ for ((; ;))
sleep 1
}
-
diff --git a/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_tracing_max_latency.sh b/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_tracing_max_latency.sh
index f19d734..fbaceb8 100755
--- a/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_tracing_max_latency.sh
+++ b/testcases/kernel/tracing/ftrace_test/ftrace_stress/ftrace_tracing_max_latency.sh
@@ -15,19 +15,8 @@
MAX_LATENCY=100000
-if [ ! -e "$TRACING_PATH"/tracing_max_latency ]; then
- should_skip=1
-else
- should_skip=0
-fi
-
for ((; ;))
{
- if [ $should_skip -eq 1 ]; then
- sleep 2
- continue
- fi
-
for ((i = 0; i < $MAX_LATENCY; i += 400))
{
echo $i > "$TRACING_PATH"/tracing_max_latency
@@ -35,4 +24,3 @@ for ((; ;))
sleep 1
}
-
diff --git a/testcases/kernel/tracing/ftrace_test/ftrace_stress_test.sh b/testcases/kernel/tracing/ftrace_test/ftrace_stress_test.sh
index d9f7f8b..80c914c 100755
--- a/testcases/kernel/tracing/ftrace_test/ftrace_stress_test.sh
+++ b/testcases/kernel/tracing/ftrace_test/ftrace_stress_test.sh
@@ -21,87 +21,92 @@
## ##
###########################################################################
-
export TCID="ftrace-stress-test"
export TST_TOTAL=1
export TST_COUNT=1
. ftrace_lib.sh
-test_success=true
+test_targets=" \
+trace_pipe current_tracer ftrace_enabled function_profile_enabled \
+set_event set_ftrace_pid stack_max_size stack_trace trace trace_clock \
+trace_options trace_stat tracing_enabled tracing_max_latency \
+tracing_on function_profile_enabled buffer_size_kb"
-export_pids()
+get_skip_targets()
{
- export pid1 pid2 pid3 pid4 pid5 pid6 pid7 pid8 pid9 pid10 pid11 pid12 \
- pid13 pid14 pid15 pid16
-
- export NR_PIDS=16
+ NR_PIDS=0
+ for target in ${test_targets}; do
+ if [ ! -e $TRACING_PATH/$target ] &&
+ [ ! -e /proc/sys/kernel/$target ]; then
+ eval skip_$target=1
+ tst_resm TINFO "$target is not supported. Skip it."
+ else
+ eval skip_$target=0
+ NR_PIDS=$((NR_PIDS + 1))
+ fi
+ done
+ # Export it before sub case is lanuched.
+ export NR_PIDS
}
-test_stress()
+should_skip_target()
{
- export_pids
-
- $SPATH/ftrace_trace_clock.sh &
- pid1=$!
- $SPATH/ftrace_current_tracer.sh &
- pid2=$!
- $SPATH/ftrace_trace_options.sh &
- pid3=$!
- $SPATH/ftrace_tracing_max_latency.sh &
- pid4=$!
- $SPATH/ftrace_stack_trace.sh &
- pid5=$!
- $SPATH/ftrace_stack_max_size.sh &
- pid6=$!
- $SPATH/ftrace_tracing_on.sh &
- pid7=$!
- $SPATH/ftrace_tracing_enabled.sh &
- pid8=$!
- $SPATH/ftrace_set_event.sh &
- pid9=$!
- $SPATH/ftrace_buffer_size.sh &
- pid10=$!
- $SPATH/ftrace_trace.sh &
- pid11=$!
- $SPATH/ftrace_trace_pipe.sh &
- pid12=$!
- $SPATH/ftrace_ftrace_enabled.sh &
- pid13=$!
- $SPATH/ftrace_set_ftrace_pid.sh &
- pid14=$!
- $SPATH/ftrace_profile_enabled.sh &
- pid15=$!
- $SPATH/ftrace_trace_stat.sh &
- pid16=$!
+ local var=skip_$1
+ local val=${!var}
+ [ "$val" = 1 ]
}
test_kill()
{
- kill -KILL $pid1 || test_success=false
- kill -KILL $pid2 || test_success=false
- kill -KILL $pid3 || test_success=false
- kill -KILL $pid4 || test_success=false
- kill -KILL $pid5 || test_success=false
- kill -KILL $pid6 || test_success=false
- kill -KILL $pid7 || test_success=false
- kill -KILL $pid8 || test_success=false
- kill -KILL $pid9 || test_success=false
- kill -KILL $pid10 || test_success=false
- kill -KILL $pid11 || test_success=false
- kill -USR1 $pid12 || test_success=false
- kill -KILL $pid13 || test_success=false
- kill -KILL $pid14 || test_success=false
- kill -KILL $pid15 || test_success=false
- kill -KILL $pid16 || test_success=false
+ tst_resm TINFO "killing ${pid0}"
+ kill -USR1 ${pid0}
+ wait ${pid0}
+
+ local p=1;
+ while [ $p -lt $NR_PIDS ]; do
+ local kill_pid=pid${p}
+ kill -KILL ${!kill_pid}
+ tst_resm TINFO "killing ${!kill_pid}"
+ wait ${!kill_pid}
+ p=$((p + 1))
+ done
sleep 2
clean_up
}
+test_stress()
+{
+ local index=0;
+
+ tst_resm TINFO "Test targets: ${test_targets}"
+
+ get_skip_targets
+ for target in ${test_targets}; do
+ if should_skip_target $target; then
+ continue
+ fi
+ sh ftrace_${target}.sh &
+ eval pid${index}=$!
+ tst_resm TINFO "Start pid${index}=$! $SPATH/ftrace_${target}.sh"
+ index=$((index + 1))
+ done
+ export_pids
+}
+
+export_pids()
+{
+ local p=0
+ while [ $p -lt $NR_PIDS ]; do
+ export pid${p}
+ p=$((p + 1))
+ done
+}
+cd ftrace_stress/
# ----------------------------
-echo "Ftrace Stress Test Begin"
+tst_resm TINFO "Ftrace Stress Test Begin"
save_old_setting
@@ -113,11 +118,6 @@ test_wait
test_kill
-echo "Ftrace Stress Test End"
+tst_resm TINFO "Finished running the test. Run dmesg to double-check for bugs"
-if $test_success; then
- tst_resm TPASS "finished running the test. Run dmesg to double-check for bugs"
-else
- tst_resm TFAIL "please check log message."
- exit 1
-fi
+tst_exit
--
1.8.3.1
More information about the ltp
mailing list