All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
To: Nina Schoetterl-Glausch <nsg@linux.ibm.com>,
	Andrew Jones <andrew.jones@linux.dev>,
	Thomas Huth <thuth@redhat.com>, Nico Boehr <nrb@linux.ibm.com>,
	Sean Christopherson <seanjc@google.com>,
	Colton Lewis <coltonlewis@google.com>,
	Nikos Nikoleris <nikos.nikoleris@arm.com>
Cc: kvm@vger.kernel.org, Claudio Imbrenda <imbrenda@linux.ibm.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	Ricardo Koller <ricarkol@google.com>,
	Shaoqin Huang <shahuang@redhat.com>
Subject: [kvm-unit-tests PATCH 8/9] scripts: Implement multiline strings for extra_params
Date: Wed, 11 Oct 2023 10:56:31 +0200	[thread overview]
Message-ID: <20231011085635.1996346-9-nsg@linux.ibm.com> (raw)
In-Reply-To: <20231011085635.1996346-1-nsg@linux.ibm.com>

Implement a rudimentary form only.
extra_params can get long when passing a lot of arguments to qemu.
Multiline strings help with readability of the .cfg file.
Multiline strings begin and end with """, which must occur on separate
lines.

For example:
extra_params = """-cpu max,ctop=on -smp cpus=1,cores=16,maxcpus=128 \
-append '-drawers 2 -books 2 -sockets 2 -cores 16' \
-device max-s390x-cpu,core-id=31,drawer-id=0,book-id=0,socket-id=0"""

The command string built with extra_params is eval'ed by the runtime
script, so the newlines need to be escaped with \.

Signed-off-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
---


This could certainly be done differently, suggestions welcome.


 scripts/common.bash  | 11 +++++++++++
 scripts/runtime.bash |  4 ++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/scripts/common.bash b/scripts/common.bash
index 7b983f7d..738e64af 100644
--- a/scripts/common.bash
+++ b/scripts/common.bash
@@ -36,6 +36,17 @@ function for_each_unittest()
 			kernel=$TEST_DIR/${BASH_REMATCH[1]}
 		elif [[ $line =~ ^smp\ *=\ *(.*)$ ]]; then
 			smp=${BASH_REMATCH[1]}
+		elif [[ $line =~ ^extra_params\ *=\ *'"""'(.*)$ ]]; then
+			opts=${BASH_REMATCH[1]}$'\n'
+			while read -r -u $fd; do
+				opts=${opts%\\$'\n'}
+				if [[ "$REPLY" =~ ^(.*)'"""'[:blank:]*$ ]]; then
+					opts+=${BASH_REMATCH[1]}
+					break
+				else
+					opts+=$REPLY$'\n'
+				fi
+			done
 		elif [[ $line =~ ^extra_params\ *=\ *(.*)$ ]]; then
 			opts=${BASH_REMATCH[1]}
 		elif [[ $line =~ ^groups\ *=\ *(.*)$ ]]; then
diff --git a/scripts/runtime.bash b/scripts/runtime.bash
index ada8ffd7..fc156f2f 100644
--- a/scripts/runtime.bash
+++ b/scripts/runtime.bash
@@ -15,7 +15,7 @@ extract_summary()
 # We assume that QEMU is going to work if it tried to load the kernel
 premature_failure()
 {
-    local log="$(eval $(get_cmdline _NO_FILE_4Uhere_) 2>&1)"
+    local log="$(eval "$(get_cmdline _NO_FILE_4Uhere_)" 2>&1)"
 
     echo "$log" | grep "_NO_FILE_4Uhere_" |
         grep -q -e "could not \(load\|open\) kernel" -e "error loading" &&
@@ -168,7 +168,7 @@ function run()
     # extra_params in the config file may contain backticks that need to be
     # expanded, so use eval to start qemu.  Use "> >(foo)" instead of a pipe to
     # preserve the exit status.
-    summary=$(eval $cmdline 2> >(RUNTIME_log_stderr $testname) \
+    summary=$(eval "$cmdline" 2> >(RUNTIME_log_stderr $testname) \
                              > >(tee >(RUNTIME_log_stdout $testname $kernel) | extract_summary))
     ret=$?
     [ "$KUT_STANDALONE" != "yes" ] && echo > >(RUNTIME_log_stdout $testname $kernel)
-- 
2.41.0


  parent reply	other threads:[~2023-10-11  8:57 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-11  8:56 [kvm-unit-tests PATCH 0/9] s390x: topology: Fixes and extension Nina Schoetterl-Glausch
2023-10-11  8:56 ` [kvm-unit-tests PATCH 1/9] s390x: topology: Fix report message Nina Schoetterl-Glausch
2023-10-11 10:56   ` Janosch Frank
2023-10-11 11:10     ` Nina Schoetterl-Glausch
2023-10-11 11:30       ` Janosch Frank
2023-10-11 11:41         ` Nina Schoetterl-Glausch
2023-10-11 13:36   ` Nico Boehr
2023-10-11  8:56 ` [kvm-unit-tests PATCH 2/9] s390x: topology: Use parameter in stsi_get_sysib Nina Schoetterl-Glausch
2023-10-11 11:05   ` Janosch Frank
2023-10-12 14:44   ` Nico Boehr
2023-10-11  8:56 ` [kvm-unit-tests PATCH 3/9] s390x: topology: Fix parsing loop Nina Schoetterl-Glausch
2023-10-11 11:07   ` Janosch Frank
2023-10-11 11:16     ` Nina Schoetterl-Glausch
2023-10-12 14:46   ` Nico Boehr
2023-10-11  8:56 ` [kvm-unit-tests PATCH 4/9] s390x: topology: Don't use non unique message Nina Schoetterl-Glausch
2023-10-11 11:11   ` Janosch Frank
2023-10-13  8:16   ` Nico Boehr
2023-10-13  9:18     ` Nina Schoetterl-Glausch
2023-10-11  8:56 ` [kvm-unit-tests PATCH 5/9] s390x: topology: Refine stsi header test Nina Schoetterl-Glausch
2023-10-11 11:16   ` Janosch Frank
2023-10-11 11:19     ` Nina Schoetterl-Glausch
2023-10-11 11:22       ` Janosch Frank
2023-10-17 12:31         ` Nico Boehr
2023-10-11  8:56 ` [kvm-unit-tests PATCH 6/9] s390x: topology: Rename topology_core to topology_cpu Nina Schoetterl-Glausch
2023-10-11 11:31   ` Janosch Frank
2023-10-17 12:32   ` Nico Boehr
2023-10-11  8:56 ` [kvm-unit-tests PATCH 7/9] s390x: topology: Rewrite topology list test Nina Schoetterl-Glausch
2023-10-17 13:29   ` Nico Boehr
2023-10-11  8:56 ` Nina Schoetterl-Glausch [this message]
2023-10-19 10:50   ` [kvm-unit-tests PATCH 8/9] scripts: Implement multiline strings for extra_params Nico Boehr
2023-10-19 15:42     ` Nina Schoetterl-Glausch
2023-10-11  8:56 ` [kvm-unit-tests PATCH 9/9] s390x: topology: Add complex topology test Nina Schoetterl-Glausch
2023-10-19 10:58   ` Nico Boehr

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=20231011085635.1996346-9-nsg@linux.ibm.com \
    --to=nsg@linux.ibm.com \
    --cc=andrew.jones@linux.dev \
    --cc=coltonlewis@google.com \
    --cc=frankja@linux.ibm.com \
    --cc=imbrenda@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=nikos.nikoleris@arm.com \
    --cc=nrb@linux.ibm.com \
    --cc=ricarkol@google.com \
    --cc=seanjc@google.com \
    --cc=shahuang@redhat.com \
    --cc=thuth@redhat.com \
    /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.