mirror of
https://github.com/kdave/btrfs-progs
synced 2025-05-19 03:55:40 +00:00
Change the old btrfsck test infrastructure (btrfs-image dump or xz raw dump) to the new test infrastructure. 1) Test case layout The new infrastructure is dir based, each dir is one test type, and can contain multiple images/scripts for different corner cases. So layout will be the following: btrfs-progs |-tests |-fsck-tests |-001-SOME-CORRUPT-TYPE |-IMAGE-FOR-CASE1 |-IMAGE-FOR-CASE2 2) Test case image types Only 2 types for test case images. a) btrfs-image dump This one is the simplest case, one only needs to add the image to corresponding dir. b) custom script This one is for all the resting cases which can't fit btrfs-image, like csum error or script can generate the image (this reduces the size obviously and good for review) The old binary dump also belongs to this type, so need to add script to extract them. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.cz>
50 lines
817 B
Bash
50 lines
817 B
Bash
#!/bin/bash
|
|
#
|
|
# Common routines for all tests
|
|
#
|
|
|
|
_fail()
|
|
{
|
|
echo "$*" | tee -a $RESULT
|
|
exit 1
|
|
}
|
|
|
|
run_check()
|
|
{
|
|
echo "############### $@" >> $RESULT 2>&1
|
|
"$@" >> $RESULT 2>&1 || _fail "failed: $@"
|
|
}
|
|
|
|
check_prereq()
|
|
{
|
|
if ! [ -f $top/$1 ]; then
|
|
_fail "Failed prerequisities: $1";
|
|
fi
|
|
}
|
|
|
|
check_image()
|
|
{
|
|
image=$1
|
|
echo "testing image $(basename $image)" >> $RESULT
|
|
$top/btrfs check $image >> $RESULT 2>&1
|
|
[ $? -eq 0 ] && _fail "btrfs check should have detected corruption"
|
|
|
|
run_check $top/btrfs check --repair $image
|
|
run_check $top/btrfs check $image
|
|
}
|
|
|
|
check_all_images()
|
|
{
|
|
dir=$1
|
|
for i in $(find $dir -iname '*.img')
|
|
do
|
|
echo "extracting image $(basename $i)" >> $RESULT
|
|
$top/btrfs-image -r $i $i.restored || \
|
|
_fail "failed to extract image $i"
|
|
|
|
check_image $i.restored
|
|
|
|
rm $i.restored
|
|
done
|
|
}
|