You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
5.7 KiB
165 lines
5.7 KiB
6 months ago
|
From 569a23425939e4bfc7b4d7f871d8510bb968f892 Mon Sep 17 00:00:00 2001
|
||
|
From: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
||
|
Date: Thu, 1 Jun 2023 09:27:46 +0200
|
||
|
Subject: [PATCH 153/165] tests: create 00confnames
|
||
|
|
||
|
The test is an attempt to document current implementation of devnode
|
||
|
and name handling for config entries. It is focused on incremental-
|
||
|
default way of array assembling on boot.
|
||
|
The expectations are aligned to current implementation for native
|
||
|
metadata because it is the most complicated scenario- both variables
|
||
|
can be set.
|
||
|
|
||
|
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
||
|
Signed-off-by: Jes Sorensen <jes@trained-monkey.org>
|
||
|
---
|
||
|
tests/00confnames | 107 +++++++++++++++++++++++++++++++++
|
||
|
tests/templates/names_template | 20 ++++++
|
||
|
2 files changed, 127 insertions(+)
|
||
|
create mode 100644 tests/00confnames
|
||
|
|
||
|
diff --git a/tests/00confnames b/tests/00confnames
|
||
|
new file mode 100644
|
||
|
index 00000000..25a7127b
|
||
|
--- /dev/null
|
||
|
+++ b/tests/00confnames
|
||
|
@@ -0,0 +1,107 @@
|
||
|
+set -x -e
|
||
|
+. tests/templates/names_template
|
||
|
+
|
||
|
+# Test how <devname> and <name> from config are handled during Incremental assemblation.
|
||
|
+# 1-6 <devnode> only tests (no <name> in config).
|
||
|
+# 6-10 <devname> and <name> combinations are tested.
|
||
|
+# 11-13 corner cases.
|
||
|
+
|
||
|
+names_create "/dev/md/name"
|
||
|
+local _UUID="$(mdadm -D --export /dev/md127 | grep MD_UUID | cut -d'=' -f2)"
|
||
|
+[[ "$_UUID" == "" ]] && echo "Cannot obtain UUID for $DEVNODE_NAME" && exit 1
|
||
|
+
|
||
|
+
|
||
|
+# 1. <devname> definition consistent with metadata name.
|
||
|
+names_make_conf $_UUID "/dev/md/name" "empty" $config
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "name" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 2. Same as 1, but use short name form of <devname>.
|
||
|
+names_make_conf $_UUID "name" "empty" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "name" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 3. Same as 1, but use different <devname> than metadata provides.
|
||
|
+names_make_conf $_UUID "/dev/md/other" "empty" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "other" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 4. Same as 3, but use short name form of <devname>.
|
||
|
+names_make_conf $_UUID "other" "empty" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "other" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 5. Force particular node creation by setting <devname> to /dev/mdX. Link is not created in this
|
||
|
+# case.
|
||
|
+names_make_conf $_UUID "/dev/md4" "empty" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md4" "empty" "name"
|
||
|
+mdadm -S "/dev/md4"
|
||
|
+
|
||
|
+# 6. <devname> set to /dev/mdX, <name> same as in metadata.
|
||
|
+# Metadata name and default node used - controversial. Current behavior documented.
|
||
|
+names_make_conf $_UUID "/dev/md22" "name" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "name" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 7. <devname> set to /dev/mdX, <name> different than in metadata.
|
||
|
+# Metadata name and default node used - controversial. Current behavior documented.
|
||
|
+names_make_conf $_UUID "/dev/md8" "other" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "name" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 8. Both <devname> and <name> different than in metadata.
|
||
|
+# Metadata name and default node used - controversial. Current behavior documented.
|
||
|
+names_make_conf $_UUID "devnode" "other_name" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "name" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 9. <devname> set to metadata name, <name> different than in metadata.
|
||
|
+# Metadata name and default node used - controversial. Current behavior documented.
|
||
|
+names_make_conf $_UUID "name" "other_name" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "name" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 10. Bad <devname> set, no <name>.
|
||
|
+# Metadata name and default node used - expected.
|
||
|
+names_make_conf $_UUID "/im/bad/devname" "empty" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "name" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 11. <devname> with some special symbols and locales, no <name>.
|
||
|
+# It needs to wait a while for timeout because udev cannot create a link - known issue.
|
||
|
+names_make_conf $_UUID "tźż-\.,<>st+-" "empty" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "tźż-\.,<>st+-" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 12. No <devname> and <name> set.
|
||
|
+# Metadata name and default node used - expected.
|
||
|
+names_make_conf $_UUID "empty" "empty" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "name" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 13. No <devname>, <name> set to /dev/mdX.
|
||
|
+# Entry should be ignored, it is not ignored but result is good anyway.
|
||
|
+names_make_conf $_UUID "empty" "/dev/md12" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "name" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
+
|
||
|
+# 13. No <devname>, <name> with special symbols and locales.
|
||
|
+# Entry should be ignored, it is not ignored but result is good anyway.
|
||
|
+names_make_conf $_UUID "empty" "./\śćń#&" $config
|
||
|
+mdadm -I $dev0 --config=$config
|
||
|
+names_verify "/dev/md127" "name" "name"
|
||
|
+mdadm -S "/dev/md127"
|
||
|
diff --git a/tests/templates/names_template b/tests/templates/names_template
|
||
|
index 9f09be9e..8d2b5c81 100644
|
||
|
--- a/tests/templates/names_template
|
||
|
+++ b/tests/templates/names_template
|
||
|
@@ -51,3 +51,23 @@ function names_verify() {
|
||
|
exit 1
|
||
|
fi
|
||
|
}
|
||
|
+
|
||
|
+# Generate ARRAYLINE for tested array.
|
||
|
+names_make_conf() {
|
||
|
+ local UUID="$1"
|
||
|
+ local WANTED_DEVNAME="$2"
|
||
|
+ local WANTED_NAME="$3"
|
||
|
+ local CONF="$4"
|
||
|
+
|
||
|
+ local LINE="ARRAY metadata=1.2 UUID=$UUID"
|
||
|
+
|
||
|
+ if [[ "$WANTED_DEVNAME" != "empty" ]]; then
|
||
|
+ LINE="$LINE $WANTED_DEVNAME"
|
||
|
+ fi
|
||
|
+
|
||
|
+ if [[ "$WANTED_NAME" != "empty" ]]; then
|
||
|
+ LINE="$LINE name=$WANTED_NAME"
|
||
|
+ fi
|
||
|
+
|
||
|
+ echo $LINE > $CONF
|
||
|
+}
|
||
|
--
|
||
|
2.40.1
|
||
|
|