torture: Add "scenarios" option to kvm.sh --dryrun parameter
authorPaul E. McKenney <paulmck@kernel.org>
Fri, 5 Mar 2021 01:21:17 +0000 (17:21 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 10 May 2021 23:05:05 +0000 (16:05 -0700)
This commit adds "--dryrun scenarios" to kvm.sh, which prints something
like this:

1.  TREE03
2.  TREE07
3.  SRCU-P SRCU-N
4.  TREE01 TRACE01
5.  TREE02 TRACE02
6.  TREE04 RUDE01 TASKS01
7.  TREE05 TASKS03 SRCU-T SRCU-U
8.  TASKS02 TINY01 TINY02 TREE09

This format is more convenient for scripts that run batches of scenarios.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
tools/testing/selftests/rcutorture/bin/kvm.sh

index 6bf00a0..3bd523a 100755 (executable)
@@ -64,7 +64,7 @@ usage () {
        echo "       --cpus N"
        echo "       --datestamp string"
        echo "       --defconfig string"
-       echo "       --dryrun batches|sched|script"
+       echo "       --dryrun batches|scenarios|sched|script"
        echo "       --duration minutes | <seconds>s | <hours>h | <days>d"
        echo "       --gdb"
        echo "       --help"
@@ -130,7 +130,7 @@ do
                shift
                ;;
        --dryrun)
-               checkarg --dryrun "batches|sched|script" $# "$2" 'batches\|sched\|script' '^--'
+               checkarg --dryrun "batches|sched|script" $# "$2" 'batches\|scenarios\|sched\|script' '^--'
                dryrun=$2
                shift
                ;;
@@ -577,6 +577,25 @@ egrep 'Start batch|Starting build\.' $T/script | grep -v ">>" |
                print batchno, $1, $2
        }' > $T/batches
 
+# As above, but one line per batch.
+grep -v '^#' $T/batches | awk '
+BEGIN {
+       oldbatch = 1;
+}
+
+{
+       if (oldbatch != $1) {
+               print ++n ". " curbatch;
+               curbatch = "";
+               oldbatch = $1;
+       }
+       curbatch = curbatch " " $2;
+}
+
+END {
+       print ++n ". " curbatch;
+}' > $T/scenarios
+
 if test "$dryrun" = script
 then
        cat $T/script
@@ -597,11 +616,16 @@ elif test "$dryrun" = batches
 then
        cat $T/batches
        exit 0
+elif test "$dryrun" = scenarios
+then
+       cat $T/scenarios
+       exit 0
 else
        # Not a dryrun.  Record the batches and the number of CPUs, then run the script.
        bash $T/script
        ret=$?
        cp $T/batches $resdir/$ds/batches
+       cp $T/scenarios $resdir/$ds/scenarios
        echo '#' cpus=$cpus >> $resdir/$ds/batches
        echo " --- Done at `date` (`get_starttime_duration $starttime`) exitcode $ret" | tee -a $resdir/$ds/log
        exit $ret