tests: fix and refactor partx
Subtest delete-non-existent was broken because since 2d47fa39
option --nr was missing. It wasn't noticed because we did not
check stderr. Now we check all return values and output.
Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
This commit is contained in:
parent
2a67d912c6
commit
3a951379a7
|
@ -2,3 +2,4 @@ NR START END SECTORS SIZE NAME UUID
|
||||||
1 32 33791 33760 16.5M
|
1 32 33791 33760 16.5M
|
||||||
2 33792 67583 33792 16.5M
|
2 33792 67583 33792 16.5M
|
||||||
3 67584 102399 34816 17M
|
3 67584 102399 34816 17M
|
||||||
|
OK
|
||||||
|
|
|
@ -31,16 +31,35 @@ ts_check_test_command "$TS_CMD_DELPART"
|
||||||
ts_skip_nonroot
|
ts_skip_nonroot
|
||||||
ts_check_prog "xz"
|
ts_check_prog "xz"
|
||||||
|
|
||||||
|
shopt -s nullglob
|
||||||
|
|
||||||
|
function check_partition_count
|
||||||
|
{
|
||||||
|
# this function needs shopt -s nullglob
|
||||||
|
local cnt_want=$1
|
||||||
|
local devname=$(basename $TS_DEVICE)
|
||||||
|
local parts=(/sys/block/${devname}/${devname}*)
|
||||||
|
local cnt_have=${#parts[@]}
|
||||||
|
|
||||||
|
if [ $cnt_have -eq $cnt_want ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
echo "error: expected $cnt_want partitions, have $cnt_have" >&2
|
||||||
|
echo "${parts[@]}" >&2
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
mkdir -p $TS_OUTDIR/images-pt
|
mkdir -p $TS_OUTDIR/images-pt
|
||||||
for img in $(ls $TS_IMGDIR/*.img.xz | sort); do
|
for img in $TS_IMGDIR/*.img.xz; do
|
||||||
name=$(basename $img .img.xz)
|
name=$(basename $img .img.xz)
|
||||||
outimg=$TS_OUTDIR/images-pt/${name}.img
|
outimg=$TS_OUTDIR/images-pt/${name}.img
|
||||||
|
|
||||||
ts_init_subtest $name
|
ts_init_subtest $name
|
||||||
|
{
|
||||||
xz -dc $img > $outimg
|
xz -dc $img > $outimg &&
|
||||||
|
$TS_CMD_PARTX $outimg ||
|
||||||
$TS_CMD_PARTX $outimg &> $TS_OUTPUT
|
echo "failed: $?"
|
||||||
|
} >$TS_OUTPUT 2>&1
|
||||||
ts_finalize_subtest
|
ts_finalize_subtest
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -48,90 +67,123 @@ done
|
||||||
ts_scsi_debug_init dev_size_mb=50
|
ts_scsi_debug_init dev_size_mb=50
|
||||||
|
|
||||||
ts_init_subtest "addpart"
|
ts_init_subtest "addpart"
|
||||||
$TS_CMD_ADDPART ${TS_DEVICE} 1 0 1
|
{
|
||||||
[ "$?" == 0 ] && echo OK &>$TS_OUTPUT || ts_die "Unable to add partition"a &>$TS_OUTPUT
|
$TS_CMD_ADDPART ${TS_DEVICE} 1 0 1 &&
|
||||||
|
echo OK ||
|
||||||
|
echo "Unable to add partition"
|
||||||
|
check_partition_count 1
|
||||||
|
} >$TS_OUTPUT 2>&1
|
||||||
ts_finalize_subtest
|
ts_finalize_subtest
|
||||||
|
|
||||||
udevadm settle
|
udevadm settle
|
||||||
|
|
||||||
ts_init_subtest "delpart"
|
ts_init_subtest "delpart"
|
||||||
$TS_CMD_DELPART ${TS_DEVICE} 1
|
{
|
||||||
[ "$?" == 0 ] && echo OK >> $TS_OUTPUT 2>&1 || ts_die "Unable to remove partition" >> $TS_OUTPUT 2>&1
|
$TS_CMD_DELPART ${TS_DEVICE} 1 &&
|
||||||
|
echo OK ||
|
||||||
|
echo "Unable to remove partition"
|
||||||
|
check_partition_count 0
|
||||||
|
} >$TS_OUTPUT 2>&1
|
||||||
ts_finalize_subtest
|
ts_finalize_subtest
|
||||||
|
|
||||||
ts_scsi_debug_rmmod
|
ts_scsi_debug_rmmod
|
||||||
|
|
||||||
# set global variable TS_DEVICE
|
# set global variable TS_DEVICE
|
||||||
ts_scsi_debug_init dev_size_mb=50 num_parts=$PARTS
|
ts_scsi_debug_init dev_size_mb=50 num_parts=$PARTS
|
||||||
DEVNAME=$(basename $TS_DEVICE)
|
|
||||||
|
|
||||||
ts_init_subtest "detect-parts"
|
ts_init_subtest "detect-parts"
|
||||||
$TS_CMD_PARTX --show $TS_DEVICE &> $TS_OUTPUT
|
{
|
||||||
|
$TS_CMD_PARTX --show $TS_DEVICE &&
|
||||||
|
echo OK ||
|
||||||
|
echo "Unable to list partitions"
|
||||||
|
check_partition_count $PARTS
|
||||||
|
} >$TS_OUTPUT 2>&1
|
||||||
ts_finalize_subtest
|
ts_finalize_subtest
|
||||||
|
|
||||||
udevadm settle
|
udevadm settle
|
||||||
|
|
||||||
ts_init_subtest "delete-all"
|
ts_init_subtest "delete-all"
|
||||||
#delete partinfo
|
#delete partinfo
|
||||||
$TS_CMD_PARTX --delete $TS_DEVICE &> $TS_OUTPUT
|
{
|
||||||
[ $? -eq 0 ] && echo "partitions deleted" &> $TS_OUTPUT ||
|
$TS_CMD_PARTX --delete $TS_DEVICE &&
|
||||||
echo "Unable to delete partitions on $TS_DEVICE" &> $TS_OUTPUT
|
echo "partitions deleted" ||
|
||||||
ls -d "/sys/block/${DEVNAME}/${DEVNAME}*" 2>/dev/null && ts_die
|
echo "Unable to delete partitions on $TS_DEVICE"
|
||||||
|
check_partition_count 0
|
||||||
|
} >$TS_OUTPUT 2>&1
|
||||||
ts_finalize_subtest
|
ts_finalize_subtest
|
||||||
|
|
||||||
udevadm settle
|
udevadm settle
|
||||||
|
|
||||||
ts_init_subtest "add-all"
|
ts_init_subtest "add-all"
|
||||||
#read TS_DEVICE and restore the partinfo
|
#read TS_DEVICE and restore the partinfo
|
||||||
$TS_CMD_PARTX --add $TS_DEVICE &> $TS_OUTPUT
|
{
|
||||||
[ $(ls -d /sys/block/${DEVNAME}/${DEVNAME}* 2>/dev/null | wc -l) -eq $PARTS ] &&
|
$TS_CMD_PARTX --add $TS_DEVICE &&
|
||||||
echo "partitions added" >> $TS_OUTPUT 2>&1 ||
|
echo "partitions added" ||
|
||||||
echo "Unable to add partitions for $TS_DEVICE" >> $TS_OUTPUT 2>&1
|
echo "Unable to add partitions for $TS_DEVICE"
|
||||||
|
check_partition_count $PARTS
|
||||||
|
} >$TS_OUTPUT 2>&1
|
||||||
ts_finalize_subtest
|
ts_finalize_subtest
|
||||||
|
|
||||||
udevadm settle
|
udevadm settle
|
||||||
|
|
||||||
ts_init_subtest "update-one"
|
ts_init_subtest "update-one"
|
||||||
#read TS_DEVICE and update second partition
|
#read TS_DEVICE and update second partition
|
||||||
$TS_CMD_PARTX --update ${TS_DEVICE}2 &> $TS_OUTPUT
|
{
|
||||||
[ $(ls -d /sys/block/${DEVNAME}/${DEVNAME}* 2>/dev/null | wc -l) -eq $PARTS ] &&
|
$TS_CMD_PARTX --update ${TS_DEVICE}2 &&
|
||||||
echo "partitions updated" >> $TS_OUTPUT 2>&1 ||
|
echo "partitions updated" ||
|
||||||
echo "Unable to update 2nd partition for $TS_DEVICE" >> $TS_OUTPUT 2>&1
|
echo "Unable to update 2nd partition for $TS_DEVICE"
|
||||||
|
check_partition_count $PARTS
|
||||||
|
} >$TS_OUTPUT 2>&1
|
||||||
ts_finalize_subtest
|
ts_finalize_subtest
|
||||||
|
|
||||||
udevadm settle
|
udevadm settle
|
||||||
|
|
||||||
ts_init_subtest "delete-one"
|
ts_init_subtest "delete-one"
|
||||||
#remove last partition only
|
#remove last partition only
|
||||||
$TS_CMD_PARTX -d --nr -1 $TS_DEVICE >> $TS_OUTPUT 2>&1
|
{
|
||||||
[ $(ls -d /sys/block/${DEVNAME}/${DEVNAME}* 2>/dev/null |
|
$TS_CMD_PARTX -d --nr -1 $TS_DEVICE &&
|
||||||
wc -l) -eq $((PARTS-1)) ] &&
|
echo "last partition removed" ||
|
||||||
echo "last partition removed" >> $TS_OUTPUT 2>&1 ||
|
echo "Unable to remove a partition on $TS_DEVICE"
|
||||||
echo "Unable to remove a partition on $TS_DEVICE" >> $TS_OUTPUT 2>&1
|
check_partition_count $((PARTS-1))
|
||||||
|
} >$TS_OUTPUT 2>&1
|
||||||
ts_finalize_subtest
|
ts_finalize_subtest
|
||||||
|
|
||||||
udevadm settle
|
udevadm settle
|
||||||
|
|
||||||
ts_init_subtest "delete-non-existent"
|
ts_init_subtest "delete-non-existent"
|
||||||
#attempt to remove it again
|
#attempt to remove it again
|
||||||
$TS_CMD_PARTX -d $PARTS $TS_DEVICE && echo "partx failed: removed non-existing partition" &>$TS_OUTPUT || echo "partx: OK" &>$TS_OUTPUT
|
{
|
||||||
|
$TS_CMD_PARTX -d --nr $PARTS $TS_DEVICE &&
|
||||||
|
echo "partx failed: removed non-existing partition" ||
|
||||||
|
echo "partx: OK"
|
||||||
|
} >$TS_OUTPUT 2>&1
|
||||||
ts_finalize_subtest
|
ts_finalize_subtest
|
||||||
|
|
||||||
udevadm settle
|
udevadm settle
|
||||||
|
|
||||||
ts_init_subtest "add-existing"
|
ts_init_subtest "add-existing"
|
||||||
#try adding an existing partition
|
#try adding an existing partition
|
||||||
$TS_CMD_PARTX -a --nr 1 $TS_DEVICE &>/dev/null && echo "partx failed: re-added an existing partition" &> $TS_OUTPUT || echo "partx: OK" &> $TS_OUTPUT
|
{
|
||||||
|
$TS_CMD_PARTX -a --nr 1 $TS_DEVICE 2>/dev/null &&
|
||||||
|
echo "partx failed: re-added an existing partition" ||
|
||||||
|
echo "partx: OK"
|
||||||
|
} >$TS_OUTPUT 2>&1
|
||||||
ts_finalize_subtest
|
ts_finalize_subtest
|
||||||
|
|
||||||
udevadm settle
|
udevadm settle
|
||||||
|
|
||||||
ts_init_subtest "change-by-range"
|
ts_init_subtest "change-by-range"
|
||||||
# {-a|-d} --nr 0 should handle all partitions
|
# {-a|-d} --nr 0 should handle all partitions
|
||||||
$TS_CMD_PARTX -d --nr 0 $TS_DEVICE
|
{
|
||||||
ls -d /sys/block/${DEVNAME}/${DEVNAME}* 2>/dev/null && echo "Unable to delete partitions on $TS_DEVICE" >> $TS_OUTPUT 2>&1 || echo "partitions deleted" >> $TS_OUTPUT 2>&1
|
$TS_CMD_PARTX -d --nr 0 $TS_DEVICE &&
|
||||||
$TS_CMD_PARTX -a --nr 0 $TS_DEVICE
|
echo "partitions deleted" ||
|
||||||
[ $(ls -d /sys/block/${DEVNAME}/${DEVNAME}* 2>/dev/null | wc -l) -eq $PARTS ] && echo "partitions added" >> $TS_OUTPUT 2>&1 || echo "Failed to add $TS_DEVICE partitions" >> $TS_OUTPUT 2>&1
|
echo "Unable to delete partitions on $TS_DEVICE"
|
||||||
|
check_partition_count 0
|
||||||
|
$TS_CMD_PARTX -a --nr 0 $TS_DEVICE &&
|
||||||
|
echo "partitions added" ||
|
||||||
|
echo "Failed to add $TS_DEVICE partitions"
|
||||||
|
check_partition_count $PARTS
|
||||||
|
} >$TS_OUTPUT 2>&1
|
||||||
ts_finalize_subtest
|
ts_finalize_subtest
|
||||||
|
|
||||||
ts_finalize
|
ts_finalize
|
||||||
|
|
Loading…
Reference in New Issue