btrfs-progs: tests: end of stream conditions
[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 $TOP/tests/common
7
8 check_prereq mkfs.btrfs
9 check_prereq btrfs
10
11 setup_root_helper
12 prepare_test_dev 1g
13
14 here=`pwd`
15
16 test_full_empty_stream() {
17         local str
18
19         str="$here/stream-full-empty.stream"
20         run_check $TOP/mkfs.btrfs -f $TEST_DEV
21         run_check_mount_test_dev
22
23         cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
24
25         run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
26         run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
27
28         truncate -s0 "$str"
29         chmod a+w "$str"
30         run_check $SUDO_HELPER $TOP/btrfs send -f "$str" subv1-snap
31
32         cd "$here" || _fail "cannot chdir back to test directory"
33         run_check_umount_test_dev
34
35         run_check $TOP/mkfs.btrfs -f $TEST_DEV
36         run_check_mount_test_dev
37         run_check $SUDO_HELPER $TOP/btrfs receive -v -f "$str" "$TEST_MNT"
38         run_check_umount_test_dev
39
40         run_check rm -f -- "$str"
41 }
42
43 test_full_simple_stream() {
44         local str
45
46         str="$here/stream-full-simple.stream"
47         run_check $TOP/mkfs.btrfs -f $TEST_DEV
48         run_check_mount_test_dev
49
50         cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
51
52         run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
53         for i in 1 2 3; do
54                 run_check $SUDO_HELPER dd if=/dev/zero of=subv1/file1_$i bs=1M count=1
55         done
56
57         run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
58
59         truncate -s0 "$str"
60         chmod a+w "$str"
61         run_check $SUDO_HELPER $TOP/btrfs send -f "$str" subv1-snap
62
63         cd "$here" || _fail "cannot chdir back to test directory"
64         run_check_umount_test_dev
65
66         run_check $TOP/mkfs.btrfs -f $TEST_DEV
67         run_check_mount_test_dev
68         run_check $SUDO_HELPER $TOP/btrfs receive -v -f "$str" "$TEST_MNT"
69         run_check_umount_test_dev
70
71         run_check rm -f -- "$str"
72 }
73
74 test_incr_empty_stream() {
75         local fstr
76         local istr
77
78         fstr="$here/stream-full-empty.stream"
79         istr="$here/stream-incr-empty.stream"
80         run_check $TOP/mkfs.btrfs -f $TEST_DEV
81         run_check_mount_test_dev
82
83         cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
84
85         run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
86         run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
87         run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv2-snap
88
89         truncate -s0 "$fstr" "$istr"
90         chmod a+w "$fstr" "$istr"
91         run_check $SUDO_HELPER $TOP/btrfs send -f "$fstr" subv1-snap
92         run_check $SUDO_HELPER $TOP/btrfs send -p subv1-snap -f "$istr" subv2-snap
93
94         cd "$here" || _fail "cannot chdir back to test directory"
95         run_check_umount_test_dev
96
97         run_check $TOP/mkfs.btrfs -f $TEST_DEV
98         run_check_mount_test_dev
99         run_check $SUDO_HELPER $TOP/btrfs receive -v -f "$fstr" "$TEST_MNT"
100         run_check $SUDO_HELPER $TOP/btrfs receive -v -f "$istr" "$TEST_MNT"
101         run_check_umount_test_dev
102
103         run_check rm -f -- "$fstr" "$istr"
104 }
105
106 test_incr_simple_stream() {
107         local str
108
109         fstr="$here/stream-full-simple.stream"
110         istr="$here/stream-incr-simple.stream"
111         run_check $TOP/mkfs.btrfs -f $TEST_DEV
112         run_check_mount_test_dev
113
114         cd "$TEST_MNT" || _fail "cannot chdir to TEST_MNT"
115
116         run_check $SUDO_HELPER $TOP/btrfs subvolume create subv1
117         for i in 1 2 3; do
118                 run_check $SUDO_HELPER dd if=/dev/zero of=subv1/file1_$i bs=1M count=1
119         done
120
121         run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv1-snap
122
123         for i in 1 2 3; do
124                 run_check $SUDO_HELPER dd if=/dev/urandom of=subv1/file1_$i bs=1M count=1
125         done
126
127         run_check $SUDO_HELPER $TOP/btrfs subvolume snapshot -r subv1 subv2-snap
128
129         truncate -s0 "$fstr" "$istr"
130         chmod a+w "$fstr" "$istr"
131         run_check $SUDO_HELPER $TOP/btrfs send -f "$fstr" subv1-snap
132         run_check $SUDO_HELPER $TOP/btrfs send -p subv1-snap -f "$istr" subv2-snap
133
134         cd "$here" || _fail "cannot chdir back to test directory"
135         run_check_umount_test_dev
136
137         run_check $TOP/mkfs.btrfs -f $TEST_DEV
138         run_check_mount_test_dev
139         run_check $SUDO_HELPER $TOP/btrfs receive -v -f "$fstr" "$TEST_MNT"
140         run_check $SUDO_HELPER $TOP/btrfs receive -v -f "$istr" "$TEST_MNT"
141         run_check_umount_test_dev
142
143         run_check rm -f -- "$fstr" "$istr"
144 }
145
146 test_full_empty_stream
147 test_full_simple_stream
148 test_incr_empty_stream
149 test_incr_simple_stream