btrfs-progs: tests: add shell quotes to misc test scripts
[platform/upstream/btrfs-progs.git] / tests / misc-tests / 018-recv-end-of-stream / test.sh
1 #!/bin/bash
2 #
3 # end of stream conditions: test that no instructions in a stream are still
4 # received, at least the header must be present
5
6 source "$TEST_TOP/common"
7
8 check_prereq mkfs.btrfs
9 check_prereq btrfs
10
11 setup_root_helper
12 prepare_test_dev
13
14 here=`pwd`
15
16 # All helpers can exercise various options passed to 'btrfs receive'
17
18 test_full_empty_stream() {
19         local str
20
21         str="$here/stream-full-empty.stream"
22         run_check "$TOP/mkfs.btrfs" -f "$TEST_DEV"
23         run_check_mount_test_dev
24
25         cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
26
27         run_check $SUDO_HELPER "$TOP/btrfs" subvolume create subv1
28         run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv1 subv1-snap
29
30         truncate -s0 "$str"
31         chmod a+w "$str"
32         run_check $SUDO_HELPER "$TOP/btrfs" send -f "$str" subv1-snap
33
34         cd "$here" || _fail "cannot chdir back to test directory"
35         run_check_umount_test_dev
36
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
41
42         run_check rm -f -- "$str"
43 }
44
45 test_full_simple_stream() {
46         local str
47
48         str="$here/stream-full-simple.stream"
49         run_check "$TOP/mkfs.btrfs" -f $TEST_DEV
50         run_check_mount_test_dev
51
52         cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
53
54         run_check $SUDO_HELPER "$TOP/btrfs" subvolume create subv1
55         for i in 1 2 3; do
56                 run_check $SUDO_HELPER dd if=/dev/zero of=subv1/file1_$i bs=1M count=1
57         done
58
59         run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv1 subv1-snap
60
61         truncate -s0 "$str"
62         chmod a+w "$str"
63         run_check $SUDO_HELPER "$TOP/btrfs" send -f "$str" subv1-snap
64
65         cd "$here" || _fail "cannot chdir back to test directory"
66         run_check_umount_test_dev
67
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
72
73         run_check rm -f -- "$str"
74 }
75
76 test_incr_empty_stream() {
77         local fstr
78         local istr
79
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
84
85         cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
86
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
90
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
95
96         cd "$here" || _fail "cannot chdir back to test directory"
97         run_check_umount_test_dev
98
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
104
105         run_check rm -f -- "$fstr" "$istr"
106 }
107
108 test_incr_simple_stream() {
109         local str
110
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
115
116         cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
117
118         run_check $SUDO_HELPER "$TOP/btrfs" subvolume create subv1
119         for i in 1 2 3; do
120                 run_check $SUDO_HELPER dd if=/dev/zero of=subv1/file1_$i bs=1M count=1
121         done
122
123         run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv1 subv1-snap
124
125         for i in 1 2 3; do
126                 run_check $SUDO_HELPER dd if=/dev/urandom of=subv1/file1_$i bs=1M count=1
127         done
128
129         run_check $SUDO_HELPER "$TOP/btrfs" subvolume snapshot -r subv1 subv2-snap
130
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
135
136         cd "$here" || _fail "cannot chdir back to test directory"
137         run_check_umount_test_dev
138
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
144
145         run_check rm -f -- "$fstr" "$istr"
146 }
147
148 test_full_empty_stream
149 test_full_simple_stream
150 test_incr_empty_stream
151 test_incr_simple_stream
152
153 extra_opt=-e
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"