From: Chunyu Hu <chuhu@redhat.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH V2 1/9] tracing: reorganize ftrace-stress tests to general tests
Date: Thu, 5 May 2016 06:11:04 -0400 (EDT) [thread overview]
Message-ID: <1824196541.43540628.1462443064657.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <20160504162655.GB22563@rei>
Thanks. Some issue has been done in patch 2/9, will fix
other issues you mentioned in next step.
----- Original Message -----
> From: "Cyril Hrubis" <chrubis@suse.cz>
> To: "Chunyu Hu" <chuhu@redhat.com>
> Cc: ltp@lists.linux.it, liwan@redhat.com
> Sent: Thursday, May 5, 2016 12:26:56 AM
> Subject: Re: [LTP] [PATCH V2 1/9] tracing: reorganize ftrace-stress tests to general tests
>
> Hi!
> > diff --git a/testcases/kernel/tracing/ftrace_test/ftrace_lib.sh
> > b/testcases/kernel/tracing/ftrace_test/ftrace_lib.sh
> > new file mode 100755
> > index 0000000..ea082dc
> > --- /dev/null
> > +++ b/testcases/kernel/tracing/ftrace_test/ftrace_lib.sh
> > @@ -0,0 +1,156 @@
> > +#! /bin/sh
> ^
> The space should be removed
will fix this in patch 2/9 "skip unsupported tests and early cleanup".
> > +###########################################################################
> > +##
> > ##
> > +## Copyright (c) 2010 FUJITSU LIMITED
> > ##
> > +##
> > ##
> > +## This program is free software: you can redistribute it and/or modify
> > ##
> > +## it under the terms of the GNU General Public License as published by
> > ##
> > +## the Free Software Foundation, either version 3 of the License, or
> > ##
> > +## (at your option) any later version.
> > ##
> > +##
> > ##
> > +## This program is distributed in the hope that it will be useful,
> > ##
> > +## but WITHOUT ANY WARRANTY; without even the implied warranty of
> > ##
> > +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > ##
> > +## GNU General Public License for more details.
> > ##
> > +##
> > ##
> > +## You should have received a copy of the GNU General Public License
> > ##
> > +## along with this program. If not, see <http://www.gnu.org/licenses/>.
> > ##
> > +##
> > ##
> > +## Author: Li Zefan <lizf@cn.fujitsu.com>
> > ##
> > +##
> > ##
> > +###########################################################################
> > +
> > +cd $LTPROOT/testcases/bin
> > +
> > +export TPATH="$PWD"
> > +export DEBUGFS_PATH="$PWD/debugfs"
> > +export TRACING_PATH="$PWD/debugfs/tracing"
>
> The test must not create files and mount things outside of the test
> temporary directory. Expecially not in $LTPROOT. You should call
> tst_tmpdir to create temporary directory instead, then create directory
> there.
Thanks for the suggestion, will take this way in next version, also
add it into patch 2/9.
> Also the ftrace filesystem seems to be mounted on
> /sys/kernel/debug/tracing/ on recent distributions, why don't we just
> set TRACING_PATH accodingly if it's already mounted and fallback to
> mounting it only when debugfs couldn't be found in /proc/mounts?
Thanks. Will take this way in next version, we check whether the mounting is
needed, through /proc/mounts , and then only mount/umount
if it's not mounted by default.
> > +export FPATH="$TPATH/ftrace_function"
> > +export RPATH="$TPATH/ftrace_regression"
> > +export SPATH="$TPATH/ftrace_stress"
> > +
> > +. test.sh
> > +
> > +test_interval=$1
> > +
> > +save_old_setting()
> > +{
> > + cd $TRACING_PATH
> > +
> > + 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 stack_max_size ]; then
> > + old_stack_tracer_enabled=`cat /proc/sys/kernel/stack_tracer_enabled`
> > + fi
> > +
> > + if [ -e "/proc/sys/kernel/ftrace_enabled" ]; then
> > + old_ftrace_enabled=`cat /proc/sys/kernel/ftrace_enabled`
> > + fi
> > +
> > + if [ -e "function_profile_enabled" ]; then
> > + old_profile_enabled=`cat function_profile_enabled`
> > + fi
> > +
> > + cd - > /dev/null
> > +}
> > +
> > +
> > +restore_old_setting()
> > +{
> > + cd $TRACING_PATH
> > +
> > + echo nop > current_tracer
> > + echo 0 > events/enable
> > + echo 0 > tracing_max_latency 2> /dev/null
> > +
> > + if [ -e trace_clock ]; then
> > + echo local > trace_clock
> > + fi
> > +
> > + if [ -e "function_pofile_enabled" ]; then
> > + echo $old_profile_enabled > function_profile_enabled
> > + fi
> > +
> > + if [ -e "/proc/sys/kernel/ftrace_enabled" ]; then
> > + echo $old_ftrace_enabled > /proc/sys/kernel/ftrace_enabled
> > + fi
> > +
> > + if [ -e stack_max_size ]; then
> > + echo $old_stack_tracer_enabled > /proc/sys/kernel/stack_tracer_enabled
> > + echo 0 > stack_max_size
> > + fi
> > +
> > + echo $old_buffer_size > buffer_size_kb
> > + echo $old_tracing_on > tracing_on
> > + echo $old_tracing_enabled > tracing_enabled
> > +
> > + for option in $old_trace_options
> > + do
> > + echo $option > trace_options 2> /dev/null
> > + done
> > +
> > + echo > trace
> > +
> > + cd - > /dev/null
> > +}
> > +
> > +clean_up()
> > +{
> > + restore_old_setting
> > +
> > + umount $DEBUGFS_PATH
> > + rmdir $DEBUGFS_PATH
> > +}
> > +
> > +clean_up_exit()
> > +{
> > + clean_up
> > + exit 1
> > +}
> > +
> > +test_begin()
> > +{
> > + start_time=`date +%s`
> > +}
> > +
> > +test_wait()
> > +{
> > + for ((; ;))
> > + {
> > + sleep 2
> > +
> > + cur_time=`date +%s`
> > + elapsed=$(( $cur_time - $start_time ))
> > +
> > + # run the test for $test_interval secs
> > + if [ $elapsed -ge $test_interval ]; then
> > + break
> > + fi
> > + }
> > +}
>
> Why don't we just do sleep $test_interval instead?
Good idea, will leave only a tst_sleep in the func in
next step.
> > +trap clean_up_exit INT
> > +
> > +tst_require_root
> > +
> > +# Don't run the test on kernels older than 2.6.34, otherwise
> > +# it can crash the system if the kernel is not latest-stable
> > +tst_kvercmp 2 6 34
> > +if [ $? -eq 0 ]; then
> > + tst_brkm TCONF ignored "The test should be run in kernels >= 2.6.34. Skip
> > the test..."
> > + exit 0
> > +fi
>
> Don't do this. Really the whole point of LTP is to validate kernel, if
> we skip known bugs by default we would give users false impression that
> the kernel was thoroughly tested.
OK, will remove the ignore, and remove this skip step, I agree that
this skip is not needed. If user found panic, should fix the
issue asap. and skip steps should be done in local repo if needed.
> Also since you include the test.sh here the tst_brkm format is different
> and it exits the test, so the exit 0 is never reached.
OK. Will remove this.
> > +mkdir $DEBUGFS_PATH
> > +mount -t debugfs xxx $DEBUGFS_PATH
> > +
> > +# Check to see tracing feature is supported or not
> > +if [ ! -d $TRACING_PATH ]; then
> > + tst_brkm TCONF ignored "Tracing is not supported. Skip the test..."
> > + umount $DEBUGFS_PATH
> > + rmdir $DEBUGFS_PATH
> > + exit 0
> > +fi
>
> Here as well, the tst_brkm from test.sh exit the test. Ideally you
> should setup TST_CLEANUP to point to a cleanup function once you do the
> test initalization which would be then executed before the test exits
> automatically.
OK. I think we can add a function for test initiating. including check/mount
debugfs, exporting the env like TRACING_PATH, and setting up the cleanup
callback TST_CLEANUP=cleanup
> ...
>
>
> > diff --git a/testcases/kernel/tracing/ftrace_test/ftrace_stress_test.sh
> > b/testcases/kernel/tracing/ftrace_test/ftrace_stress_test.sh
> > new file mode 100755
> > index 0000000..d9f7f8b
> > --- /dev/null
> > +++ b/testcases/kernel/tracing/ftrace_test/ftrace_stress_test.sh
> > @@ -0,0 +1,123 @@
> > +#! /bin/sh
> > +
> > +###########################################################################
> > +##
> > ##
> > +## Copyright (c) 2010 FUJITSU LIMITED
> > ##
> > +##
> > ##
> > +## This program is free software: you can redistribute it and/or modify
> > ##
> > +## it under the terms of the GNU General Public License as published by
> > ##
> > +## the Free Software Foundation, either version 3 of the License, or
> > ##
> > +## (at your option) any later version.
> > ##
> > +##
> > ##
> > +## This program is distributed in the hope that it will be useful,
> > ##
> > +## but WITHOUT ANY WARRANTY; without even the implied warranty of
> > ##
> > +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > ##
> > +## GNU General Public License for more details.
> > ##
> > +##
> > ##
> > +## You should have received a copy of the GNU General Public License
> > ##
> > +## along with this program. If not, see <http://www.gnu.org/licenses/>.
> > ##
> > +##
> > ##
> > +## Author: Li Zefan <lizf@cn.fujitsu.com>
> > ##
> > +##
> > ##
> > +###########################################################################
> > +
> > +
> > +export TCID="ftrace-stress-test"
> > +export TST_TOTAL=1
> > +export TST_COUNT=1
> > +
> > +. ftrace_lib.sh
> > +
> > +test_success=true
> > +
> > +export_pids()
> > +{
> > + export pid1 pid2 pid3 pid4 pid5 pid6 pid7 pid8 pid9 pid10 pid11 pid12 \
> > + pid13 pid14 pid15 pid16
> > +
> > + export NR_PIDS=16
> > +}
> > +
> > +test_stress()
> > +{
> > + 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=$!
> > +}
> > +
> > +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
> > +
> > + sleep 2
>
> I remember telling you to call wait on each pid instead of the sleep 2
> here.
The sleep 2 wil be removed in next step into patch 2/9.
> > + clean_up
> > +}
> > +
> > +
> > +# ----------------------------
> > +echo "Ftrace Stress Test Begin"
>
> That should be tst_resm TINFO "..." but that is very minor.
This has been fixed in patch 2/9
> > +save_old_setting
> > +
> > +test_begin
> > +
> > +test_stress
> > +
> > +test_wait
> > +
> > +test_kill
>
> Hmm, shouldn't you restore old settings here?
>
> > +echo "Ftrace Stress Test End"
>
> Here as well.
Fixed in patch 2/9.
> > +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
>
> You should call tst_exit at the end of the test instead of doing exit 1
> after the tst_resm. This is another leftover caused by the
> broken-by-desing tst_resm and tst_brkm binaries.
This has been done in 2/9. thank you for the detailed info.
> --
> Cyril Hrubis
> chrubis@suse.cz
>
--
Regards,
Chunyu Hu
next prev parent reply other threads:[~2016-05-05 10:11 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-18 8:04 [LTP] [PATCH V2 0/9] tracing: make ftrace tests to be extended Chunyu Hu
2016-04-18 8:04 ` [LTP] [PATCH V2 1/9] tracing: reorganize ftrace-stress tests to general tests Chunyu Hu
2016-04-18 8:04 ` [LTP] [PATCH V2 2/9] tracing/ftrace: add new case for ftrace userstacktrace Chunyu Hu
2016-04-18 8:04 ` [LTP] [PATCH V2 3/9] tracing/ftrace: add a new case for signal_generate Chunyu Hu
2016-04-18 8:04 ` [LTP] [PATCH V2 4/9] ftrace_stress: skip unsupported tests Chunyu Hu
2016-04-18 8:04 ` [LTP] [PATCH V2 5/9] ftrace_stress: keep the name of testscipt in sync with tracing file Chunyu Hu
2016-04-18 8:04 ` [LTP] [PATCH V2 6/9] testcases/lib: Add tst_random decmical integer generator Chunyu Hu
2016-04-18 8:04 ` [LTP] [PATCH V2 7/9] ftrace_stress: update the trace_options test Chunyu Hu
2016-04-18 8:04 ` [LTP] [PATCH V2 8/9] ftrace_stress: add two new tests Chunyu Hu
2016-04-18 8:04 ` [LTP] [PATCH V2 9/9] ftrace_stress: cleanup and use ltp API Chunyu Hu
2016-05-04 14:56 ` Cyril Hrubis
2016-05-04 15:42 ` Chunyu Hu
2016-05-04 16:32 ` Cyril Hrubis
2016-05-05 7:44 ` Chunyu Hu
2016-05-10 14:13 ` Cyril Hrubis
2016-05-11 11:01 ` Chunyu Hu
2016-05-04 16:57 ` [LTP] [PATCH V2 7/9] ftrace_stress: update the trace_options test Cyril Hrubis
2016-05-04 13:34 ` [LTP] [PATCH V2 6/9] testcases/lib: Add tst_random decmical integer generator Cyril Hrubis
2016-05-04 15:04 ` Chunyu Hu
2016-05-04 15:55 ` Cyril Hrubis
2016-05-04 16:28 ` Chunyu Hu
2016-05-04 23:40 ` Chunyu Hu
2016-05-04 16:50 ` [LTP] [PATCH V2 4/9] ftrace_stress: skip unsupported tests Cyril Hrubis
2016-05-05 0:53 ` Chunyu Hu
2016-05-10 14:25 ` Cyril Hrubis
2016-05-11 11:14 ` Chunyu Hu
2016-05-04 16:00 ` [LTP] [PATCH V2 2/9] tracing/ftrace: add new case for ftrace userstacktrace Cyril Hrubis
2016-05-05 6:24 ` Li Wang
2016-05-04 16:26 ` [LTP] [PATCH V2 1/9] tracing: reorganize ftrace-stress tests to general tests Cyril Hrubis
2016-05-05 6:21 ` Li Wang
2016-05-05 10:11 ` Chunyu Hu [this message]
2016-05-05 10:53 ` Chunyu Hu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1824196541.43540628.1462443064657.JavaMail.zimbra@redhat.com \
--to=chuhu@redhat.com \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.