btrfs-progs: tests: add checking of send multiple clone source option
authorTsutomu Itoh <t-itoh@jp.fujitsu.com>
Wed, 9 Nov 2016 04:44:15 +0000 (13:44 +0900)
committerDavid Sterba <dsterba@suse.com>
Fri, 11 Nov 2016 15:23:30 +0000 (16:23 +0100)
Sending stream size of clone-src(-c) option is checked.
Fixed by "btrfs-progs: send: fix handling of -c option".

Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
tests/misc-tests/016-send-clone-src/multi-clone-src-v4.8.2.stream.xz [new file with mode: 0644]
tests/misc-tests/016-send-clone-src/test.sh [new file with mode: 0755]

diff --git a/tests/misc-tests/016-send-clone-src/multi-clone-src-v4.8.2.stream.xz b/tests/misc-tests/016-send-clone-src/multi-clone-src-v4.8.2.stream.xz
new file mode 100644 (file)
index 0000000..34c14ed
Binary files /dev/null and b/tests/misc-tests/016-send-clone-src/multi-clone-src-v4.8.2.stream.xz differ
diff --git a/tests/misc-tests/016-send-clone-src/test.sh b/tests/misc-tests/016-send-clone-src/test.sh
new file mode 100755 (executable)
index 0000000..e256eef
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/bash
+#
+# test for sending stream size of clone-src option, compare against a send
+# stream generated by buggy version
+
+source $TOP/tests/common
+
+check_prereq mkfs.btrfs
+check_prereq btrfs
+
+setup_root_helper
+prepare_test_dev 1g
+
+run_check $TOP/mkfs.btrfs -f $IMAGE
+run_check_mount_test_dev
+
+here=`pwd`
+cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
+
+run_check $SUDO_HELPER $TOP/btrfs subvolume create subv-parent1
+for i in 1 2 3; do
+       run_check $SUDO_HELPER dd if=/dev/zero of=subv-parent1/file1_$i bs=1M count=1
+       run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv-parent1 subv-snap1_$i
+done
+
+run_check $SUDO_HELPER $TOP/btrfs subvolume create subv-parent2
+for i in 1 2 3; do
+       run_check $SUDO_HELPER dd if=/dev/zero of=subv-parent2/file2_$i bs=1M count=1
+       run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv-parent2 subv-snap2_$i
+done
+
+truncate -s0 "$here"/send-stream.img
+chmod a+w "$here"/send-stream.img
+run_check $SUDO_HELPER $TOP/btrfs send -f "$here"/send-stream.img \
+       -c subv-snap1_1 -c subv-snap2_1 subv-snap1_[23] subv-snap2_[23]
+
+image=$(extract_image "$here"/multi-clone-src-v4.8.2.stream.xz)
+old_stream_size=`stat --format=%s "$image"`
+stream_size=`stat --format=%s "$here"/send-stream.img`
+
+if [ $old_stream_size -lt $stream_size ]; then
+       run_check ls -l "$image" "$here"/send-stream.img
+       _fail "sending stream size is bigger than old stream"
+fi
+
+run_check rm -f -- "$image" "$here"/send-stream.img
+
+cd "$here" || _fail "cannot chdir back to test directory"
+
+run_check_umount_test_dev