Blame SOURCES/0047-tests-add-test-for-names.patch

25786b
From b7671c82010ffc04dfaecff2dd19ef8b2283e2b6 Mon Sep 17 00:00:00 2001
25786b
From: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
25786b
Date: Tue, 19 Jul 2022 14:48:21 +0200
25786b
Subject: [PATCH 47/52] tests: add test for names
25786b
25786b
Current behavior is not documented and tested. This test is a base for
25786b
future improvements. It is enough to test it only with native metadata,
25786b
because it is generic code. Generated properties are passed to metadata
25786b
handler.
25786b
25786b
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
25786b
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
25786b
---
25786b
 tests/00createnames | 93 +++++++++++++++++++++++++++++++++++++++++++++
25786b
 1 file changed, 93 insertions(+)
25786b
 create mode 100644 tests/00createnames
25786b
25786b
diff --git a/tests/00createnames b/tests/00createnames
25786b
new file mode 100644
25786b
index 00000000..64b81b92
25786b
--- /dev/null
25786b
+++ b/tests/00createnames
25786b
@@ -0,0 +1,93 @@
25786b
+set -x -e
25786b
+
25786b
+# Test how <devname> and --name= are handled for create mode.
25786b
+# We need to check three properties, generated from those parameters:
25786b
+# - devnode name
25786b
+# - link in /dev/md/ (MD_DEVNAME property from --detail --export)
25786b
+# - name in metadata (MD_NAME property from --examine --export)
25786b
+
25786b
+function _verify() {
25786b
+  local DEVNODE_NAME="$1"
25786b
+  local WANTED_LINK="$2"
25786b
+  local WANTED_NAME="$3"
25786b
+
25786b
+  local RES="$(mdadm -D --export $DEVNODE_NAME | grep MD_DEVNAME)"
25786b
+  if [[ "$?" != "0" ]]; then
25786b
+    echo "Cannot get details for $DEVNODE_NAME - unexpected devnode."
25786b
+    exit 1
25786b
+  fi
25786b
+
25786b
+  if [[ "$WANTED_LINK" != "empty" ]]; then
25786b
+    local EXPECTED="MD_DEVNAME=$WANTED_LINK"
25786b
+      if [[ "$RES" != "$EXPECTED" ]]; then
25786b
+        echo "$RES doesn't match $EXPECTED."
25786b
+        exit 1
25786b
+      fi
25786b
+  fi
25786b
+
25786b
+
25786b
+  local RES="$(mdadm -E --export $dev0 | grep MD_NAME)"
25786b
+  if [[ "$?" != "0" ]]; then
25786b
+    echo "Cannot get metadata from $dev0."
25786b
+    exit 1
25786b
+  fi
25786b
+
25786b
+  local EXPECTED="MD_NAME=$(hostname):$WANTED_NAME"
25786b
+  if [[ "$RES" != "$EXPECTED" ]]; then
25786b
+    echo "$RES doesn't match $EXPECTED."
25786b
+    exit 1
25786b
+  fi
25786b
+}
25786b
+
25786b
+function _create() {
25786b
+  local DEVNAME=$1
25786b
+  local NAME=$2
25786b
+
25786b
+  if [[ -z "$NAME" ]]; then
25786b
+    mdadm -CR "$DEVNAME" -l0 -n 1 $dev0 --force
25786b
+  else
25786b
+    mdadm -CR "$DEVNAME" --name="$NAME" -l0 -n 1 $dev0 --force
25786b
+  fi
25786b
+
25786b
+  if [[ "$?" != "0" ]]; then
25786b
+    echo "Cannot create device."
25786b
+    exit 1
25786b
+  fi
25786b
+}
25786b
+
25786b
+# The most trivial case.
25786b
+_create "/dev/md/name"
25786b
+_verify "/dev/md127" "name" "name"
25786b
+mdadm -S "/dev/md127"
25786b
+
25786b
+_create "name"
25786b
+_verify "/dev/md127" "name" "name"
25786b
+mdadm -S "/dev/md127"
25786b
+
25786b
+# Use 'mdX' as name.
25786b
+_create "/dev/md/md0"
25786b
+_verify "/dev/md127" "md0" "md0"
25786b
+mdadm -S "/dev/md127"
25786b
+
25786b
+_create "md0"
25786b
+_verify "/dev/md127" "md0" "md0"
25786b
+mdadm -S "/dev/md127"
25786b
+
25786b
+# <devnode> is used to create MD_DEVNAME but, name is used to create MD_NAME.
25786b
+_create "/dev/md/devnode" "name"
25786b
+_verify "/dev/md127" "devnode" "name"
25786b
+mdadm -S "/dev/md127"
25786b
+
25786b
+_create "devnode" "name"
25786b
+_verify "/dev/md127" "devnode" "name"
25786b
+mdadm -S "/dev/md127"
25786b
+
25786b
+# Devnode points to /dev/ directory. MD_DEVNAME doesn't exist.
25786b
+_create "/dev/md0"
25786b
+_verify "/dev/md0" "empty" "0"
25786b
+mdadm -S "/dev/md0"
25786b
+
25786b
+# Devnode points to /dev/ directory and name is set.
25786b
+_create "/dev/md0" "name"
25786b
+_verify "/dev/md0" "empty" "name"
25786b
+mdadm -S "/dev/md0"
25786b
-- 
25786b
2.31.1
25786b