From: Eric Bollengier Date: Wed, 2 Sep 2020 13:32:41 +0000 (+0200) Subject: BEE Backport regress/tests/restore-stop-read5-test X-Git-Tag: Release-11.3.2~1171 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb2d198d977186c29eb019222d9691ea7d687ee9;p=thirdparty%2Fbacula.git BEE Backport regress/tests/restore-stop-read5-test This commit is the result of the squash of the following main commits: Author: Eric Bollengier Date: Tue Jul 21 10:28:13 2020 +0200 regress: Add copyright to regress scripts Author: Eric Bollengier Date: Tue Dec 20 15:23:09 2016 +0100 regress: Remove some FORCE_CLOUD checks when it's not necessary and add new tests Author: Eric Bollengier Date: Mon May 18 08:35:43 2015 +0200 regress: Update restore-stop-read5-test Author: Kern Sibbald Date: Sat May 16 11:45:06 2015 +0200 Tweak restore-stop tests Author: Eric Bollengier Date: Fri May 15 16:24:39 2015 +0200 regress: Add test for #876 where a restore reads too far on tape --- diff --git a/regress/tests/restore-stop-read5-test b/regress/tests/restore-stop-read5-test new file mode 100755 index 0000000000..7ef395a057 --- /dev/null +++ b/regress/tests/restore-stop-read5-test @@ -0,0 +1,140 @@ +#!/bin/sh +# +# Copyright (C) 2000-2020 Kern Sibbald +# License: BSD 2-Clause; see file LICENSE-FOSS +# +# Run a simple backup of the Bacula build directory +# then restore one file and see if we read too much +# data +# +TestName="restore-stop-read5-test" +JobName=backup +. scripts/functions + +scripts/cleanup +scripts/copy-confs + +require_disk + +# +# Zap out any schedule in default conf file so that +# it doesn't start during our test +# +outf="$tmp/sed_tmp" +echo "s% Schedule =%# Schedule =%g" >${outf} +cp $scripts/bacula-dir.conf $tmp/1 +sed -f ${outf} $tmp/1 >$scripts/bacula-dir.conf + +#$bperl -e "add_attribute('$conf/bacula-sd.conf', 'MaximumFileSize', '10MB', 'Device')" +#$bperl -e "add_attribute('$conf/bacula-dir.conf', 'MaximumVolumeBytes', '50MB', 'Pool')" +$bperl -e "add_attribute('$conf/bacula-dir.conf', 'Label Format', 'Vol2-', 'Pool', 'Default')" +$bperl -e "add_attribute('$conf/bacula-dir.conf', 'FileSet', 'FewFiles', 'Job', 'BackupClient1')" + +cat >> $conf/bacula-dir.conf < /dev/null +trap "rm -f $cwd/build/*.dat" EXIT + +change_jobname BackupClient1 $JobName +start_test + +cat <$tmp/bconcmds +@$out /dev/null +messages +@$out $tmp/log1.out +run job=$JobName storage=File1 yes +wait +messages +END_OF_DATA + +run_bacula + +touch $cwd/build/4.dat +touch $cwd/build/5.dat + +cat <$tmp/bconcmds +@$out /dev/null +messages +@$out $tmp/log1.out +run job=$JobName storage=File2 level=Incremental Pool=Default yes +wait +messages +END_OF_DATA + +run_bconsole + +cat <$tmp/bconcmds +@$out $tmp/log2.out +@# +@# now do a restore +@# +setdebug level=500 trace=1 storage=File1 +restore where=$tmp/bacula-restores +5 +cd "$cwd/build" +mark "1.dat" +mark "11.dat" +mark "12.dat" +mark "13.dat" +mark "4.dat" +done +@sleep 2 +@exec "cp $working/$director.restore.1.bsr $working/restore1.bsr" +yes +wait +messages +quit +END_OF_DATA + +run_bconsole + +check_for_zombie_jobs storage=File1 +stop_bacula + +check_two_logs + +# looking for dircmd.c:1244-3 FileIndex=3-6 +efi=`awk -F '-' '/FileIndex=/ { if (invol) { ret=$4>ret?$4:ret } } /Storage="File1"/ { invol=1 } /Storage="File2"/ { invol=0} END { print ret }' $working/*trace` + +# read_header: FI=10 +efiseen=`awk '/match_volume=Vol-/ { invol=1 } /match_volume=Vol2-/ { invol=0 } /read_header: FI=[0-9]+/ { if (invol) { gsub(/FI=/, "", $4); v=int($4); ret=ret>v?ret:v } } END { print ret}' $working/*trace` + +# count one more +e=`expr $efi + 1` + +if [ $efiseen -gt $e ] ; then + estat=1 + print_debug "ERROR: We need to get $efi FileIndex, we saw $efiseen in the log, we read too far" +else + print_debug "INFO: We need to get $efi FileIndex, we saw $efiseen in the log" +fi + + +end_test