From e2f092d334d53fb4538d93fdab60cb538d043547 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Mon, 3 May 2010 11:20:52 +0200 Subject: [PATCH] tests: add blkid tests for RAID1 Signed-off-by: Karel Zak --- tests/expected/blkid/md-raid1-part | 58 ++++++++++++++++++ tests/expected/blkid/md-raid1-whole | 58 ++++++++++++++++++ tests/functions.sh | 2 +- tests/ts/blkid/md-raid1-part | 92 +++++++++++++++++++++++++++++ tests/ts/blkid/md-raid1-whole | 88 +++++++++++++++++++++++++++ 5 files changed, 297 insertions(+), 1 deletion(-) create mode 100644 tests/expected/blkid/md-raid1-part create mode 100644 tests/expected/blkid/md-raid1-whole create mode 100755 tests/ts/blkid/md-raid1-part create mode 100755 tests/ts/blkid/md-raid1-whole diff --git a/tests/expected/blkid/md-raid1-part b/tests/expected/blkid/md-raid1-part new file mode 100644 index 00000000..0a850a5d --- /dev/null +++ b/tests/expected/blkid/md-raid1-part @@ -0,0 +1,58 @@ +Create partitions +Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel + +Changes will remain in memory only, until you decide to write them. +After that, of course, the previous content won't be recoverable. + +Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) + +WARNING: DOS-compatible mode is deprecated. It's strongly recommended to + switch off the mode (command 'c') and change display units to + sectors (command 'u'). + +Command (m for help): DOS Compatibility flag is not set + +Command (m for help): Changing display/entry units to sectors + +Command (m for help): Command action + e extended + p primary partition (1-4) +Partition number (1-4): First sector (2048-104447, default 2048): Using default value 2048 +Last sector, +sectors or +size{K,M,G} (2048-104447, default 104447): +Command (m for help): Command action + e extended + p primary partition (1-4) +Partition number (1-4): First sector (53248-104447, default 53248): Using default value 53248 +Last sector, +sectors or +size{K,M,G} (53248-104447, default 104447): Using default value 104447 + +Command (m for help): +Disk /dev/sdb: 53 MB, 53477376 bytes +32 heads, 32 sectors/track, 102 cylinders, total 104448 sectors +Units = sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 32768 bytes + + + Device Boot Start End Blocks Id System +/dev/sdb1 2048 53247 25600 83 Linux +/dev/sdb2 53248 104447 25600 83 Linux + +Command (m for help): The partition table has been altered! + +Calling ioctl() to re-read partition table. +Syncing disks. +Create RAID1 device +Probe whole-disk +ID_PART_TABLE_TYPE=dos +Probe first RAID member +ID_FS_TYPE=linux_raid_member +ID_FS_USAGE=raid + + +ID_FS_VERSION=0.90.0 +Probe second RAID member +ID_FS_TYPE=linux_raid_member +ID_FS_USAGE=raid + + +ID_FS_VERSION=0.90.0 diff --git a/tests/expected/blkid/md-raid1-whole b/tests/expected/blkid/md-raid1-whole new file mode 100644 index 00000000..2e8eefcb --- /dev/null +++ b/tests/expected/blkid/md-raid1-whole @@ -0,0 +1,58 @@ +Initialize devices +Create RAID device +Create partitions on RAID device +Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel + +Changes will remain in memory only, until you decide to write them. +After that, of course, the previous content won't be recoverable. + +Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) + +WARNING: DOS-compatible mode is deprecated. It's strongly recommended to + switch off the mode (command 'c') and change display units to + sectors (command 'u'). + +Command (m for help): DOS Compatibility flag is not set + +Command (m for help): Changing display/entry units to sectors + +Command (m for help): Command action + e extended + p primary partition (1-4) +Partition number (1-4): First sector (2048-102271, default 2048): Using default value 2048 +Last sector, +sectors or +size{K,M,G} (2048-102271, default 102271): +Command (m for help): Command action + e extended + p primary partition (1-4) +Partition number (1-4): First sector (22528-102271, default 22528): Using default value 22528 +Last sector, +sectors or +size{K,M,G} (22528-102271, default 102271): +Command (m for help): +Disk /dev/md8: 52 MB, 52363264 bytes +2 heads, 4 sectors/track, 12784 cylinders, total 102272 sectors +Units = sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + + Device Boot Start End Blocks Id System +/dev/md8p1 2048 22527 10240 83 Linux +/dev/md8p2 22528 43007 10240 83 Linux + +Command (m for help): The partition table has been altered! + +Calling ioctl() to re-read partition table. +Syncing disks. +Probe first RAID member +ID_FS_TYPE=linux_raid_member +ID_FS_USAGE=raid + + +ID_FS_VERSION=0.90.0 +Probe second RAID member +ID_FS_TYPE=linux_raid_member +ID_FS_USAGE=raid + + +ID_FS_VERSION=0.90.0 +Stop RAID device +Deinitialize devices diff --git a/tests/functions.sh b/tests/functions.sh index bf93ef63..d79c9808 100644 --- a/tests/functions.sh +++ b/tests/functions.sh @@ -261,7 +261,7 @@ function ts_image_init { function ts_device_init { local img=$(ts_image_init $1 $2) - local dev=$($TS_CMD_LOSETUP -s -f "$img") + local dev=$($TS_CMD_LOSETUP --show -f "$img") if [ -z "$dev" ]; then ts_device_deinit $dev diff --git a/tests/ts/blkid/md-raid1-part b/tests/ts/blkid/md-raid1-part new file mode 100755 index 00000000..1d55f6bb --- /dev/null +++ b/tests/ts/blkid/md-raid1-part @@ -0,0 +1,92 @@ +#!/bin/bash + +# +# Copyright (C) 2010 Karel Zak +# +# This file is part of util-linux-ng. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# + +TS_TOPDIR="$(dirname $0)/../.." +TS_DESC="MD raid1 (last partition)" + +. $TS_TOPDIR/functions.sh +ts_init "$*" +ts_skip_nonroot + +modprobe --dry-run --quiet scsi_debug +[ "$?" == 0 ] || ts_skip "missing scsi_debug module" +[ -x /sbin/mdadm ] || ts_skip "missing mdadm" + +rmmod scsi_debug &> /dev/null +modprobe scsi_debug dev_size_mb=51 sector_size=512 +[ "$?" == 0 ] || ts_die "Cannot init device" + +sleep 3 + +DEVNAME=$(grep scsi_debug /sys/block/*/device/model | awk -F '/' '{print $4}') +[ "x${DEVNAME}" == "x" ] && ts_die "Cannot found device" + +DEVICE="/dev/${DEVNAME}" + +ts_log "Create partitions" +$TS_CMD_FDISK ${DEVICE} >> $TS_OUTPUT 2>&1 < /dev/null +/sbin/mdadm -q --create ${MD_DEVICE} --metadata=0.90 --chunk=64 --level=1 \ + --raid-devices=2 ${DEVICE}1 ${DEVICE}2 >> $TS_OUTPUT 2>&1 + +sleep 3 + +ts_log "Probe whole-disk" +$TS_CMD_BLKID -p -o udev ${DEVICE} 2>&1 | sort >> $TS_OUTPUT + +ts_log "Probe first RAID member" +$TS_CMD_BLKID -p -o udev ${DEVICE}1 2>&1 | sort >> $TS_OUTPUT + +ts_log "Probe second RAID member" +$TS_CMD_BLKID -p -o udev ${DEVICE}2 2>&1 | sort >> $TS_OUTPUT + +/sbin/mdadm -q -S ${MD_DEVICE} >> $TS_OUTPUT 2>&1 + +sleep 3 +rmmod scsi_debug + +# remove disk ID and generated UUIDs +sed -i -e 's/Disk identifier:.*//g' $TS_OUTPUT +sed -i -e 's/Building a new.*//g' $TS_OUTPUT +sed -i -e 's/ID_FS_UUID.*//g' $TS_OUTPUT + +ts_finalize diff --git a/tests/ts/blkid/md-raid1-whole b/tests/ts/blkid/md-raid1-whole new file mode 100755 index 00000000..4589dcff --- /dev/null +++ b/tests/ts/blkid/md-raid1-whole @@ -0,0 +1,88 @@ +#!/bin/bash + +# +# Copyright (C) 2010 Karel Zak +# +# This file is part of util-linux-ng. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# + +TS_TOPDIR="$(dirname $0)/../.." +TS_DESC="MD raid1 (whole-disks)" + +. $TS_TOPDIR/functions.sh +ts_init "$*" +ts_skip_nonroot +[ -x /sbin/mdadm ] || ts_skip "missing mdadm" + +set -o pipefail + +ts_log "Initialize devices" +IMGNAME="${TS_OUTDIR}/${TS_TESTNAME}" + +DEVICE1=$(ts_device_init 50 ${IMGNAME}1.img) +[ "$?" == 0 ] || ts_die "Cannot init device1" + +DEVICE2=$(ts_device_init 50 ${IMGNAME}2.img) +[ "$?" == 0 ] || ts_die "Cannot init device2" $DEVICE1 + +MD_DEVNAME=md8 +MD_DEVICE=/dev/${MD_DEVNAME} + +/sbin/mdadm -q -S ${MD_DEVICE} &> /dev/null + +ts_log "Create RAID device" +/sbin/mdadm -q --create ${MD_DEVICE} --metadata=0.90 --chunk=64 --level=1 \ + --raid-devices=2 ${DEVICE1} ${DEVICE2} >> $TS_OUTPUT 2>&1 + +ts_log "Create partitions on RAID device" +$TS_CMD_FDISK ${MD_DEVICE} >> $TS_OUTPUT 2>&1 <&1 | sort >> $TS_OUTPUT + +ts_log "Probe second RAID member" +$TS_CMD_BLKID -p -o udev $DEVICE1 2>&1 | sort >> $TS_OUTPUT + +ts_log "Stop RAID device" +/sbin/mdadm -q -S ${MD_DEVICE} >> $TS_OUTPUT 2>&1 + +sleep 3 + +ts_log "Deinitialize devices" +ts_device_deinit $DEVICE1 +ts_device_deinit $DEVICE2 + +# remove disk ID and generated UUIDs +sed -i -e 's/Disk identifier:.*//g' $TS_OUTPUT +sed -i -e 's/Building a new.*//g' $TS_OUTPUT +sed -i -e 's/ID_FS_UUID.*//g' $TS_OUTPUT + +ts_finalize -- 2.39.5