2015-04-03 00:34:36

by Namhyung Kim

[permalink] [raw]
Subject: [PATCH v3] ftracetest: Do not use usleep directly

The usleep is only provided on distros from Redhat so running ftracetest
on other distro resulted in failures due to the missing usleep.

The reason of using [u]sleep in the test was to generate (scheduler)
events. It can be done various ways like this:

yield() { ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1; }

For more information to the history of this patch, please refer to:

Link: http://lkml.kernel.org/r/[email protected]

Reported-by: Michael Ellerman <[email protected]>
Reported-by: Dave Jones <[email protected]>
Reported-by: Luis Henriques <[email protected]>
Suggested-by: Pádraig Brady <[email protected]>
Acked-by: Steven Rostedt <[email protected]>
Acked-by: Masami Hiramatsu <[email protected]>
Signed-off-by: Namhyung Kim <[email protected]>
---
tools/testing/selftests/ftrace/test.d/event/event-enable.tc | 13 ++++++++++---
.../selftests/ftrace/test.d/event/subsystem-enable.tc | 13 ++++++++++---
.../selftests/ftrace/test.d/event/toplevel-enable.tc | 13 +++++++++++++
3 files changed, 33 insertions(+), 6 deletions(-)

diff --git a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc
index dbddb7836f73..87eb9d6dd4ca 100644
--- a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc
+++ b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc
@@ -12,6 +12,10 @@ fail() { #msg
exit $FAIL
}

+yield() {
+ ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
+}
+
if [ ! -f set_event -o ! -d events/sched ]; then
echo "event tracing is not supported"
exit_unsupported
@@ -21,7 +25,8 @@ reset_tracer
do_reset

echo 'sched:sched_switch' > set_event
-usleep 1
+
+yield

count=`cat trace | grep sched_switch | wc -l`
if [ $count -eq 0 ]; then
@@ -31,7 +36,8 @@ fi
do_reset

echo 1 > events/sched/sched_switch/enable
-usleep 1
+
+yield

count=`cat trace | grep sched_switch | wc -l`
if [ $count -eq 0 ]; then
@@ -41,7 +47,8 @@ fi
do_reset

echo 0 > events/sched/sched_switch/enable
-usleep 1
+
+yield

count=`cat trace | grep sched_switch | wc -l`
if [ $count -ne 0 ]; then
diff --git a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
index ef9b95dc10c5..ced27ef0638f 100644
--- a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
+++ b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
@@ -12,6 +12,10 @@ fail() { #msg
exit $FAIL
}

+yield() {
+ ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
+}
+
if [ ! -f set_event -o ! -d events/sched ]; then
echo "event tracing is not supported"
exit_unsupported
@@ -21,7 +25,8 @@ reset_tracer
do_reset

echo 'sched:*' > set_event
-usleep 1
+
+yield

count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
if [ $count -lt 3 ]; then
@@ -31,7 +36,8 @@ fi
do_reset

echo 1 > events/sched/enable
-usleep 1
+
+yield

count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
if [ $count -lt 3 ]; then
@@ -41,7 +47,8 @@ fi
do_reset

echo 0 > events/sched/enable
-usleep 1
+
+yield

count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l`
if [ $count -ne 0 ]; then
diff --git a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
index af8cf01fc3a7..0bb5df3c00d4 100644
--- a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
+++ b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
@@ -12,6 +12,10 @@ fail() { #msg
exit $FAIL
}

+yield() {
+ ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
+}
+
if [ ! -f available_events -o ! -f set_event -o ! -d events ]; then
echo "event tracing is not supported"
exit_unsupported
@@ -21,6 +25,9 @@ reset_tracer
do_reset

echo '*:*' > set_event
+
+yield
+
count=`cat trace | grep -v ^# | wc -l`
if [ $count -eq 0 ]; then
fail "none of events are recorded"
@@ -29,6 +36,9 @@ fi
do_reset

echo 1 > events/enable
+
+yield
+
count=`cat trace | grep -v ^# | wc -l`
if [ $count -eq 0 ]; then
fail "none of events are recorded"
@@ -37,6 +47,9 @@ fi
do_reset

echo 0 > events/enable
+
+yield
+
count=`cat trace | grep -v ^# | wc -l`
if [ $count -ne 0 ]; then
fail "any of events should not be recorded"
--
2.3.4


2015-04-03 15:26:20

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH v3] ftracetest: Do not use usleep directly

On 04/02/2015 06:27 PM, Namhyung Kim wrote:
> The usleep is only provided on distros from Redhat so running ftracetest
> on other distro resulted in failures due to the missing usleep.
>
> The reason of using [u]sleep in the test was to generate (scheduler)
> events. It can be done various ways like this:
>
> yield() { ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1; }
>
> For more information to the history of this patch, please refer to:
>
> Link: http://lkml.kernel.org/r/[email protected]
>
> Reported-by: Michael Ellerman <[email protected]>
> Reported-by: Dave Jones <[email protected]>
> Reported-by: Luis Henriques <[email protected]>
> Suggested-by: Pádraig Brady <[email protected]>
> Acked-by: Steven Rostedt <[email protected]>
> Acked-by: Masami Hiramatsu <[email protected]>
> Signed-off-by: Namhyung Kim <[email protected]>
> ---

Thanks for getting to this quickly. Applied it to
linux-kselftest next for 4.1

thanks,
-- Shuah

--
Shuah Khan
Sr. Linux Kernel Developer
Open Source Innovation Group
Samsung Research America (Silicon Valley)
[email protected] | (970) 217-8978