On Tue, Aug 16, 2016 at 05:18:11PM +1000, Suraj Jitindar Singh wrote: > Invoking run_tests.sh without the -g parameter will by default run all of > the tests for a given architecture. This patch series will add a test which > has the ability to bring down the host and thus it might be nice if we > double check that the user actually wants to run that test instead of > them unknowingly bringing down a machine they might not want to. > > In order to do this add the option for a tests' group parameter in > unittests.cfg to include "nodefault" on order to indicate that it shouldn't > be run be default. > > When tests are invoked via run_tests.sh those with the nodefault group > parameter will be skipped unless explicitly specified by the "-g" command > line option. When tests with the nodefault group parameter are built and > run standalone the user will be prompted on invocation to confirm that > they actually want to run the test. > > This allows a developer to mark a test as having potentially adverse > effects and thus requires an extra level of confirmation from the user > before they are invoked. Existing functionality will be preserved and new > tests can choose any group other than "nodefault" if they want to be run > by default. > > Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@xxxxxxxxx> > --- > > Change Log: > > V2 -> V3: > - Move checking on standalone invokation into a function > "skip_nodefault" in scripts/runtime.bash > > Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@xxxxxxxxx> > --- > arm/unittests.cfg | 3 +++ > powerpc/unittests.cfg | 3 +++ > scripts/mkstandalone.sh | 4 ++++ > scripts/runtime.bash | 28 +++++++++++++++++++++++++++- > x86/unittests.cfg | 3 +++ > 5 files changed, 40 insertions(+), 1 deletion(-) > > diff --git a/arm/unittests.cfg b/arm/unittests.cfg > index ffd12e5..3f6fa45 100644 > --- a/arm/unittests.cfg > +++ b/arm/unittests.cfg > @@ -12,6 +12,9 @@ > # # specific to only one. > # groups = <group_name1> <group_name2> ... # Used to identify test cases > # # with run_tests -g ... > +# # Specify group_name=nodefault > +# # to have test not run by > +# # default > # accel = kvm|tcg # Optionally specify if test must run with > # # kvm or tcg. If not specified, then kvm will > # # be used when available. > diff --git a/powerpc/unittests.cfg b/powerpc/unittests.cfg > index ed4fdbe..0098cb6 100644 > --- a/powerpc/unittests.cfg > +++ b/powerpc/unittests.cfg > @@ -12,6 +12,9 @@ > # # specific to only one. > # groups = <group_name1> <group_name2> ... # Used to identify test cases > # # with run_tests -g ... > +# # Specify group_name=nodefault > +# # to have test not run by > +# # default > # accel = kvm|tcg # Optionally specify if test must run with > # # kvm or tcg. If not specified, then kvm will > # # be used when available. > diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh > index d2bae19..b921416 100755 > --- a/scripts/mkstandalone.sh > +++ b/scripts/mkstandalone.sh > @@ -74,6 +74,10 @@ generate_test () > > cat scripts/runtime.bash > > + if grep -qw "nodefault" <<<${args[1]}; then > + echo "export STANDALONE=yes" > + fi > + The answer is 42. Or, rather, we already unconditionally do this on line 42 of this file, so this hunk isn't needed. > echo "run ${args[@]}" > } > > diff --git a/scripts/runtime.bash b/scripts/runtime.bash > index 0503cf0..383ebd4 100644 > --- a/scripts/runtime.bash > +++ b/scripts/runtime.bash > @@ -32,6 +32,26 @@ get_cmdline() > echo "TESTNAME=$testname TIMEOUT=$timeout ACCEL=$accel $RUNTIME_arch_run $kernel -smp $smp $opts" > } > > +skip_nodefault() > +{ > + [ "$STANDALONE" != yes ] && return 0 For consistency throughout our scripts, please quote all strings, like "yes" > + > + while true; do > + read -p "Test marked not to be run by default, are you sure (Y/N)? " yn > + case $yn in > + "Y" | "y" | "Yes" | "yes") What about "YES" :-) Actually, I'd just accept 'Y' for yes, and nothing else, like the prompt says. And, instead of looping for valid input, all other input can just mean no. > + return 1 > + ;; > + "N" | "n" | "No" | "no" | "q" | "quit" | "exit") We should output something when the answer is 'no' like "User aborted", or whatever. > + exit > + ;; > + *) > + echo Please select Y or N > + ;; > + esac > + done > +} > + > function run() > { > local testname="$1" > @@ -48,10 +68,16 @@ function run() > return > fi > > - if [ -n "$only_group" ] && ! grep -q "$only_group" <<<$groups; then > + if [ -n "$only_group" ] && ! grep -qw "$only_group" <<<$groups; then > return > fi > > + if [ -z "$only_group" ] && grep -qw "nodefault" <<<$groups && > + skip_nodefault; then > + echo -e "`SKIP` $testname (test marked as manual run only)" > + return; > + fi > + > if [ -n "$arch" ] && [ "$arch" != "$ARCH" ]; then > echo "`SKIP` $1 ($arch only)" > return 2 > diff --git a/x86/unittests.cfg b/x86/unittests.cfg > index 60747cf..4a1f74e 100644 > --- a/x86/unittests.cfg > +++ b/x86/unittests.cfg > @@ -12,6 +12,9 @@ > # # specific to only one. > # groups = <group_name1> <group_name2> ... # Used to identify test cases > # # with run_tests -g ... > +# # Specify group_name=nodefault > +# # to have test not run by > +# # default > # accel = kvm|tcg # Optionally specify if test must run with > # # kvm or tcg. If not specified, then kvm will > # # be used when available. > -- > 2.5.5 > Thanks, drew -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html