diff options
author | NeilBrown <neilb@suse.de> | 2011-02-01 14:43:59 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-02-01 14:43:59 +1100 |
commit | 3cdcfda4b0d0f1cd94ab1d7e287765c82f15d4e4 (patch) | |
tree | 13f4938f23efb8ea5f3d316d5b74b258bfddffac /tests/09imsm-create-fail-rebuild | |
parent | e5e5d7cea390fd33d6be09ee6d8a47bc7695eb50 (diff) |
test: remove all the environment handling.
Instead, just include the environ explicitly in the test file
or, where shared, source the shared file.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'tests/09imsm-create-fail-rebuild')
-rw-r--r-- | tests/09imsm-create-fail-rebuild | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/09imsm-create-fail-rebuild b/tests/09imsm-create-fail-rebuild index 68fdd096..d96496e6 100644 --- a/tests/09imsm-create-fail-rebuild +++ b/tests/09imsm-create-fail-rebuild @@ -1,5 +1,90 @@ # sanity check array creation +imsm_check_hold() { + if mdadm --remove $1 $2; then + echo "$2 removal from $1 should have been blocked" >&2 + cat /proc/mdstat >&2 + mdadm -E $2 + exit 1 + fi +} + +imsm_check_removal() { + if ! mdadm --remove $1 $2 ; then + echo "$2 removal from $1 should have succeeded" >&2 + cat /proc/mdstat >&2 + mdadm -E $2 + exit 1 + fi +} + +imsm_check() { + udevadm settle + case $1 in + container ) + grep -s "$(((418 * $2)/2)) blocks super external:imsm" /proc/mdstat > /dev/null || { + echo >&2 "ERROR correctly formed container not found"; cat /proc/mdstat; exit 1;} + ;; + member ) + member=$2 + num_disks=$3 + level=$4 + size=$5 + offset=$6 + chunk=$7 + err=0 + + if [ $level -ne 1 ]; then + size=$((size & ~(chunk - 1))) + else + chunk=64 + fi + eval `stat -L -c "let major=0x%t; let minor=0x%T;" $member` + sysfs=/sys/dev/block/${major}:${minor} + if [ ! -f ${sysfs}/md/array_state ]; then + echo "member array $member not found" >&2 + cat /proc/mdstat >&2 + exit 1 + fi + _chunk=`cat ${sysfs}/md/chunk_size` + if [ $chunk -ne $((_chunk/1024)) ]; then + echo "chunk mismatch expected $chunk got $_chunk" >&2 + err=$((err+1)) + fi + for i in `seq 0 $((num_disks-1))` + do + _offset=`cat ${sysfs}/md/rd${i}/offset` + if [ $offset -ne $((_offset/2)) ]; then + echo "offset mismatch expected $offset got $_offset" >&2 + err=$((err+1)) + fi + _size=`cat ${sysfs}/md/rd${i}/size` + if [ $size -ne $_size ]; then + echo "size mismatch expected $size got $_size" >&2 + err=$((err+1)) + fi + done + + if [ $err -gt 0 ]; then + echo "$member failed check" >&2 + cat /proc/mdstat >&2 + mdadm -E /dev/loop0 >&2 + exit 1 + fi + ;; + * ) echo >&2 ERROR unknown check $1 ; exit 1; + esac +} + +export IMSM_DEVNAME_AS_SERIAL=1 +export IMSM_TEST_OROM=1 +container=/dev/md/container +member0=/dev/md/vol0 +member1=/dev/md/vol1 +member2=/dev/md/vol2 +member3=/dev/md/vol3 +member4=/dev/md/vol4 + # IMSM rounds to multiples of one mebibyte - 1024K DEV_ROUND_K=1024 |