]> git.proxmox.com Git - mirror_zfs-debian.git/blob - debian/tests/kernel-smoke-test-send-receive
Add isolation-machine restriction to autopkgtest.
[mirror_zfs-debian.git] / debian / tests / kernel-smoke-test-send-receive
1 #!/bin/sh
2 #
3 # Copyright (C) 2016 Canonical
4 #
5 # This program is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU General Public License
7 # as published by the Free Software Foundation; either version 2
8 # of the License, or (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 #
19 echo -n "kernel smoke test, ZFS send and receive: "
20 TMP=/tmp
21 VDEV0=${TMP}/pool0-$$.img
22 VDEV1=${TMP}/pool1-$$.img
23 POOL=pool-smoke-$$
24 SNAP=${TMP}/snapshot-$$.zfs
25 DATA=/${POOL}/test/data
26
27 dd if=/dev/zero of=${VDEV0} bs=1M count=512 > /dev/null 2>&1
28 dd if=/dev/zero of=${VDEV1} bs=1M count=512 > /dev/null 2>&1
29
30 zpool create ${POOL} ${VDEV0} ${VDEV1}
31 ret=$?
32 if [ $ret -ne 0 ]; then
33 echo "FAILED: zpool create failed, exit code=$ret"
34 rm ${VDEV0} ${VDEV1}
35 exit 1
36 fi
37
38 zfs create ${POOL}/test
39 ret=$?
40 if [ $ret -ne 0 ]; then
41 echo "FAILED: zfs create failed, exit code=$ret"
42 zpool destroy ${POOL}
43 rm ${VDEV0} ${VDEV1}
44 exit 1
45 fi
46
47 #
48 # Populate with files..
49 #
50 cp -rp /etc /${POOL}/test
51 dd if=/dev/urandom of=${DATA} bs=1M count=64 > /dev/null 2>&1
52 sum1=$(md5sum ${DATA} | awk '{print $1}')
53
54 #
55 # Make a snapshot
56 #
57 zfs snapshot -r ${POOL}/test@snap
58 ret=$?
59 if [ $ret -ne 0 ]; then
60 echo "FAILED: zfs snapshot failed, exit code=$ret"
61 zpool destroy ${POOL}
62 rm ${VDEV0} ${VDEV1}
63 exit 1
64 fi
65
66 #
67 # Make snapshot
68 #
69 zfs send ${POOL}/test@snap > ${SNAP}
70
71 rm -rf ${POOL}/test
72
73 zfs destroy ${POOL}/test@snap
74 ret=$?
75 if [ $ret -ne 0 ]; then
76 echo "FAILED: zfs destroy snapshot failed, exit code=$ret"
77 zpool destroy ${POOL}
78 rm ${VDEV0} ${VDEV1}
79 exit 1
80 fi
81
82 #
83 # Receive it back..
84 #
85 zfs receive -F ${POOL}/test < ${SNAP}
86
87 sum2=$(md5sum ${DATA} | awk '{print $1}')
88 if [ x"$sum1" != x"$sum2" ]; then
89 echo "FAILED: received data different from original"
90 zpool destroy ${POOL}
91 rm ${VDEV0} ${VDEV1}
92 exit 1
93 fi
94
95 zpool destroy ${POOL}
96 ret=$?
97 if [ $ret -ne 0 ]; then
98 echo "FAILED: zpool destroy failed, exit code=$ret"
99 #
100 # destroy failed, try to clean up, but this
101 # wil probably fail
102 #
103 rm ${VDEV0} ${VDEV1}
104 exit 1
105 fi
106
107 rm ${VDEV0} ${VDEV1}
108 echo "PASSED"
109 exit 0