]> git.ipfire.org Git - thirdparty/mdadm.git/blob - tests/00createnames
tests: add test for names
[thirdparty/mdadm.git] / tests / 00createnames
1 set -x -e
2
3 # Test how <devname> and --name= are handled for create mode.
4 # We need to check three properties, generated from those parameters:
5 # - devnode name
6 # - link in /dev/md/ (MD_DEVNAME property from --detail --export)
7 # - name in metadata (MD_NAME property from --examine --export)
8
9 function _verify() {
10 local DEVNODE_NAME="$1"
11 local WANTED_LINK="$2"
12 local WANTED_NAME="$3"
13
14 local RES="$(mdadm -D --export $DEVNODE_NAME | grep MD_DEVNAME)"
15 if [[ "$?" != "0" ]]; then
16 echo "Cannot get details for $DEVNODE_NAME - unexpected devnode."
17 exit 1
18 fi
19
20 if [[ "$WANTED_LINK" != "empty" ]]; then
21 local EXPECTED="MD_DEVNAME=$WANTED_LINK"
22 if [[ "$RES" != "$EXPECTED" ]]; then
23 echo "$RES doesn't match $EXPECTED."
24 exit 1
25 fi
26 fi
27
28
29 local RES="$(mdadm -E --export $dev0 | grep MD_NAME)"
30 if [[ "$?" != "0" ]]; then
31 echo "Cannot get metadata from $dev0."
32 exit 1
33 fi
34
35 local EXPECTED="MD_NAME=$(hostname):$WANTED_NAME"
36 if [[ "$RES" != "$EXPECTED" ]]; then
37 echo "$RES doesn't match $EXPECTED."
38 exit 1
39 fi
40 }
41
42 function _create() {
43 local DEVNAME=$1
44 local NAME=$2
45
46 if [[ -z "$NAME" ]]; then
47 mdadm -CR "$DEVNAME" -l0 -n 1 $dev0 --force
48 else
49 mdadm -CR "$DEVNAME" --name="$NAME" -l0 -n 1 $dev0 --force
50 fi
51
52 if [[ "$?" != "0" ]]; then
53 echo "Cannot create device."
54 exit 1
55 fi
56 }
57
58 # The most trivial case.
59 _create "/dev/md/name"
60 _verify "/dev/md127" "name" "name"
61 mdadm -S "/dev/md127"
62
63 _create "name"
64 _verify "/dev/md127" "name" "name"
65 mdadm -S "/dev/md127"
66
67 # Use 'mdX' as name.
68 _create "/dev/md/md0"
69 _verify "/dev/md127" "md0" "md0"
70 mdadm -S "/dev/md127"
71
72 _create "md0"
73 _verify "/dev/md127" "md0" "md0"
74 mdadm -S "/dev/md127"
75
76 # <devnode> is used to create MD_DEVNAME but, name is used to create MD_NAME.
77 _create "/dev/md/devnode" "name"
78 _verify "/dev/md127" "devnode" "name"
79 mdadm -S "/dev/md127"
80
81 _create "devnode" "name"
82 _verify "/dev/md127" "devnode" "name"
83 mdadm -S "/dev/md127"
84
85 # Devnode points to /dev/ directory. MD_DEVNAME doesn't exist.
86 _create "/dev/md0"
87 _verify "/dev/md0" "empty" "0"
88 mdadm -S "/dev/md0"
89
90 # Devnode points to /dev/ directory and name is set.
91 _create "/dev/md0" "name"
92 _verify "/dev/md0" "empty" "name"
93 mdadm -S "/dev/md0"