diff options
author | Nicholas D Steeves <nsteeves@gmail.com> | 2016-04-23 00:41:30 +0100 |
---|---|---|
committer | Nicholas D Steeves <nsteeves@gmail.com> | 2016-04-23 00:41:30 +0100 |
commit | cec572daccafa1e912cbed363df6f84687778c6f (patch) | |
tree | 7d99ab9f73d25c1ed8eaf6393f6374edf5316b03 /tests/mkfs-tests |
btrfs-progs (4.4.1-1.1) unstable; urgency=medium
* Non-maintainer upload.
* New upstream release.
* Rename package to btrfs-progs (Closes: #780081)
* Update standards version to 3.9.7 (no changes needed).
* debian/control: Add "Breaks" per Gianfranco Costamagna's suggestion
* Change lintian override to reflect package rename
* Switch from using postinst and postrm to using triggers
per Christian Seiler's recommendation.
# imported from the archive
Diffstat (limited to 'tests/mkfs-tests')
-rwxr-xr-x | tests/mkfs-tests/001-basic-profiles/test.sh | 91 | ||||
-rwxr-xr-x | tests/mkfs-tests/002-no-force-mixed-on-small-volume/test.sh | 13 | ||||
-rwxr-xr-x | tests/mkfs-tests/003-mixed-with-wrong-nodesize/test.sh | 12 | ||||
-rwxr-xr-x | tests/mkfs-tests/004-rootdir-keeps-size/test.sh | 31 | ||||
-rwxr-xr-x | tests/mkfs-tests/005-long-device-name-for-ssd/test.sh | 40 | ||||
-rw-r--r-- | tests/mkfs-tests/006-partitioned-loopdev/partition-1g-1g | bin | 0 -> 512 bytes | |||
-rwxr-xr-x | tests/mkfs-tests/006-partitioned-loopdev/test.sh | 27 | ||||
-rwxr-xr-x | tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh | 36 | ||||
-rwxr-xr-x | tests/mkfs-tests/008-secorsize-nodesize-combination/test.sh | 50 |
9 files changed, 300 insertions, 0 deletions
diff --git a/tests/mkfs-tests/001-basic-profiles/test.sh b/tests/mkfs-tests/001-basic-profiles/test.sh new file mode 100755 index 00000000..2747d429 --- /dev/null +++ b/tests/mkfs-tests/001-basic-profiles/test.sh @@ -0,0 +1,91 @@ +#!/bin/bash +# test various blockgroup profile combinations, use loop devices as block +# devices + +source $TOP/tests/common + +check_prereq btrfs-show-super +check_prereq mkfs.btrfs +check_prereq btrfs + +ndevs=4 +declare -a devs +dev1= + +setup_root_helper + +prepare_devices() +{ + for i in `seq $ndevs`; do + touch img$i + chmod a+rw img$i + truncate -s0 img$i + truncate -s2g img$i + devs[$i]=`run_check_stdout $SUDO_HELPER losetup --find --show img$i` + done +} + +cleanup_devices() +{ + for dev in ${devs[@]}; do + run_check $SUDO_HELPER losetup -d $dev + done + for i in `seq $ndevs`; do + truncate -s0 img$i + done + run_check $SUDO_HELPER losetup --list +} + +test_get_info() +{ + run_check $TOP/btrfs-show-super $dev1 + run_check $SUDO_HELPER $TOP/btrfs check $dev1 + run_check $SUDO_HELPER mount $dev1 $TEST_MNT + run_check $TOP/btrfs filesystem df $TEST_MNT + run_check $SUDO_HELPER $TOP/btrfs filesystem usage $TEST_MNT + run_check $SUDO_HELPER $TOP/btrfs device usage $TEST_MNT + run_check $SUDO_HELPER umount "$TEST_MNT" +} +test_do_mkfs() +{ + run_check $SUDO_HELPER $TOP/mkfs.btrfs -f \ + $@ +} + +test_mkfs_single() +{ + test_do_mkfs $@ $dev1 + test_get_info +} +test_mkfs_multi() +{ + test_do_mkfs $@ ${devs[@]} + test_get_info +} + +prepare_devices +dev1=${devs[1]} + +test_mkfs_single +test_mkfs_single -d single -m single +test_mkfs_single -d single -m single --mixed +test_mkfs_single -d single -m dup +test_mkfs_single -d dup -m single +test_mkfs_single -d dup -m dup +test_mkfs_single -d dup -m dup --mixed + +test_mkfs_multi +test_mkfs_multi -d single -m single +test_mkfs_multi -d single -m single --mixed +test_mkfs_multi -d raid0 -m raid0 +test_mkfs_multi -d raid0 -m raid0 --mixed +test_mkfs_multi -d raid1 -m raid1 +test_mkfs_multi -d raid1 -m raid1 --mixed +test_mkfs_multi -d raid10 -m raid10 +test_mkfs_multi -d raid10 -m raid10 --mixed +test_mkfs_multi -d raid5 -m raid5 +test_mkfs_multi -d raid5 -m raid5 --mixed +test_mkfs_multi -d raid6 -m raid6 +test_mkfs_multi -d raid6 -m raid6 --mixed + +cleanup_devices diff --git a/tests/mkfs-tests/002-no-force-mixed-on-small-volume/test.sh b/tests/mkfs-tests/002-no-force-mixed-on-small-volume/test.sh new file mode 100755 index 00000000..855fbd18 --- /dev/null +++ b/tests/mkfs-tests/002-no-force-mixed-on-small-volume/test.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# +# Verify that we do not force mixed block groups on small volumes anymore + +source $TOP/tests/common + +check_prereq mkfs.btrfs + +setup_root_helper + +run_check truncate -s 512M $IMAGE +mixed=$(run_check_stdout $TOP/mkfs.btrfs -n 64k -f $IMAGE | egrep 'Data|Metadata') +echo "$mixed" | grep -q -v 'Data+Metadata:' || _fail "unexpected: created a mixed-bg filesystem" diff --git a/tests/mkfs-tests/003-mixed-with-wrong-nodesize/test.sh b/tests/mkfs-tests/003-mixed-with-wrong-nodesize/test.sh new file mode 100755 index 00000000..289d5ff0 --- /dev/null +++ b/tests/mkfs-tests/003-mixed-with-wrong-nodesize/test.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# +# Mixed mode needs equal sectorsize and nodesize + +source $TOP/tests/common + +check_prereq mkfs.btrfs + +run_check truncate -s 512M $IMAGE +run_mayfail $TOP/mkfs.btrfs -f -M -s 4096 -n 16384 "$IMAGE" && _fail + +exit 0 diff --git a/tests/mkfs-tests/004-rootdir-keeps-size/test.sh b/tests/mkfs-tests/004-rootdir-keeps-size/test.sh new file mode 100755 index 00000000..7038c8ea --- /dev/null +++ b/tests/mkfs-tests/004-rootdir-keeps-size/test.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# make sure that mkfs.btrfs --rootsize does not change size of the image + +source $TOP/tests/common + +check_prereq mkfs.btrfs + +prepare_test_dev + +test_mkfs_with_size() { + local size + local imgsize + local tmp + + size="$1" + run_check truncate -s$size $TEST_DEV + imgsize=$(run_check_stdout stat --format=%s $TEST_DEV) + run_check $SUDO_HELPER $TOP/mkfs.btrfs -f \ + --rootdir $TOP/Documentation \ + $TEST_DEV + tmp=$(run_check_stdout stat --format=%s $TEST_DEV) + if ! [ "$imgsize" = "$tmp" ]; then + _fail "image size changed from $imgsize to $tmp" + fi +} + +test_mkfs_with_size 128M +test_mkfs_with_size 256M +test_mkfs_with_size 512M +test_mkfs_with_size 1G +test_mkfs_with_size 2G diff --git a/tests/mkfs-tests/005-long-device-name-for-ssd/test.sh b/tests/mkfs-tests/005-long-device-name-for-ssd/test.sh new file mode 100755 index 00000000..c89ee0e1 --- /dev/null +++ b/tests/mkfs-tests/005-long-device-name-for-ssd/test.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# a long device name must pass the SSD test + +source $TOP/tests/common + +check_prereq mkfs.btrfs +check_prereq btrfs-show-super + +setup_root_helper +prepare_test_dev + +# prep device +dmname=\ +btrfs-test-with-very-long-name-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +dmdev=/dev/mapper/$dmname + +run_check truncate -s0 img +chmod a+w img +run_check truncate -s2g img + +loopdev=`run_check_stdout $SUDO_HELPER losetup --find --show img` +run_check $SUDO_HELPER dmsetup create $dmname --table "0 1048576 linear $loopdev 0" + +base=`basename "$loopdev"` +rot=/sys/class/block/$base/queue/rotational + +# switch rotational +run_check cat $rot +echo 0 | run_check $SUDO_HELPER tee $rot +run_check cat $rot + +# test +run_check_stdout $SUDO_HELPER $TOP/mkfs.btrfs -f $@ $dmdev | + grep -q 'SSD detected:.*yes' || _fail 'SSD not detected' +run_check $TOP/btrfs-show-super $dmdev + +# cleanup +run_check $SUDO_HELPER dmsetup remove $dmname +run_mayfail $SUDO_HELPER losetup -d $loopdev +run_check truncate -s0 img diff --git a/tests/mkfs-tests/006-partitioned-loopdev/partition-1g-1g b/tests/mkfs-tests/006-partitioned-loopdev/partition-1g-1g Binary files differnew file mode 100644 index 00000000..eb057769 --- /dev/null +++ b/tests/mkfs-tests/006-partitioned-loopdev/partition-1g-1g diff --git a/tests/mkfs-tests/006-partitioned-loopdev/test.sh b/tests/mkfs-tests/006-partitioned-loopdev/test.sh new file mode 100755 index 00000000..7c9fb829 --- /dev/null +++ b/tests/mkfs-tests/006-partitioned-loopdev/test.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# recognize partitioned loop devices + +source $TOP/tests/common + +check_prereq mkfs.btrfs +check_prereq btrfs-show-super + +setup_root_helper + +run_check truncate -s0 img +chmod a+w img +cp partition-1g-1g img +run_check truncate -s2g img + +loopdev=$(run_check_stdout $SUDO_HELPER losetup --partscan --find --show img) +base=$(basename $loopdev) + +# expect partitions named like loop0p1 etc +for looppart in $(ls /dev/$base?*); do + run_check $SUDO_HELPER $TOP/mkfs.btrfs -f $looppart + run_check $TOP/btrfs-show-super $looppart +done + +# cleanup +run_check $SUDO_HELPER losetup -d $loopdev +run_check truncate -s0 img diff --git a/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh b/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh new file mode 100755 index 00000000..d5374cbd --- /dev/null +++ b/tests/mkfs-tests/007-mix-nodesize-sectorsize/test.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# iterate over nodesize and sectorsize combinations + +source $TOP/tests/common + +check_prereq btrfs-show-super +check_prereq mkfs.btrfs +check_prereq btrfs + +setup_root_helper +prepare_test_dev + +test_mkfs_single() +{ + run_check $SUDO_HELPER $TOP/mkfs.btrfs -f "$@" $TEST_DEV + run_check $TOP/btrfs-show-super $TEST_DEV + run_check $SUDO_HELPER $TOP/btrfs check $TEST_DEV +} + +# default +test_mkfs_single + +# nodesize >= sectorsize +for nodesize in 4096 8192 16384 32768 65536; do + for sectorsize in 4096 8192 16384 32768 65536; do + [ $nodesize -lt $sectorsize ] && continue + test_mkfs_single -n $nodesize -s $sectorsize -d single -m single + test_mkfs_single -n $nodesize -s $sectorsize -d single -m dup + done +done + +# nodesize, mixed mode +for nodesize in 4k 8k 16k 32k 64k; do + test_mkfs_single -n $nodesize -s $nodesize -d single -m single --mixed + test_mkfs_single -n $nodesize -s $nodesize -d dup -m dup --mixed +done diff --git a/tests/mkfs-tests/008-secorsize-nodesize-combination/test.sh b/tests/mkfs-tests/008-secorsize-nodesize-combination/test.sh new file mode 100755 index 00000000..79cc2b22 --- /dev/null +++ b/tests/mkfs-tests/008-secorsize-nodesize-combination/test.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# test various sectorsize and node size combinations +# including valid and invalid ones +# only do mkfs and fsck check, no mounting as +# sub/multi-pagesize is not supported yet + +source $TOP/tests/common + +check_prereq mkfs.btrfs +check_prereq btrfs + +prepare_test_dev + +# disable mixed bg to avoid sectorsize == nodesize check +features="^mixed-bg" + +# caller need to check whether the combination is valid +do_test() +{ + sectorsize=$1 + nodesize=$2 + run_mayfail $TOP/mkfs.btrfs -O $features -n $nodesize -s $sectorsize \ + $TEST_DEV + ret=$? + if [ $ret == 0 ]; then + run_check $TOP/btrfs check $TEST_DEV + fi + return $ret +} + +# Invalid: Unaligned sectorsize and nodesize +do_test 8191 8191 && _fail + +# Invalid: Aligned sectorsize with unaligned nodesize +do_test 4k 16385 && _fail + +# Invalid: Ungliend sectorsize with aligned nodesize +do_test 8191 16k && _fail + +# Valid: Aligned sectorsize and nodesize +do_test 4k 16k || _fail + +# Invalid: Sectorsize larger than nodesize +do_test 8k 4k && _fail + +# Invalid: too large nodesize +do_test 16k 128k && _fail + +# Valid: large sectorsize +do_test 64k 64k || _fail |