3 # end of stream conditions: test that no instructions in a stream are still
4 # received, at least the header must be present
6 source $TOP/tests/common
8 check_prereq mkfs.btrfs
16 # All helpers can exercise various options passed to 'btrfs receive'
18 test_full_empty_stream() {
21 str="$here/stream-full-empty.stream"
22 run_check $TOP/mkfs.btrfs -f $TEST_DEV
23 run_check_mount_test_dev
25 cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
27 run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
28 run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
32 run_check $SUDO_HELPER $TOP/btrfs send -f "$str" subv1-snap
34 cd "$here" || _fail "cannot chdir back to test directory"
35 run_check_umount_test_dev
37 run_check $TOP/mkfs.btrfs -f $TEST_DEV
38 run_check_mount_test_dev
39 run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$str" "$TEST_MNT"
40 run_check_umount_test_dev
42 run_check rm -f -- "$str"
45 test_full_simple_stream() {
48 str="$here/stream-full-simple.stream"
49 run_check $TOP/mkfs.btrfs -f $TEST_DEV
50 run_check_mount_test_dev
52 cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
54 run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
56 run_check $SUDO_HELPER dd if=/dev/zero of=subv1/file1_$i bs=1M count=1
59 run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
63 run_check $SUDO_HELPER $TOP/btrfs send -f "$str" subv1-snap
65 cd "$here" || _fail "cannot chdir back to test directory"
66 run_check_umount_test_dev
68 run_check $TOP/mkfs.btrfs -f $TEST_DEV
69 run_check_mount_test_dev
70 run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$str" "$TEST_MNT"
71 run_check_umount_test_dev
73 run_check rm -f -- "$str"
76 test_incr_empty_stream() {
80 fstr="$here/stream-full-empty.stream"
81 istr="$here/stream-incr-empty.stream"
82 run_check $TOP/mkfs.btrfs -f $TEST_DEV
83 run_check_mount_test_dev
85 cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
87 run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
88 run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
89 run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv2-snap
91 truncate -s0 "$fstr" "$istr"
92 chmod a+w "$fstr" "$istr"
93 run_check $SUDO_HELPER $TOP/btrfs send -f "$fstr" subv1-snap
94 run_check $SUDO_HELPER $TOP/btrfs send -p subv1-snap -f "$istr" subv2-snap
96 cd "$here" || _fail "cannot chdir back to test directory"
97 run_check_umount_test_dev
99 run_check $TOP/mkfs.btrfs -f $TEST_DEV
100 run_check_mount_test_dev
101 run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$fstr" "$TEST_MNT"
102 run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$istr" "$TEST_MNT"
103 run_check_umount_test_dev
105 run_check rm -f -- "$fstr" "$istr"
108 test_incr_simple_stream() {
111 fstr="$here/stream-full-simple.stream"
112 istr="$here/stream-incr-simple.stream"
113 run_check $TOP/mkfs.btrfs -f $TEST_DEV
114 run_check_mount_test_dev
116 cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
118 run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
120 run_check $SUDO_HELPER dd if=/dev/zero of=subv1/file1_$i bs=1M count=1
123 run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
126 run_check $SUDO_HELPER dd if=/dev/urandom of=subv1/file1_$i bs=1M count=1
129 run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv2-snap
131 truncate -s0 "$fstr" "$istr"
132 chmod a+w "$fstr" "$istr"
133 run_check $SUDO_HELPER $TOP/btrfs send -f "$fstr" subv1-snap
134 run_check $SUDO_HELPER $TOP/btrfs send -p subv1-snap -f "$istr" subv2-snap
136 cd "$here" || _fail "cannot chdir back to test directory"
137 run_check_umount_test_dev
139 run_check $TOP/mkfs.btrfs -f $TEST_DEV
140 run_check_mount_test_dev
141 run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$fstr" "$TEST_MNT"
142 run_check $SUDO_HELPER $TOP/btrfs receive "$@" -v -f "$istr" "$TEST_MNT"
143 run_check_umount_test_dev
145 run_check rm -f -- "$fstr" "$istr"
148 test_full_empty_stream
149 test_full_simple_stream
150 test_incr_empty_stream
151 test_incr_simple_stream
154 test_full_empty_stream $extra_opt
155 test_full_simple_stream $extra_opt
156 test_incr_empty_stream $extra_opt
157 test_incr_simple_stream $extra_opt