X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tests%2Fconvert-tests.sh;h=4bc915db9b3d651eac8aef38ce93f23683b892fc;hb=31ceca8ddd0039550821227a7990f13622c725a7;hp=b26c06985e340d90eb12c9bd2d4a10d8f58bd068;hpb=05d4159946cf1f54e18729b708d2fd6c3a1225c4;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/tests/convert-tests.sh b/tests/convert-tests.sh index b26c069..4bc915d 100755 --- a/tests/convert-tests.sh +++ b/tests/convert-tests.sh @@ -2,74 +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 $(readlink -f $0)) -TOP=$(readlink -f $SCRIPT_DIR/../) -RESULTS="$TOP/tests/convert-tests-results.txt" -IMAGE="$TOP/tests/test.img" +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 $TOP/tests/common +source "$TEST_TOP/common" +source "$TEST_TOP/common.convert" -rm -f $RESULTS +export INTERNAL_BIN +export TEST_TOP +export TOP +export RESULTS +export LANG +export IMAGE +export TEST_DEV -setup_root_helper +rm -f "$RESULTS" -convert_test() { - local features - local nodesize +check_kernel_support +check_kernel_support_reiserfs +# anything expected by common.convert +check_global_prereq getfacl +check_global_prereq setfacl +check_global_prereq md5sum - features="$1" - shift +run_one_test() { + local testdir + local testname - if [ -z "$features" ]; then - echo " [TEST/conv] $1, btrfs defaults" + 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 - echo " [TEST/conv] $1, btrfs $features" + _fail "custom test script not found" fi - nodesize=$2 - shift 2 - echo "creating ext image with: $*" >> $RESULTS - # IMAGE 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 $IMAGE - # 256MB is the smallest acceptable btrfs 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 -o loop $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 ${features:+-O "$features"} -N "$nodesize" $IMAGE - run_check $TOP/btrfs check $IMAGE - run_check $TOP/btrfs-show-super $IMAGE } -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 +# 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