From: "Paul E. McKenney" <paulmck@kernel.org>
To: rcu@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com,
rostedt@goodmis.org, "Paul E. McKenney" <paulmck@kernel.org>
Subject: [PATCH rcu 05/18] torture: Allow #CHECK# in --kconfig argument to kvm.sh
Date: Mon, 17 Jul 2023 11:23:24 -0700 [thread overview]
Message-ID: <20230717182337.1098991-5-paulmck@kernel.org> (raw)
In-Reply-To: <d03c7482-acde-4f33-a7fb-fa7c58fdc9a2@paulmck-laptop>
Testing building of a given RCU Tasks flavor with the other two
flavors disabled requires checking that the other two flavors are in
fact disabled. This commit therefore modifies the scripting to permit
things like "#CHECK#CONFIG_TASKS_TRACE_RCU=n" to be passed into the
kvm.sh script's --kconfig parameter.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
.../selftests/rcutorture/bin/configcheck.sh | 61 ++++++++++---------
.../rcutorture/bin/kvm-test-1-run.sh | 1 -
tools/testing/selftests/rcutorture/bin/kvm.sh | 2 +-
3 files changed, 34 insertions(+), 30 deletions(-)
diff --git a/tools/testing/selftests/rcutorture/bin/configcheck.sh b/tools/testing/selftests/rcutorture/bin/configcheck.sh
index b92dfeb7fbbf..99162d18bad3 100755
--- a/tools/testing/selftests/rcutorture/bin/configcheck.sh
+++ b/tools/testing/selftests/rcutorture/bin/configcheck.sh
@@ -3,6 +3,8 @@
#
# Usage: configcheck.sh .config .config-template
#
+# Non-empty output if errors detected.
+#
# Copyright (C) IBM Corporation, 2011
#
# Authors: Paul E. McKenney <paulmck@linux.ibm.com>
@@ -10,32 +12,35 @@
T="`mktemp -d ${TMPDIR-/tmp}/configcheck.sh.XXXXXX`"
trap 'rm -rf $T' 0
-sed -e 's/"//g' < $1 > $T/.config
+# function test_kconfig_enabled ( Kconfig-var=val )
+function test_kconfig_enabled () {
+ if ! grep -q "^$1$" $T/.config
+ then
+ echo :$1: improperly set
+ return 1
+ fi
+ return 0
+}
-sed -e 's/"//g' -e 's/\(.*\)=n/# \1 is not set/' -e 's/^#CHECK#//' < $2 |
-awk '
-{
- print "if grep -q \"" $0 "\" < '"$T/.config"'";
- print "then";
- print "\t:";
- print "else";
- if ($1 == "#") {
- print "\tif grep -q \"" $2 "\" < '"$T/.config"'";
- print "\tthen";
- print "\t\tif test \"$firsttime\" = \"\""
- print "\t\tthen"
- print "\t\t\tfirsttime=1"
- print "\t\tfi"
- print "\t\techo \":" $2 ": improperly set\"";
- print "\telse";
- print "\t\t:";
- print "\tfi";
- } else {
- print "\tif test \"$firsttime\" = \"\""
- print "\tthen"
- print "\t\tfirsttime=1"
- print "\tfi"
- print "\techo \":" $0 ": improperly set\"";
- }
- print "fi";
- }' | sh
+# function test_kconfig_disabled ( Kconfig-var )
+function test_kconfig_disabled () {
+ if grep -q "^$1=n$" $T/.config
+ then
+ return 0
+ fi
+ if grep -q "^$1=" $T/.config
+ then
+ echo :$1=n: improperly set
+ return 1
+ fi
+ return 0
+}
+
+sed -e 's/"//g' < $1 > $T/.config
+sed -e 's/^#CHECK#//' < $2 > $T/ConfigFragment
+grep '^CONFIG_.*=n$' $T/ConfigFragment |
+ sed -e 's/^/test_kconfig_disabled /' -e 's/=n$//' > $T/kconfig-n.sh
+. $T/kconfig-n.sh
+grep -v '^CONFIG_.*=n$' $T/ConfigFragment | grep '^CONFIG_' |
+ sed -e 's/^/test_kconfig_enabled /' > $T/kconfig-not-n.sh
+. $T/kconfig-not-n.sh
diff --git a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
index d2a3710a5f2a..b9912de9d71e 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
@@ -57,7 +57,6 @@ config_override_param () {
cat $T/Kconfig_args >> $resdir/ConfigFragment.input
config_override.sh $T/$2 $T/Kconfig_args > $T/$2.tmp
mv $T/$2.tmp $T/$2
- # Note that "#CHECK#" is not permitted on commandline.
fi
}
diff --git a/tools/testing/selftests/rcutorture/bin/kvm.sh b/tools/testing/selftests/rcutorture/bin/kvm.sh
index d3cdc2d33d4b..b0f36a638a69 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm.sh
@@ -186,7 +186,7 @@ do
fi
;;
--kconfig|--kconfigs)
- checkarg --kconfig "(Kconfig options)" $# "$2" '^CONFIG_[A-Z0-9_]\+=\([ynm]\|[0-9]\+\|"[^"]*"\)\( CONFIG_[A-Z0-9_]\+=\([ynm]\|[0-9]\+\|"[^"]*"\)\)*$' '^error$'
+ checkarg --kconfig "(Kconfig options)" $# "$2" '^\(#CHECK#\)\?CONFIG_[A-Z0-9_]\+=\([ynm]\|[0-9]\+\|"[^"]*"\)\( \(#CHECK#\)\?CONFIG_[A-Z0-9_]\+=\([ynm]\|[0-9]\+\|"[^"]*"\)\)*$' '^error$'
TORTURE_KCONFIG_ARG="`echo "$TORTURE_KCONFIG_ARG $2" | sed -e 's/^ *//' -e 's/ *$//'`"
shift
;;
--
2.40.1
next prev parent reply other threads:[~2023-07-17 18:24 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-17 18:23 [PATCH rcu 0/18] Torture-test scripting updates for v6.6 Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 01/18] rcutorture: Remove obsolete BOOTPARAM_HOTPLUG_CPU0 Kconfig option Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 02/18] rcu: Remove formal-verification tests Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 03/18] torture: Add "--no-" as synonym for "--do-no-" in torture.sh Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 04/18] rcutorture: Remove contradictory Kconfig constraint Paul E. McKenney
2023-07-17 18:23 ` Paul E. McKenney [this message]
2023-07-17 18:23 ` [PATCH rcu 06/18] torture: Make kvm-recheck.sh report .config errors Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 07/18] torture: Add RCU Tasks individual-flavor build tests Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 08/18] torture: Make kvm-remote print diagnostics on initial ssh failure Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 09/18] rcutorture: Remove obsolete parameter check from mkinitrd.sh Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 10/18] torture: Place --bootargs parameters at end of -append list Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 11/18] torture: Make torture.sh summarize config and build errors Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 12/18] torture: Loosen .config checks for KCSAN kernels Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 13/18] torture: Add srcu_lockdep.sh to torture.sh Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 14/18] torture: Avoid torture-test reboot loops Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 15/18] torture: Add init-program support for loongarch Paul E. McKenney
2023-07-18 2:56 ` Feiyang Chen
2023-07-18 18:41 ` Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 16/18] torture: Switch qemu from -nographic to -display none Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 17/18] torture: Make init program dump command-line arguments Paul E. McKenney
2023-07-17 18:23 ` [PATCH rcu 18/18] torture: Cause mkinitrd.sh to indicate failure on compile errors Paul E. McKenney
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=20230717182337.1098991-5-paulmck@kernel.org \
--to=paulmck@kernel.org \
--cc=kernel-team@meta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rcu@vger.kernel.org \
--cc=rostedt@goodmis.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).