]> git.ipfire.org Git - thirdparty/mdadm.git/blame - tests/00createnames
tests: add test for names
[thirdparty/mdadm.git] / tests / 00createnames
CommitLineData
b7671c82
MT
1set -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
9function _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
42function _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"
61mdadm -S "/dev/md127"
62
63_create "name"
64_verify "/dev/md127" "name" "name"
65mdadm -S "/dev/md127"
66
67# Use 'mdX' as name.
68_create "/dev/md/md0"
69_verify "/dev/md127" "md0" "md0"
70mdadm -S "/dev/md127"
71
72_create "md0"
73_verify "/dev/md127" "md0" "md0"
74mdadm -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"
79mdadm -S "/dev/md127"
80
81_create "devnode" "name"
82_verify "/dev/md127" "devnode" "name"
83mdadm -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"
88mdadm -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"
93mdadm -S "/dev/md0"