From edadc5a3fef07a42473d03cf1e066d33661927c0 Mon Sep 17 00:00:00 2001 From: Eric Bollengier Date: Mon, 22 Mar 2010 21:34:46 +0100 Subject: [PATCH] regress: add test for max concurent job for devices --- regress/tests/maxdev-test | 137 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100755 regress/tests/maxdev-test diff --git a/regress/tests/maxdev-test b/regress/tests/maxdev-test new file mode 100755 index 0000000000..1e3974840a --- /dev/null +++ b/regress/tests/maxdev-test @@ -0,0 +1,137 @@ +#!/bin/sh +# +# Run backups with dummy tape driver +# This test setups an Autochanger with 80 slots +# and 5 drives (5 LTO3) +# +# + +TestName="maxdev-test" +JobName=backup +. scripts/functions + +require_vtape + +scripts/cleanup +scripts/copy-tape-confs +cp $rscripts/bacula-dir-vtape.conf $conf/bacula-dir.conf +sed 's/VTape/VTape; maximum concurrent jobs = 3/' \ + $rscripts/bacula-sd-vtape.conf | \ +sed 's/LTO1/LTO3/g' > $conf/bacula-sd.conf +scripts/prepare-fake-autochanger + +echo "${cwd}/build" >${cwd}/tmp/file-list + +perl -Mscripts::functions -e "extract_resource('$conf/bacula-dir.conf', 'Job', 'NightlySave')" > $tmp/1 +cat $tmp/1 | sed s/NightlySave/NightlySave4/ >> $conf/bacula-dir.conf +cat $tmp/1 | sed s/NightlySave/NightlySave5/ >> $conf/bacula-dir.conf +cat $tmp/1 | sed s/NightlySave/NightlySave6/ >> $conf/bacula-dir.conf +cat $tmp/1 | sed s/NightlySave/NightlySave7/ >> $conf/bacula-dir.conf +cat $tmp/1 | sed s/NightlySave/NightlySave8/ >> $conf/bacula-dir.conf +cat $tmp/1 | sed s/NightlySave/NightlySave9/ >> $conf/bacula-dir.conf +cat $tmp/1 | sed s/NightlySave/NightlySave10/ >> $conf/bacula-dir.conf + +start_test + +clientname=`awk '/Name = .*-fd/ { if (!ok) { print $3 ; ok=1 } }' bin/bacula-dir.conf` + +when1=`perl -MPOSIX -e "print strftime('%F %T', localtime(time+30))"` +when2=`perl -MPOSIX -e "print strftime('%F %T', localtime(time+45))"` + +# Catalog record for cleaning tape "CLN01" successfully created. +# CLN01 | Cleaning + +# Write out bconsole commands +cat <${cwd}/tmp/bconcmds +@output /dev/null +messages +@$out ${cwd}/tmp/log6.out +@#setdebug level=200 storage=LTO1 +label barcodes pool=Scratch slots=41-60 storage=LTO3 drive=0 +yes +messages +list volumes +END_OF_DATA + +run_bacula + +cat <${cwd}/tmp/bconcmds +@$out ${cwd}/tmp/log1.out +setdebug trace=1 level=150 storage=LTO3 +run storage=LTO3 when="$when1" job=NightlySave pool=Inc yes +run storage=LTO3 when="$when1" job=NightlySave2 pool=Inc yes +run storage=LTO3 when="$when1" job=NightlySave3 pool=Inc yes +run storage=LTO3 when="$when1" job=NightlySave4 pool=Inc yes +run storage=LTO3 when="$when1" job=NightlySave5 pool=Inc yes +run storage=LTO3 when="$when1" job=NightlySave6 pool=Full yes +run storage=LTO3 when="$when1" job=NightlySave7 pool=Full yes +run storage=LTO3 when="$when1" job=NightlySave8 pool=Full yes +run storage=LTO3 when="$when1" job=NightlySave9 pool=Full yes +run storage=LTO3 when="$when1" job=NightlySave10 pool=Full yes +wait +messages +@$out ${cwd}/tmp/log3.out +@#run storage=LTO3 when="$when1" job=NightlySave pool=Inc yes +@#run storage=LTO3 when="$when1" job=NightlySave2 pool=Inc yes +@#run storage=LTO3 when="$when1" job=NightlySave3 pool=Inc yes +@#run storage=LTO3 when="$when1" job=NightlySave4 pool=Inc yes +@#run storage=LTO3 when="$when1" job=NightlySave5 pool=Inc yes +@#run storage=LTO3 when="$when1" job=NightlySave6 pool=Full yes +@#run storage=LTO3 when="$when1" job=NightlySave7 pool=Full yes +@#run storage=LTO3 when="$when1" job=NightlySave8 pool=Full yes +@#run storage=LTO3 when="$when1" job=NightlySave9 pool=Full yes +@#run storage=LTO3 when="$when1" job=NightlySave10 pool=Full yes +@#wait +@#messages +quit +END_OF_DATA + +run_bconsole +check_for_zombie_jobs storage=LTO3 $clientname + +cat <${cwd}/tmp/bconcmds +setdebug trace=1 level=0 storage=LTO3 +@$out ${cwd}/tmp/log2.out +@# +@# now do a restore +@# +restore client=$clientname fileset="Full Set" pool=Full where=${cwd}/tmp/bacula-restores select all done +yes +wait +messages +END_OF_DATA + +run_bconsole +check_for_zombie_jobs storage=LTO3 $clientname + +stop_bacula + +check_two_logs +check_restore_diff +perl -ne ' +# foreach Job, we store the drive and we count the total +# job number per drive +m/(\d+): Using Device "(.+?)"/ + and $drive_info[$i++]="$1 $2" and $drive{$2}++; + +END { + $err=0; + foreach $k (sort keys %drive) { + if ($drive{$k} > 3) { + print "ERR $k has more than 3 jobs ($drive{$k})\n"; + $err++; + } + } + if ($err) { + foreach $k (@drive_info) { print "$k\n"} + exit 1; + } +} +' $tmp/log1.out + +if [ $? -ne 0 ]; then + print_debug "ERR: Problem during log analysis" + estat=1 +fi +end_test + -- 2.39.5