summaryrefslogtreecommitdiff
path: root/tests/convert-tests.sh
diff options
context:
space:
mode:
authorNicholas D Steeves <nsteeves@gmail.com>2016-04-23 00:41:30 +0100
committerNicholas D Steeves <nsteeves@gmail.com>2016-04-23 00:41:30 +0100
commitcec572daccafa1e912cbed363df6f84687778c6f (patch)
tree7d99ab9f73d25c1ed8eaf6393f6374edf5316b03 /tests/convert-tests.sh
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/convert-tests.sh')
-rw-r--r--tests/convert-tests.sh86
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/convert-tests.sh b/tests/convert-tests.sh
new file mode 100644
index 00000000..0bfb41f8
--- /dev/null
+++ b/tests/convert-tests.sh
@@ -0,0 +1,86 @@
+#!/bin/bash
+#
+# convert ext2/3/4 images to btrfs images, and make sure the results are
+# clean.
+#
+
+unset TOP
+unset LANG
+LANG=C
+SCRIPT_DIR=$(dirname $(readlink -f $0))
+TOP=$(readlink -f $SCRIPT_DIR/../)
+RESULTS="$TOP/tests/convert-tests-results.txt"
+
+source $TOP/tests/common
+
+rm -f $RESULTS
+
+setup_root_helper
+prepare_test_dev 256M
+
+CHECKSUMTMP=$(mktemp --tmpdir btrfs-progs-convert.XXXXXXXXXX)
+
+convert_test() {
+ local features
+ local nodesize
+
+ features="$1"
+ shift
+
+ if [ -z "$features" ]; then
+ echo " [TEST/conv] $1, btrfs defaults"
+ else
+ echo " [TEST/conv] $1, btrfs $features"
+ fi
+ nodesize=$2
+ shift 2
+ echo "creating ext image with: $*" >> $RESULTS
+ # TEST_DEV not removed as the file might have special permissions, eg.
+ # when test image is on NFS and would not be writable for root
+ run_check truncate -s 0 $TEST_DEV
+ # 256MB is the smallest acceptable btrfs image.
+ run_check truncate -s 256M $TEST_DEV
+ run_check $* -F $TEST_DEV
+
+ # create a file to check btrfs-convert can convert regular file
+ # correct
+ run_check_mount_test_dev
+ run_check $SUDO_HELPER dd if=/dev/zero of=$TEST_MNT/test bs=$nodesize \
+ count=1 1>/dev/null 2>&1
+ run_check_stdout md5sum $TEST_MNT/test > $CHECKSUMTMP
+ run_check_umount_test_dev
+
+ run_check $TOP/btrfs-convert ${features:+-O "$features"} -N "$nodesize" $TEST_DEV
+ run_check $TOP/btrfs check $TEST_DEV
+ run_check $TOP/btrfs-show-super $TEST_DEV
+
+ run_check_mount_test_dev
+ run_check_stdout md5sum -c $CHECKSUMTMP |
+ grep -q 'OK' || _fail "file validation failed."
+ run_check_umount_test_dev
+}
+
+if ! [ -z "$TEST" ]; then
+ echo " [TEST/conv] skipped all convert tests, TEST=$TEST"
+ exit 0
+fi
+
+for feature in '' 'extref' 'skinny-metadata' 'no-holes'; do
+ convert_test "$feature" "ext2 4k nodesize" 4096 mke2fs -b 4096
+ convert_test "$feature" "ext3 4k nodesize" 4096 mke2fs -j -b 4096
+ convert_test "$feature" "ext4 4k nodesize" 4096 mke2fs -t ext4 -b 4096
+ convert_test "$feature" "ext2 8k nodesize" 8192 mke2fs -b 4096
+ convert_test "$feature" "ext3 8k nodesize" 8192 mke2fs -j -b 4096
+ convert_test "$feature" "ext4 8k nodesize" 8192 mke2fs -t ext4 -b 4096
+ convert_test "$feature" "ext2 16k nodesize" 16384 mke2fs -b 4096
+ convert_test "$feature" "ext3 16k nodesize" 16384 mke2fs -j -b 4096
+ convert_test "$feature" "ext4 16k nodesize" 16384 mke2fs -t ext4 -b 4096
+ convert_test "$feature" "ext2 32k nodesize" 32768 mke2fs -b 4096
+ convert_test "$feature" "ext3 32k nodesize" 32768 mke2fs -j -b 4096
+ convert_test "$feature" "ext4 32k nodesize" 32768 mke2fs -t ext4 -b 4096
+ convert_test "$feature" "ext2 64k nodesize" 65536 mke2fs -b 4096
+ convert_test "$feature" "ext3 64k nodesize" 65536 mke2fs -j -b 4096
+ convert_test "$feature" "ext4 64k nodesize" 65536 mke2fs -t ext4 -b 4096
+done
+
+rm $CHECKSUMTMP