From: Dave Chinner <david@fromorbit.com>
To: fstests@vger.kernel.org
Cc: zlang@kernel.org
Subject: [PATCH 13/28] check-parallel: introduce config file support
Date: Thu, 17 Apr 2025 13:00:54 +1000 [thread overview]
Message-ID: <20250417031208.1852171-14-david@fromorbit.com> (raw)
In-Reply-To: <20250417031208.1852171-1-david@fromorbit.com>
From: Dave Chinner <dchinner@redhat.com>
check-parallel will use the same config file format check does,
and use the same code to auto-discover the config file.
The biggest difference is that check-parallel -requires- the use
of config sections, and the first section *must* be named
"[check-parallel]". This first section is used for defining
setup parameters for check parallel - loop device image file sizes,
etc.
The second biggest difference is that check-parallel does not allow
the config file to define devices. Any section found to contain a
device definition such as TEST_DEV or SCRATCH_DEV will result
check-parallel terminating with an error.
This config file format works for check-parallel invoking check,
too, because once a section is specified on the check command line,
it effectively ignores unknown values set in sections that it
doesn't run. Hence it effectively skips over the [check-parallel]
setup section.
For check-parallel, each config section now defines just the
filesystem configuration to be tested; all the usual mount and mkfs
options apply, and USE_EXTERNAL must be set for testing external
devices.
This commit implements the initial [check-parallel] section support
and moves the build in default values for these parameters to the
config file setup. This means if the config file does not contain
all the necessary parameter values, a default value will be used for
it.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
check-parallel | 14 +++-----
common/config-sections | 78 +++++++++++++++++++++++++++++++++++++++---
2 files changed, 77 insertions(+), 15 deletions(-)
diff --git a/check-parallel b/check-parallel
index 5bb44b6a5..6fc86fb92 100755
--- a/check-parallel
+++ b/check-parallel
@@ -15,22 +15,14 @@ runner_list=()
runtimes=()
show_test_list=
run_section=""
+iam="check-parallel"
tmp=/tmp/check-parallel.$$
-TEST_DEV_SIZE=${TEST_DEV_SIZE:=10G}
-TEST_RTDEV_SIZE=${TEST_RTDEV_SIZE:=10G}
-TEST_LOGDEV_SIZE=${TEST_LOGDEV_SIZE:=128M}
-SCRATCH_DEV_SIZE=${SCRATCH_DEV_SIZE:=20G}
-SCRATCH_RTDEV_SIZE=${SCRATCH_RTDEV_SIZE:=20G}
-SCRATCH_LOGDEV_SIZE=${SCRATCH_LOGDEV_SIZE:=512M}
-LOGWRITES_DEV_SIZE=${LOGWRITES_DEV_SIZE:=2G}
-
-FSTYP=
-
. ./common/exit
. ./common/test_names
. ./common/test_list
+. ./common/config-sections
usage()
{
@@ -332,6 +324,8 @@ cleanup()
trap "cleanup; exit" HUP INT QUIT TERM
+_config_setup_parallel
+
split_runner_list
if [ -n "$show_test_list" ]; then
echo Time ordered test list:
diff --git a/common/config-sections b/common/config-sections
index 69a03375a..28bd11bab 100644
--- a/common/config-sections
+++ b/common/config-sections
@@ -329,6 +329,7 @@ get_next_config() {
known_hosts()
{
+ [ -z "$HOST" ] && export HOST=`hostname -s`
[ "$HOST_CONFIG_DIR" ] || HOST_CONFIG_DIR=`pwd`/configs
[ -f /etc/xfsqa.config ] && export HOST_OPTIONS=/etc/xfsqa.config
@@ -336,7 +337,7 @@ known_hosts()
[ -f $HOST_CONFIG_DIR/$HOST.config ] && export HOST_OPTIONS=$HOST_CONFIG_DIR/$HOST.config
}
-_config_section_setup()
+_config_file_setup()
{
if [ ! -f "$HOST_OPTIONS" ]; then
known_hosts
@@ -346,13 +347,32 @@ _config_section_setup()
export OPTIONS_HAVE_SECTIONS=false
if [ -f "$HOST_OPTIONS" ]; then
export HOST_OPTIONS_SECTIONS=`get_config_sections $HOST_OPTIONS`
- if [ -z "$HOST_OPTIONS_SECTIONS" ]; then
- . $HOST_OPTIONS
- export HOST_OPTIONS_SECTIONS="-no-sections-"
- else
+ if [ -n "$HOST_OPTIONS_SECTIONS" ]; then
export OPTIONS_HAVE_SECTIONS=true
fi
fi
+}
+
+_config_section_setup()
+{
+ if [ "$iam" == "check-parallel" ]; then
+ echo "$iam: incorrect config file format chosen!"
+ exit 1;
+ fi
+
+ _config_file_setup
+
+ # If we don't have sections, source the options from the config file.
+ # Otherwise, strip sections that should not be run by check that may be
+ # present in the config file
+ if [ "$OPTIONS_HAVE_SECTIONS" != "true" ]; then
+ . $HOST_OPTIONS
+ export HOST_OPTIONS_SECTIONS="-no-sections-"
+ else
+ export HOST_OPTIONS_SECTIONS=$(echo $HOST_OPTIONS_SECTIONS | \
+ sed -e 's/check-parallel//')
+ fi
+
if [ -z "$CONFIG_INCLUDED" ]; then
get_next_config `echo $HOST_OPTIONS_SECTIONS | cut -f1 -d" "`
@@ -388,3 +408,51 @@ _config_section_setup()
fi
fi
}
+
+# check-parallel config files must:
+# 1. have config sections defined
+# 2. use the first config section for check-parallel setup
+# 3. not define any physical device parameter in any section
+#
+# If all these are true, then we read the first section that defines
+# the check-parallel config parameters and continue onwards.
+_config_setup_parallel()
+{
+ if [ "$iam" != "check-parallel" ]; then
+ echo "$iam: incorrect config file format chosen!"
+ exit 1;
+ fi
+
+ _config_file_setup
+
+ if [ "$OPTIONS_HAVE_SECTIONS" != "true" ]; then
+ echo "$iam config file has no sections!"
+ exit 1;
+ fi
+
+ local first_section=`echo $HOST_OPTIONS_SECTIONS | cut -f1 -d" "`
+ if [ "$first_section" != "$iam" ]; then
+ echo "$iam config file has no [$iam] section"
+ exit 1
+ fi
+
+ grep DEV $HOST_OPTIONS |grep -qv SIZE
+ if [ $? -ne 1 ]; then
+ echo "$iam config file has devices defined"
+ exit 1
+ fi
+
+ # we only need to pull in the config parameters here and set defaults
+ # if they are not set after pulling in the config values.
+ parse_config_section $1
+
+ TEST_DEV_SIZE=${TEST_DEV_SIZE:=10G}
+ TEST_RTDEV_SIZE=${TEST_RTDEV_SIZE:=10G}
+ TEST_LOGDEV_SIZE=${TEST_LOGDEV_SIZE:=128M}
+ SCRATCH_DEV_SIZE=${SCRATCH_DEV_SIZE:=20G}
+ SCRATCH_RTDEV_SIZE=${SCRATCH_RTDEV_SIZE:=20G}
+ SCRATCH_LOGDEV_SIZE=${SCRATCH_LOGDEV_SIZE:=512M}
+ LOGWRITES_DEV_SIZE=${LOGWRITES_DEV_SIZE:=2G}
+
+ FSTYP=${FSTYP:=xfs}
+}
--
2.45.2
next prev parent reply other threads:[~2025-04-17 3:29 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-17 3:00 [PATCH 00/28] check-parallel: Running tests without check Dave Chinner
2025-04-17 3:00 ` [PATCH 01/28] fstests: remove support for non-numeric test names Dave Chinner
2025-04-30 9:17 ` Nirjhar Roy (IBM)
2025-05-21 2:39 ` Dave Chinner
2025-05-26 5:14 ` Nirjhar Roy (IBM)
2025-04-17 3:00 ` [PATCH 02/28] _scratch_mkfs_sized: obey USE_EXTERNAL for XFS filesystems Dave Chinner
2025-05-05 6:14 ` Nirjhar Roy (IBM)
2025-04-17 3:00 ` [PATCH 03/28] fstests: move test exit functions to common/exit Dave Chinner
2025-04-17 3:00 ` [PATCH 04/28] check-parallel: report how many tests were _notrun Dave Chinner
2025-05-05 9:58 ` Nirjhar Roy (IBM)
2025-05-21 2:53 ` Dave Chinner
2025-05-26 6:09 ` Nirjhar Roy (IBM)
2025-04-17 3:00 ` [PATCH 05/28] check: factor out test list building code Dave Chinner
2025-05-06 11:32 ` Nirjhar Roy (IBM)
2025-05-21 3:55 ` Dave Chinner
2025-05-26 6:48 ` Nirjhar Roy (IBM)
2025-04-17 3:00 ` [PATCH 06/28] check-parallel: use common group list parsing code Dave Chinner
2025-05-06 15:56 ` Nirjhar Roy (IBM)
2025-05-21 4:13 ` Dave Chinner
2025-05-26 6:58 ` Nirjhar Roy (IBM)
2025-04-17 3:00 ` [PATCH 07/28] check-parallel: adjust concurrency according to CPU count Dave Chinner
2025-05-07 6:45 ` Nirjhar Roy (IBM)
2025-05-21 4:32 ` Dave Chinner
2025-05-26 8:50 ` Nirjhar Roy (IBM)
2025-04-17 3:00 ` [PATCH 08/28] check-parallel: add logwrite device support Dave Chinner
2025-05-07 8:18 ` Nirjhar Roy (IBM)
2025-05-21 10:07 ` Dave Chinner
2025-05-26 8:59 ` Nirjhar Roy (IBM)
2025-04-17 3:00 ` [PATCH 09/28] check-parallel: allow FSTYP selection from the CLI Dave Chinner
2025-05-07 8:49 ` Nirjhar Roy (IBM)
2025-05-21 10:17 ` Dave Chinner
2025-05-26 9:00 ` Nirjhar Roy (IBM)
2025-04-17 3:00 ` [PATCH 10/28] check-parallel: use PID namespaces for runner process isolation Dave Chinner
2025-05-07 9:02 ` Nirjhar Roy (IBM)
2025-05-21 10:19 ` Dave Chinner
2025-05-26 9:04 ` Nirjhar Roy (IBM)
2025-04-17 3:00 ` [PATCH 11/28] check-parallel: initial support for specifying device sizes Dave Chinner
2025-05-07 10:05 ` Nirjhar Roy (IBM)
2025-05-21 11:11 ` Dave Chinner
2025-04-17 3:00 ` [PATCH 12/28] config: move config section code to it's own file Dave Chinner
2025-05-09 6:09 ` Nirjhar Roy
2025-05-21 11:28 ` Dave Chinner
2025-04-17 3:00 ` Dave Chinner [this message]
2025-05-09 12:01 ` [PATCH 13/28] check-parallel: introduce config file support Nirjhar Roy
2025-05-21 12:23 ` Dave Chinner
2025-04-17 3:00 ` [PATCH 14/28] fstests: further separate sourcing common/rc and common/config from initialisation Dave Chinner
2025-05-10 14:08 ` Nirjhar Roy (IBM)
2025-04-17 3:00 ` [PATCH 15/28] check-parallel: de-batch test execution Dave Chinner
2025-05-09 13:16 ` Nirjhar Roy
2025-04-17 3:00 ` [PATCH 16/28] check-parallel: run sections directly Dave Chinner
2025-05-09 14:03 ` Nirjhar Roy
2025-04-17 3:00 ` [PATCH 17/28] check-parallel: rebuild test list when FSTYP changes Dave Chinner
2025-05-09 16:00 ` Nirjhar Roy
2025-04-17 3:00 ` [PATCH 18/28] check-parallel: create a "results-latest" symlink Dave Chinner
2025-05-10 13:12 ` Nirjhar Roy (IBM)
2025-04-17 3:01 ` [PATCH 19/28] check: factor test running Dave Chinner
2025-05-12 13:57 ` Nirjhar Roy (IBM)
2025-04-17 3:01 ` [PATCH 20/28] [RFC] check-parallel: run tests directly without using check Dave Chinner
2025-05-13 14:48 ` Nirjhar Roy (IBM)
2025-04-17 3:01 ` [PATCH 21/28] generic/531: limit max files per CPU Dave Chinner
2025-05-10 13:15 ` Nirjhar Roy (IBM)
2025-04-17 3:01 ` [PATCH 22/28] fsync-tester.c: use syncfs() rather than sync() Dave Chinner
2025-04-30 9:08 ` Nirjhar Roy (IBM)
2025-04-17 3:01 ` [PATCH 23/28] open-by-handle.c: " Dave Chinner
2025-04-30 9:02 ` Nirjhar Roy (IBM)
2025-05-21 2:32 ` Dave Chinner
2025-05-26 5:11 ` Nirjhar Roy (IBM)
2025-04-17 3:01 ` [PATCH 24/28] " Dave Chinner
2025-04-30 8:56 ` Nirjhar Roy (IBM)
2025-05-21 2:30 ` Dave Chinner
2025-05-26 4:56 ` Nirjhar Roy (IBM)
2025-04-17 3:01 ` [PATCH 25/28] bulkstat_unlink_test_modified.c: remove unused test code Dave Chinner
2025-04-30 8:47 ` Nirjhar Roy (IBM)
2025-04-17 3:01 ` [PATCH 26/28] stale-handle.c: use syncfs() rather than sync() Dave Chinner
2025-04-30 8:34 ` Nirjhar Roy (IBM)
2025-05-21 2:24 ` Dave Chinner
2025-04-17 3:01 ` [PATCH 27/28] scaleread: remove dead test code Dave Chinner
2025-04-30 8:10 ` Nirjhar Roy (IBM)
2025-04-17 3:01 ` [PATCH 28/28] xfs/259: no need to call sync Dave Chinner
2025-04-30 7:56 ` Nirjhar Roy (IBM)
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=20250417031208.1852171-14-david@fromorbit.com \
--to=david@fromorbit.com \
--cc=fstests@vger.kernel.org \
--cc=zlang@kernel.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 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.