]>
git.ipfire.org Git - thirdparty/mdadm.git/blob - test
3 # run test suite for mdadm
18 # use loop devices by default if doesn't specify --dev
23 # make sure to test local mdmon, not system one
24 export MDADM_NO_SYSTEMCTL
=1
26 # assume md0, md1, md2 exist in /dev
34 echo -e "\n\tERROR: $* \n"
44 # mdadm always adds --quiet, and we want to see any unexpected messages
46 rm -f $targetdir/stderr
50 p
=`cat /proc/sys/dev/raid/speed_limit_max`
51 echo 20000 > /proc
/sys
/dev
/raid
/speed_limit_max
55 *-C* |
*--create* |
*-B* |
*--build* )
56 # clear superblock every time once creating or
57 # building arrays, because it's always creating
58 # and building array many times in a test case.
61 [[ $args =~
"/dev/" ]] && {
62 [[ $args =~
"md" ]] ||
63 $mdadm --zero $args > /dev
/null
66 $mdadm 2> $targetdir/stderr
--quiet "$@" --auto=yes
69 $mdadm 2> $targetdir/stderr
--quiet "$@"
76 echo $p > /proc
/sys
/dev
/raid
/speed_limit_max
79 cat >&2 $targetdir/stderr
85 _basename
=`basename $_script`
90 if [ -f "${_script}.broken" ]; then
92 _broken_msg
=$
(head -n1 "${_script}.broken" |
tr -d '\n')
93 if [ "$skipbroken" == "all" ]; then
95 elif [ "$skipbroken" == "always" ] &&
96 [[ "$_broken_msg" == *always
* ]]; then
101 rm -f $targetdir/stderr
102 # this might have been reset: restore the default.
103 echo 2000 > /proc
/sys
/dev
/raid
/speed_limit_max
105 # source script in a subshell, so it has access to our
106 # namespace, but cannot change it.
107 echo -ne "$_script... "
108 if ( set -ex ; .
$_script ) &> $targetdir/log
110 dmesg |
grep -iq "error\|call trace\|segfault" &&
111 die
"dmesg prints errors when testing $_basename!"
117 if [ "$_broken" == "1" ]; then
118 echo " (KNOWN BROKEN TEST: $_broken_msg)"
121 [ "$savelogs" == "1" ] &&
122 mv -f $targetdir/log
$logdir/$_basename.log
123 [ "$ctrl_c_error" == "1" ] && exit 1
124 [ "$_fail" == "1" -a "$exitonerror" == "1" \
125 -a "$_broken" == "0" ] && exit 1
132 Example for disk mode: ./test --dev=disk --disks=/dev/sda{2..15}
134 --tests=test1,test2,... Comma separated list of tests to run
135 --testdir= Specify testdir as tests|clustermd_tests
136 --raidtype= raid0|linear|raid1|raid456|raid10|ddf|imsm
137 --disable-multipath Disable any tests involving multipath
138 --disable-integrity Disable slow tests of RAID[56] consistency
139 --logdir=directory Directory to save all logfiles in
140 --save-logs Usually use with --logdir together
141 --keep-going | --no-error Don't stop on error, ie. run all tests
142 --loop=N Run tests N times (0 to run forever)
143 --skip-broken Skip tests that are known to be broken
144 --skip-always-broken Skip tests that are known to always fail
145 --dev=loop|lvm|ram|disk Use loop devices (default), LVM, RAM or disk
146 --disks= Provide a bunch of physical devices for test
147 --volgroup=name LVM volume group for LVM test
148 setup Setup test environment and exit
149 cleanup Cleanup test environment
150 prefix Run tests with <prefix>
151 --help | -h Print this usage
165 testdir
=clustermd_tests
166 CLUSTER_CONF
="$PWD/$testdir/cluster_conf"
169 echo "Unknown argument: $i"
177 [ -z "$testdir" ] && testdir
=tests
186 echo "mdadm test environment setup"
198 TESTLIST
=($
(echo ${i##*=} |
sed -e 's/,/ /g'))
203 TESTLIST
=($
(ls $testdir |
grep "[0-9][0-9]r0\|raid0"))
206 TESTLIST
=($
(ls $testdir |
grep "linear"))
209 TESTLIST
=($
(ls $testdir |
grep "[0-9][0-9]r1\|raid1" |
grep -vi "r10\|raid10"))
212 TESTLIST
=($
(ls $testdir |
grep "[0-9][0-9]r[4-6]\|raid[4-6]"))
215 TESTLIST
=($
(ls $testdir |
grep "[0-9][0-9]r10\|raid10"))
218 TESTLIST
=($
(ls $testdir |
grep "[0-9][0-9]ddf"))
221 TESTLIST
=($
(ls $testdir |
grep "[0-9][0-9]imsm"))
224 echo "Unknown argument: $i"
236 --keep-going |
--no-error )
245 --skip-always-broken )
248 --disable-multipath )
251 --disable-integrity )
269 echo "Unknown argument: $i"
276 disks
=(${disks[*]} ${i##*=})
279 LVM_VOLGROUP
=`expr "x$i" : 'x[^=]*=\(.*\)'`
286 echo " $0: Unknown argument: $i"
297 echo "Testing on linux-$(uname -r) kernel"
298 [ "$savelogs" == "1" ] &&
299 echo "Saving logs to $logdir"
302 if [ "x$TESTLIST" != "x" ]
304 for script in ${TESTLIST[@]}
306 do_test
$testdir/$script
309 for script in $testdir/$prefix $testdir/$prefix*[^~
]
320 if [ "$loop" == "0" ]; then