]> git.sur5r.net Git - bacula/bacula/blob - regress/tests/aligned-test
Pull regression truncate-test from Branch-9.1
[bacula/bacula] / regress / tests / aligned-test
1 #!/bin/sh
2 #
3 # Copyright (C) 2000-2017 Kern Sibbald
4 # License: BSD 2-Clause; see file LICENSE-FOSS
5 #
6 # Test aligned data volumes with ZFS deduplication
7 # This test expects that you have created a ZFS pool named
8 #  tank, and that you have also created tank/volumes
9 #
10 TestName="aligned-test"
11 JobName=NightlySave
12 . scripts/functions
13
14 if test x$FORCE_CLOUD = xyes ; then
15   echo "\n=== Test $TestName skipped not compatible with Cloud  ==="
16   exit 0
17 fi
18
19 scripts/cleanup
20 scripts/copy-test-confs
21 cp scripts/aligned-bacula-sd.conf bin/bacula-sd.conf
22
23 # install the aligned volume plugin
24 #make -C build/src/plugins/sd install-aligned-plugin >/dev/null
25
26 echo "${cwd}/build" >${cwd}/tmp/file-list
27
28 which zfs >/dev/null 2>&1
29 if [ $? -eq 0 ] ; then
30   zfs=1
31 else
32   zfs=0
33 fi
34
35 # If we are running with zfs, setup a pool,
36 #  otherwise just use defaults
37 if [ $zfs -eq 1 ]; then
38   cp bin/bacula-sd.conf tmp/1
39   sed "s%Archive Device = .*$%Archive Device = /tank/volumes%g" tmp/1 >bin/bacula-sd.conf
40
41   # Delete any previous zfs pool
42   sudo zfs destroy -fR tank/volumes
43   sudo zfs destroy -fR tank
44   sudo zfs destroy -r tank
45   sudo zpool destroy -f tank
46   sudo rm -rf /tank/volumes
47   sudo rm -rf /tank
48   #
49   # Create zfs pool
50   sudo zpool create tank sdb sdc
51   sudo zfs create tank/volumes
52   #sudo zfs recordsize=64k tank # default is 128K
53   sudo zfs set atime=off tank
54   sudo zfs set compress=on tank
55   sudo zfs set dedup=on tank
56   sudo zdb -dd tank
57   sudo chown -R kern:kern /tank
58 fi
59
60 start_test
61
62 cat <<END_OF_DATA >${cwd}/tmp/bconcmds
63 @output /dev/null
64 messages
65 @$out ${cwd}/tmp/log1.out
66 label storage=File volume=Vol1
67 label storage=File volume=Vol2
68 label storage=File volume=Vol3
69 END_OF_DATA
70
71 # do label
72 run_bacula
73
74 if [ $zfs -eq 1 ] ; then
75   sudo zdb -DD tank
76   sudo zdb -b tank
77   sudo zpool list tank
78 fi
79
80 cat <<END_OF_DATA >${cwd}/tmp/bconcmds
81 @output /dev/null
82 messages
83 @$out ${cwd}/tmp/log1.out
84 setdebug level=200 storage
85 run job=$JobName level=Full yes
86 wait
87 list volumes
88 messages
89 END_OF_DATA
90
91 for i in 1 2 3 4 5 6 7 8 9 10; do
92   #echo "Running job $i"
93   run_bconsole
94   if [ $zfs -eq 1 ] ; then
95     sudo zdb -DD tank
96     sudo zdb -b tank
97     sudo zpool list tank
98     ls -l /tank/volumes/Vol*  >${cwd}/tmp/log5.out
99     du -h /tank/volumes/Vol1.add >>${cwd}/tmp/log5.out
100   else
101     ls -l tmp/Vol* >${cwd}/tmp/log5.out
102     du -h tmp/Vol1.add >>${cwd}/tmp/log5.out
103   fi
104 done
105
106 cat <<END_OF_DATA >${cwd}/tmp/bconcmds-form
107 @# 
108 @# now do a restore
109 @#
110 @$out ${cwd}/tmp/log2.out
111 @# setdebug level=0 fd
112 restore where=${cwd}/tmp/bacula-restores storage=File jobid=@jobid@
113 mark *
114 done
115 yes
116 wait
117 messages
118 quit
119 END_OF_DATA
120
121 # Restore and check each job
122 for i in 1 2 3 4 5 6 7 8 9 10; do
123    rm -rf ${cwd}/tmp/bacula-restores
124    echo "s%@jobid@%$i%" >${cwd}/tmp/in
125    sed -f ${cwd}/tmp/in ${cwd}/tmp/bconcmds-form >${cwd}/tmp/bconcmds
126    run_bconsole
127    check_restore_diff
128 done
129
130 if [ $zfs -eq 1 ] ; then
131   sudo zdb -DD tank
132   sudo zdb -b tank
133   sudo zpool list tank
134   ls -l /tank/volumes/Vol*  >>${cwd}/tmp/log5.out
135   du -h /tank/volumes/Vol1.add >>${cwd}/tmp/log5.out
136 else
137   ls -l tmp/Vol* >>${cwd}/tmp/log5.out
138   du -h tmp/Vol1.add >>${cwd}/tmp/log5.out
139 fi
140
141 sleep 2
142 check_for_zombie_jobs storage=File 
143 stop_bacula
144
145 check_two_logs
146 check_restore_diff
147 end_test