btrfs-progs: Add some simple end-to-end tests for btrfs-convert

These use the system's mke2fs, and don't require loop devices
or root privileges.

They don't pick up anything with the default flags right now,
but they do pick up some sanitizer issues when the tools are
compiled with any of -fsanitize={address,memory,thread}.

Signed-off-by: Adam Buchbinder <abuchbinder@google.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
This commit is contained in:
Adam Buchbinder 2014-05-21 10:20:27 -07:00 committed by David Sterba
parent 700c3ca9b1
commit 2100836188
2 changed files with 36 additions and 1 deletions

View File

@ -21,7 +21,7 @@ libbtrfs_objects = send-stream.o send-utils.o rbtree.o btrfs-list.o crc32c.o \
libbtrfs_headers = send-stream.h send-utils.h send.h rbtree.h btrfs-list.h \ libbtrfs_headers = send-stream.h send-utils.h send.h rbtree.h btrfs-list.h \
crc32c.h list.h kerncompat.h radix-tree.h extent-cache.h \ crc32c.h list.h kerncompat.h radix-tree.h extent-cache.h \
extent_io.h ioctl.h ctree.h btrfsck.h extent_io.h ioctl.h ctree.h btrfsck.h
TESTS = fsck-tests.sh TESTS = fsck-tests.sh convert-tests.sh
INSTALL = install INSTALL = install
prefix ?= /usr/local prefix ?= /usr/local

35
tests/convert-tests.sh Normal file
View File

@ -0,0 +1,35 @@
#!/bin/bash
#
# convert ext2/3/4 images to btrfs images, and make sure the results are
# clean.
#
here=`pwd`
_fail()
{
echo "$*" | tee -a convert-tests-results.txt
exit 1
}
rm -f convert-tests-results.txt
rm -f test.img
test(){
echo " [TEST] $1"
shift
echo "creating ext image with: $*" >> convert-tests-results.txt
# 256MB is the smallest acceptable btrfs image.
dd if=/dev/zero of=$here/test.img bs=1024 count=$((256*1024)) \
>> convert-tests-results.txt 2>&1 || _fail "dd failed"
$* -F $here/test.img >> convert-tests-results.txt 2>&1 \
|| _fail "filesystem create failed"
$here/btrfs-convert $here/test.img >> convert-tests-results.txt 2>&1 \
|| _fail "btrfs-convert failed"
$here/btrfsck $here/test.img >> convert-tests-results.txt 2>&1 \
|| _fail "btrfsck detected errors"
}
test "ext2, 4k blocksize" mke2fs -b 4096
test "ext3, 4k blocksize" mke2fs -j -b 4096
test "ext4, 4k blocksize" mke2fs -t ext4 -b 4096