# The 3MB guess is semi-arbitrary, but we've been informed that
# Lustre, for example, uses 1MB, so guess higher than that, at least.
-block_size=$(bup-python -c \
- "import os; print getattr(os.stat('.'), 'st_blksize', 0) or $mb * 3") \
+block_size=$(bup-cfg-py -c \
+ "import os; print(getattr(os.stat('.'), 'st_blksize', 0)) or $mb * 3") \
|| exit $?
data_size=$((block_size * 10))
readonly block_size data_size
WVSTART "sparse file restore (all sparse)"
WVPASS bup restore -C restore "src/latest/$(pwd)/"
-restore_size=$(WVPASS du -k -s restore | WVPASS cut -f1) || exit $?
+restore_size=$(WVPASS du -k -s restore/src/foo | WVPASS cut -f1) || exit $?
WVPASS [ "$restore_size" -ge "$((data_size / 1024))" ]
WVPASS "$top/t/compare-trees" -c src/ restore/src/
WVSTART "sparse file restore --no-sparse (all sparse)"
WVPASS rm -r restore
WVPASS bup restore --no-sparse -C restore "src/latest/$(pwd)/"
-restore_size=$(WVPASS du -k -s restore | WVPASS cut -f1) || exit $?
+restore_size=$(WVPASS du -k -s restore/src/foo | WVPASS cut -f1) || exit $?
WVPASS [ "$restore_size" -ge "$((data_size / 1024))" ]
WVPASS "$top/t/compare-trees" -c src/ restore/src/
WVSTART "sparse file restore --sparse (all sparse)"
WVPASS rm -r restore
WVPASS bup restore --sparse -C restore "src/latest/$(pwd)/"
-restore_size=$(WVPASS du -k -s restore | WVPASS cut -f1) || exit $?
+restore_size=$(WVPASS du -k -s restore/src/foo | WVPASS cut -f1) || exit $?
WVPASS [ "$restore_size" -le "$((3 * (block_size / 1024)))" ]
WVPASS "$top/t/compare-trees" -c src/ restore/src/
WVPASS bup save -n src src
WVPASS rm -r restore
WVPASS bup restore --sparse -C restore "src/latest/$(pwd)/"
-restore_size=$(WVPASS du -k -s restore | WVPASS cut -f1) || exit $?
+restore_size=$(WVPASS du -k -s restore/src/foo | WVPASS cut -f1) || exit $?
WVPASS [ "$restore_size" -le "$((3 * (block_size / 1024)))" ]
WVPASS "$top/t/compare-trees" -c src/ restore/src/
WVPASS bup save -n src src
WVPASS rm -r restore
WVPASS bup restore --sparse -C restore "src/latest/$(pwd)/"
-restore_size=$(WVPASS du -k -s restore | WVPASS cut -f1) || exit $?
+restore_size=$(WVPASS du -k -s restore/src/foo | WVPASS cut -f1) || exit $?
WVPASS [ "$restore_size" -le "$((5 * (block_size / 1024)))" ]
WVPASS "$top/t/compare-trees" -c src/ restore/src/
WVPASS bup save -n src src
WVPASS rm -r restore
WVPASS bup restore --sparse -C restore "src/latest/$(pwd)/"
-restore_size=$(WVPASS du -k -s restore | WVPASS cut -f1) || exit $?
+restore_size=$(WVPASS du -k -s restore/src/foo | WVPASS cut -f1) || exit $?
WVPASS [ "$restore_size" -le "$((5 * (block_size / 1024)))" ]
WVPASS "$top/t/compare-trees" -c src/ restore/src/
WVPASS bup save -n src src
WVPASS rm -r restore
WVPASS bup restore --sparse -C restore "src/latest/$(pwd)/"
-restore_size=$(WVPASS du -k -s restore | WVPASS cut -f1) || exit $?
+restore_size=$(WVPASS du -k -s restore/src/foo | WVPASS cut -f1) || exit $?
WVPASS [ "$restore_size" -le "$((5 * (block_size / 1024)))" ]
WVPASS "$top/t/compare-trees" -c src/ restore/src/
WVPASS bup restore --sparse -C restore "src/latest/$(pwd)/"
WVPASS "$top/t/compare-trees" -c src/ restore/src/
+WVSTART "sparse file restore --sparse (short zero runs around boundary)"
+WVPASS bup-cfg-py > src/foo <<EOF
+from sys import stdout
+stdout.write("x" * 65535 + "\0")
+stdout.write("\0" + "x" * 65535)
+stdout.write("\0" + "x" * 65534 + "\0")
+stdout.write("x" * 65536)
+stdout.write("\0")
+EOF
+WVPASS bup index src
+WVPASS bup save -n src src
+WVPASS rm -r restore
+WVPASS bup restore --sparse -C restore "src/latest/$(pwd)/"
+WVPASS "$top/t/compare-trees" -c src/ restore/src/
+
WVPASS rm -rf "$tmpdir"