On Fri, Sep 06, 2013 at 02:50:56PM -0400, Josef Bacik wrote:
> We need to start adding some sanity tests to btrfs-progs to make sure we 
> aren't
> breaking things with our patches.  The most important of these tools is 
> btrfsck.
> This patch gets things started by adding a basic btrfsck test that makes sure 
> we
> can fix a corruption problem we know we can fix.  Thanks,

That's great. I hope we're going to gather more tests so let's separate
them to more categories from the beginning (mkfs, options coverage,
corrupt-block, restore maybe, dunno what else).

This makes it possible to do a quick run a subset of the tests (eg. mkfs
related) after a fix is committed.

>  tests/bad-file-extent-bytenr.img |  Bin 0 -> 4096 bytes
>  tests/fsck-tests.sh              |   34 ++++++++++++++++++++++++++++++++++

I suggest to put them into a subdirectory (eg.) 'fsck' and prefix the
images with numbers (just a sequence number).

> --- /dev/null
> +++ b/tests/fsck-tests.sh
> @@ -0,0 +1,34 @@
> +#!/bin/bash
> +#
> +# loop through all of our bad images and make sure fsck repairs them properly
> +#
> +# It's GPL, same as everything else in this tree.
> +#
> +
> +TEST_DEV=""

I found the current test hard to use, eg. I can't just do 'make test'
from the toplevel dir. The script fsck-tests.sh expects TEST_DEV to be
set, but there's no way to do that, because it's set unconditionally to
empty string.

> +here=`pwd`
> +
> +_fail()
> +{
> +     echo "$*" | tee -a fsck-tests-results.txt
> +     exit 1
> +}
> +
> +[ -z $TEST_DEV ] && echo "Cannot run without a test device set" && exit 0
> +
> +rm -f fsck-tests-results.txt
> +
> +for i in $(find tests -name '*.img')
> +do
> +     echo "testing image $i" >> fsck-tests-results.txt
> +     $here/btrfs-image -r $i $TEST_DEV >> fsck-tests-results.txt 2>&1 \
> +             || _fail "restore failed"
> +     $here/btrfsck $TEST_DEV >> fsck-test-results.txt 2>&1
> +     [ $? -eq 0 ] && _fail "btrfsck should have detected corruption"
> +
> +     $here/btrfsck --repair $TEST_DEV >> fsck-test-results.txt 2>&1 || \
> +             _fail "btrfsck should have repaired the image"
> +
> +     $here/btrfsck $TEST_DEV >> fsck-test-results.txt 2>&1 || \
> +             _fail "btrfsck did not correct corruption"
> +done
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to