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

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