btrfs-progs: tests: add testing image for zstd for btrfs-restore
Adds tests for the new features based on a prebuilt btrfs image with a zstd compressed file. Split from the previous patch. Signed-off-by: Nick Terrell <terrelln@fb.com> [ with some cleanups ] Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
717a8b1e5d
commit
0766330f85
|
@ -59,6 +59,15 @@ before_install:
|
|||
sudo make install;
|
||||
cd ../..
|
||||
"
|
||||
- "mkdir tmp-zstd;
|
||||
cd tmp-zstd;
|
||||
wget https://github.com/facebook/zstd/archive/v1.3.1.tar.gz;
|
||||
tar xf v1.3.1.tar.gz;
|
||||
cd zstd-1.3.1;
|
||||
make;
|
||||
sudo make install PREFIX=/usr;
|
||||
cd ../..
|
||||
"
|
||||
- "./autogen.sh && ./configure --disable-documentation && make"
|
||||
|
||||
addons:
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,56 @@
|
|||
#!/bin/bash
|
||||
# Test zstd compression support on a prebuilt btrfs image
|
||||
|
||||
source "$TOP/tests/common"
|
||||
|
||||
check_prereq btrfs
|
||||
check_global_prereq md5sum
|
||||
|
||||
# Extract the test image
|
||||
image=$(extract_image compress.raw.xz)
|
||||
|
||||
check_dump_tree() {
|
||||
local image=$1
|
||||
local string=$2
|
||||
|
||||
run_check_stdout "$TOP/btrfs" inspect-internal dump-tree "$image" \
|
||||
| grep -q "$string" \
|
||||
|| _fail "btrfs inspect-internal dump-tree didn't print $string"
|
||||
}
|
||||
|
||||
# Check that there are blocks of each compression type
|
||||
check_dump_tree "$image" "extent compression 1 (zlib)"
|
||||
check_dump_tree "$image" "extent compression 2 (lzo)"
|
||||
check_dump_tree "$image" "extent compression 3 (zstd)"
|
||||
|
||||
# Check that the filesystem has incompat COMPRESS_ZSTD
|
||||
run_check_stdout "$TOP/btrfs" inspect-internal dump-super -f "$image" \
|
||||
| grep -q COMPRESS_ZSTD \
|
||||
|| _fail "btrfs inspect-internal dump-super no incompat COMPRESS_ZSTD"
|
||||
|
||||
# Create a temporary directory and restore the filesystem
|
||||
restore_tmp=$(mktemp --tmpdir -d btrfs-progs-022-zstd-compression.XXXXXXXXXX)
|
||||
run_check "$TOP/btrfs" restore "$image" "$restore_tmp"
|
||||
|
||||
# Expect 3 files
|
||||
num_files=$(ls -1 "$restore_tmp" | wc -l)
|
||||
[ "$num_files" == 3 ] || _fail "number of files does not match"
|
||||
|
||||
check_md5() {
|
||||
local file="$1"
|
||||
local expect_md5="$2"
|
||||
|
||||
md5=$(run_check_stdout md5sum "$file" | cut -d ' ' -f 1)
|
||||
[ "$md5" == "$expect_md5" ] \
|
||||
|| _fail "$file digest $md5 does not match $expect_md5"
|
||||
}
|
||||
|
||||
# Each should be 200K of zeros
|
||||
expect_md5=$(dd if=/dev/zero bs=1K count=200 status=none | md5sum | cut -d ' ' -f 1)
|
||||
check_md5 "$restore_tmp/zlib" "$expect_md5"
|
||||
check_md5 "$restore_tmp/lzo" "$expect_md5"
|
||||
check_md5 "$restore_tmp/zstd" "$expect_md5"
|
||||
|
||||
# Clean up
|
||||
rm -r -- "$restore_tmp"
|
||||
rm -- "$image"
|
Loading…
Reference in New Issue