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