X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tests%2Fconvert-tests.sh;h=4bc915db9b3d651eac8aef38ce93f23683b892fc;hb=905b3d18ae118931839b0a1ece17870073b51484;hp=42cbeb608e0f47b99a80e48ec498e73b5d690666;hpb=45678c3048a1d74b99303763cea0729fe5df798b;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/tests/convert-tests.sh b/tests/convert-tests.sh old mode 100644 new mode 100755 index 42cbeb6..4bc915d --- a/tests/convert-tests.sh +++ b/tests/convert-tests.sh @@ -2,56 +2,82 @@ # # convert ext2/3/4 images to btrfs images, and make sure the results are # clean. -# -unset TOP -unset LANG LANG=C -SCRIPT_DIR=$(dirname $(realpath $0)) -TOP=$(realpath $SCRIPT_DIR/../) -TEST_MNT=${TEST_MNT:-$TOP/tests/mnt} -RESULTS="$TOP/tests/convert-tests-results.txt" -IMAGE="$TOP/tests/test.img" - -source $TOP/tests/common - -rm -f $RESULTS - -setup_root_helper - -convert_test() { - echo " [TEST] $1" - nodesize=$2 - shift 2 - echo "creating ext image with: $*" >> $RESULTS - # 256MB is the smallest acceptable btrfs image. - run_check rm -f $IMAGE - run_check truncate -s 256M $IMAGE - run_check $* -F $IMAGE - - # create a file to check btrfs-convert can convert regular file - # correct - run_check $SUDO_HELPER mount $IMAGE $TEST_MNT - run_check $SUDO_HELPER dd if=/dev/zero of=$TEST_MNT/test bs=$nodesize \ - count=1 1>/dev/null 2>&1 - run_check $SUDO_HELPER umount $TEST_MNT - run_check $TOP/btrfs-convert -N "$nodesize" $IMAGE - run_check $TOP/btrfs check $IMAGE +SCRIPT_DIR=$(dirname $(readlink -f "$0")) +if [ -z "$TOP" ]; then + TOP=$(readlink -f "$SCRIPT_DIR/../") + if [ -f "$TOP/configure.ac" ]; then + # inside git + TEST_TOP="$TOP/tests/" + INTERNAL_BIN="$TOP" + else + # external, defaults to system binaries + TOP=$(dirname `which btrfs`) + TEST_TOP="$SCRIPT_DIR" + INTERNAL_BIN="$TEST_TOP" + fi +else + # assume external, TOP set from commandline + TEST_TOP="$SCRIPT_DIR" + INTERNAL_BIN="$TEST_TOP" +fi +if ! [ -x "$TOP/btrfs" ]; then + echo "ERROR: cannot execute btrfs from TOP=$TOP" + exit 1 +fi +TEST_DEV=${TEST_DEV:-} +RESULTS="$TEST_TOP/convert-tests-results.txt" +IMAGE="$TEST_TOP/test.img" + +source "$TEST_TOP/common" +source "$TEST_TOP/common.convert" + +export INTERNAL_BIN +export TEST_TOP +export TOP +export RESULTS +export LANG +export IMAGE +export TEST_DEV + +rm -f "$RESULTS" + +check_kernel_support +check_kernel_support_reiserfs +# anything expected by common.convert +check_global_prereq getfacl +check_global_prereq setfacl +check_global_prereq md5sum + +run_one_test() { + local testdir + local testname + + testdir="$1" + testname=$(basename "$testdir") + echo " [TEST/conv] $testname" + cd "$testdir" + echo "=== Entering $testname" >> "$RESULTS" + if [ -x test.sh ]; then + # Only support custom test scripts + ./test.sh + if [ $? -ne 0 ]; then + if [[ $TEST_LOG =~ dump ]]; then + # the logs can be large and may exceed the + # limits, use 4MB for now + tail -c 3900000 "$RESULTS" + fi + _fail "test failed for case $testname" + fi + else + _fail "custom test script not found" + fi } -# btrfs-convert requires 4k blocksize. -convert_test "ext2 4k nodesize" 4096 mke2fs -b 4096 -convert_test "ext3 4k nodesize" 4096 mke2fs -j -b 4096 -convert_test "ext4 4k nodesize" 4096 mke2fs -t ext4 -b 4096 -convert_test "ext2 8k nodesize" 8192 mke2fs -b 4096 -convert_test "ext3 8k nodesize" 8192 mke2fs -j -b 4096 -convert_test "ext4 8k nodesize" 8192 mke2fs -t ext4 -b 4096 -convert_test "ext2 16k nodesize" 16384 mke2fs -b 4096 -convert_test "ext3 16k nodesize" 16384 mke2fs -j -b 4096 -convert_test "ext4 16k nodesize" 16384 mke2fs -t ext4 -b 4096 -convert_test "ext2 32k nodesize" 32768 mke2fs -b 4096 -convert_test "ext3 32k nodesize" 32768 mke2fs -j -b 4096 -convert_test "ext4 32k nodesize" 32768 mke2fs -t ext4 -b 4096 -convert_test "ext2 64k nodesize" 65536 mke2fs -b 4096 -convert_test "ext3 64k nodesize" 65536 mke2fs -j -b 4096 -convert_test "ext4 64k nodesize" 65536 mke2fs -t ext4 -b 4096 +# Test special images +for i in $(find "$TEST_TOP/convert-tests" -maxdepth 1 -mindepth 1 -type d \ + ${TEST:+-name "$TEST"} | sort) +do + run_one_test "$i" +done