Commit dd3ffd12 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

torture: Add RCU Tasks individual-flavor build tests



This commit adds build tests of the individual RCU Tasks flavors in
order to detect inadvertent dependencies among the flavors.

Reported-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
parent cd1955d0
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ do_kasan=yes
do_kcsan=no
do_clocksourcewd=yes
do_rt=yes
do_rcutasksflavors=yes

# doyesno - Helper function for yes/no arguments
function doyesno () {
@@ -81,6 +82,7 @@ usage () {
	echo "       --do-locktorture / --do-no-locktorture / --no-locktorture"
	echo "       --do-none"
	echo "       --do-rcuscale / --do-no-rcuscale / --no-rcuscale"
	echo "       --do-rcutasksflavors / --do-no-rcutasksflavors / --no-rcutasksflavors"
	echo "       --do-rcutorture / --do-no-rcutorture / --no-rcutorture"
	echo "       --do-refscale / --do-no-refscale / --no-refscale"
	echo "       --do-rt / --do-no-rt / --no-rt"
@@ -115,6 +117,7 @@ do
		;;
	--do-all|--doall)
		do_allmodconfig=yes
		do_rcutasksflavor=yes
		do_rcutorture=yes
		do_locktorture=yes
		do_scftorture=yes
@@ -146,6 +149,7 @@ do
		;;
	--do-none|--donone)
		do_allmodconfig=no
		do_rcutasksflavors=no
		do_rcutorture=no
		do_locktorture=no
		do_scftorture=no
@@ -160,6 +164,9 @@ do
	--do-rcuscale|--do-no-rcuscale|--no-rcuscale)
		do_rcuscale=`doyesno "$1" --do-rcuscale`
		;;
	--do-rcutasksflavors|--do-no-rcutasksflavors|--no-rcutasksflavors)
		do_rcutasksflavors=`doyesno "$1" --do-rcutasksflavors`
		;;
	--do-rcutorture|--do-no-rcutorture|--no-rcutorture)
		do_rcutorture=`doyesno "$1" --do-rcutorture`
		;;
@@ -361,6 +368,40 @@ then
	fi
fi

# Test building RCU Tasks flavors in isolation, both SMP and !SMP
if test "$do_rcutasksflavors" = "yes"
then
	echo " --- rcutasksflavors:" Start `date` | tee -a $T/log
	rtfdir="tools/testing/selftests/rcutorture/res/$ds/results-rcutasksflavors"
	mkdir -p "$rtfdir"
	cat > $T/rcutasksflavors << __EOF__
#CHECK#CONFIG_TASKS_RCU=n
#CHECK#CONFIG_TASKS_RUDE_RCU=n
#CHECK#CONFIG_TASKS_TRACE_RCU=n
__EOF__
	for flavor in CONFIG_TASKS_RCU CONFIG_TASKS_RUDE_RCU CONFIG_TASKS_TRACE_RCU
	do
		forceflavor="`echo $flavor | sed -e 's/^CONFIG/CONFIG_FORCE/'`"
		deselectedflavors="`grep -v $flavor $T/rcutasksflavors | tr '\012' ' ' | tr -s ' ' | sed -e 's/ *$//'`"
		echo " --- Running RCU Tasks Trace flavor $flavor `date`" >> $rtfdir/log
		tools/testing/selftests/rcutorture/bin/kvm.sh --datestamp "$ds/results-rcutasksflavors/$flavor" --buildonly --configs "TINY01 TREE04" --kconfig "CONFIG_RCU_EXPERT=y CONFIG_RCU_SCALE_TEST=y $forceflavor=y $deselectedflavors" --trust-make > $T/$flavor.out 2>&1
		retcode=$?
		if test "$retcode" -ne 0
		then
			break
		fi
	done
	if test "$retcode" -eq 0
	then
		echo "rcutasksflavors($retcode)" $rtfdir >> $T/successes
		echo Success >> $rtfdir/log
	else
		echo "rcutasksflavors($retcode)" $rtfdir >> $T/failures
		echo " --- rcutasksflavors Test summary:" >> $rtfdir/log
		echo " --- Summary: Exit code $retcode from $flavor, see Make.out" >> $rtfdir/log
	fi
fi

# --torture rcu
if test "$do_rcutorture" = "yes"
then