From: Kern Sibbald Date: Tue, 14 Feb 2006 13:57:02 +0000 (+0000) Subject: Update X-Git-Tag: Release-1.38.6~28 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=98846e57bb91a20341eb78a0f8bab8fc801a432b;p=bacula%2Fbacula Update git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@2783 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/regress/all-non-root-tests b/regress/all-non-root-tests index be1bf01045..26122a5b74 100755 --- a/regress/all-non-root-tests +++ b/regress/all-non-root-tests @@ -29,6 +29,12 @@ tests/two-vol-test tests/verify-vol-test tests/weird-files2-test tests/weird-files-test +# +# The following are Virtual Disk Autochanger tests +tests/two-pool-test +tests/two-volume-disk +tests/incremental-2disk +tests/2drive-incremental-2disk echo " " echo "Test results" cat test.out diff --git a/regress/scripts/.cvsignore b/regress/scripts/.cvsignore index 1b72890398..640b3a1641 100644 --- a/regress/scripts/.cvsignore +++ b/regress/scripts/.cvsignore @@ -1,3 +1,4 @@ +crypto-bacula-fd.conf new-test-bacula-dir.conf bacula-dir.conf bacula-fd.conf diff --git a/regress/scripts/bacula-dir-win32-tape.conf.in b/regress/scripts/bacula-dir-win32-tape.conf.in new file mode 100644 index 0000000000..919edc4869 --- /dev/null +++ b/regress/scripts/bacula-dir-win32-tape.conf.in @@ -0,0 +1,145 @@ +# +# Default Bacula Director Configuration file +# +# The only thing that MUST be changed is to add one or more +# file or directory names in the Include directive of the +# FileSet resource. +# +# For Bacula release 1.33 +# +# You might also want to change the default email address +# from root to your address. See the "mail" and "operator" +# directives in the Messages resource. +# + +Director { # define myself + Name = @hostname@-dir + DIRport = 8101 # where we listen for UA connections + QueryFile = "@scriptdir@/query.sql" + WorkingDirectory = "@working_dir@" + PidDirectory = "@piddir@" + Maximum Concurrent Jobs = 4 + Password = "pNvX1WiXnwv2C/F7E52LGvw6rKjbbPvu2kyuPa9pVaL3" + Messages = Daemon +} + +# +# Define the main nightly save backup job +# By default, this job will back up to disk in /tmp +Job { + Name = "NightlySave" + Type = Backup + Client=Tibs + FileSet="Full Set" + Storage = DDS-4 + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 + SpoolData = yes +} + + +# Standard Restore template, to be changed by Console program +Job { + Name = "RestoreFiles" + Type = Restore + Client=Tibs + FileSet="Full Set" + Storage = DDS-4 + Messages = Standard + Pool = Default + Where = /tmp/bacula-restores +} + + +# List of files to be backed up +FileSet { + Name = "Full Set" + Enable VSS = yes + Include { Options { signature=MD5 } + File = "c:" + } +} + + +# +# When to do the backups, full backup on first sunday of the month, +# differential (i.e. incremental since full) every other sunday, +# and incremental backups other days +Schedule { + Name = "WeeklyCycle" + Run = Full 1st sun at 1:05 + Run = Differential 2nd-5th sun at 1:05 + Run = Incremental mon-sat at 1:05 +} + +# Client (File Services) to backup +Client { + Name = Tibs + Address = tibs + FDPort = 9102 + Catalog = MyCatalog + Password = "xBzFq+a9llZyGyfMaNO9e3outP86/1AUAT8P34RoT62G" + File Retention = 30d # 30 days + Job Retention = 180d # six months + AutoPrune = yes # Prune expired Jobs/Files + Maximum Concurrent Jobs = 4 +} + +# Definition of DDS tape storage device +Storage { + Name = DDS-4 + Address = 192.168.68.112 # N.B. Use a fully qualified name here + SDPort = 8103 + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" # password for Storage daemon + Device = DDS-4 # must be same as Device in Storage daemon + Media Type = DDS-4 # must be same as MediaType in Storage daemon + AutoChanger = yes + Maximum Concurrent Jobs = 4 +} + + +# Generic catalog service +Catalog { + Name = MyCatalog + dbname = bacula; user = bacula; password = "" +} + +# Reasonable message delivery -- send most everything to email address +# and to the console +Messages { + Name = Standard + mailcommand = "@sbindir@/bsmtp -h localhost -f \"\(Bacula Regression\) %r\" -s \"Bacula: %t %e of %c %l\" %r" + operatorcommand = "@sbindir@/bsmtp -h localhost -f \"\(Bacula Regression\) %r\" -s \"Bacula: Intervention needed for %j\" %r" + MailOnError = @job_email@ = all, !terminate + operator = @job_email@ = mount + console = all, !skipped, !terminate, !restored +# +# WARNING! the following will create a file that you must cycle from +# time to time as it will grow indefinitely. However, it will +# also keep all your messages if the scroll off the console. +# + append = "@working_dir@/log" = all, !skipped +} + +# +# Message delivery for daemon messages (no job). +Messages { + Name = Daemon + mailcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula\) %r\" -s \"Bacula daemon message\" %r" + mail = @job_email@ = all, !skipped + console = all, !skipped, !saved + append = "@working_dir@/log" = all, !skipped +} + + +# Default pool definition +Pool { + Name = Default + Pool Type = Backup + Recycle = yes # Bacula can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 365d # one year + Accept Any Volume = yes # write on any volume in the pool +} diff --git a/regress/scripts/bacula-sd-2disk-drive.conf b/regress/scripts/bacula-sd-2disk-drive.conf new file mode 100644 index 0000000000..1d56020cf3 --- /dev/null +++ b/regress/scripts/bacula-sd-2disk-drive.conf @@ -0,0 +1,75 @@ +# +# Default Bacula Storage Daemon Configuration file +# +# For Bacula release 1.39 +# +# You may need to change the name of your tape drive +# on the "Archive Device" directive in the Device +# resource. If you change the Name and/or the +# "Media Type" in the Device resource, please ensure +# that dird.conf has corresponding changes. +# + +Storage { # definition of myself + Name = localhost-sd + SDPort = 8103 # Director's port + WorkingDirectory = "/home/kern/bacula/regress/working" + Pid Directory = "/home/kern/bacula/regress/working" + Subsys Directory = "/home/kern/bacula/regress/working" +} + +# +# List Directors who are permitted to contact Storage daemon +# +Director { + Name = localhost-dir + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" +} + +# +# Devices supported by this Storage daemon +# To connect, the Director's bacula-dir.conf must have the +# same Name and MediaType. +# +Autochanger { + Name = DDS-4 + Changer Device = /home/kern/bacula/regress/tmp/disk-changer/conf + Changer Command ="/home/kern/bacula/regress/bin/disk-changer %c %o %S %a %d" + Device = Drive-0, Drive-1 +} + +Device { + Name = Drive-0 + Device Type = File + Media Type = DDS-4 + Archive Device = /home/kern/bacula/regress/tmp/disk-changer/drive0 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 0 + AlwaysOpen = yes; + RemovableMedia = yes; +# Maximum File Size = 1000000 +} + +Device { + Name = Drive-1 + Device Type = File + Media Type = DDS-4 + Archive Device = /home/kern/bacula/regress/tmp/disk-changer/drive1 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 1 + AlwaysOpen = yes; + RemovableMedia = yes; +# Maximum File Size = 1000000 +} + + +# +# Send all messages to the Director, +# mount messages also are sent to the email address +# +Messages { + Name = Standard + director = localhost-dir = all, !terminate +} diff --git a/regress/scripts/bacula-sd-2disk-drive.conf.in b/regress/scripts/bacula-sd-2disk-drive.conf.in new file mode 100644 index 0000000000..6f6accee45 --- /dev/null +++ b/regress/scripts/bacula-sd-2disk-drive.conf.in @@ -0,0 +1,75 @@ +# +# Default Bacula Storage Daemon Configuration file +# +# For Bacula release 1.39 +# +# You may need to change the name of your tape drive +# on the "Archive Device" directive in the Device +# resource. If you change the Name and/or the +# "Media Type" in the Device resource, please ensure +# that dird.conf has corresponding changes. +# + +Storage { # definition of myself + Name = @hostname@-sd + SDPort = 8103 # Director's port + WorkingDirectory = "@working_dir@" + Pid Directory = "@piddir@" + Subsys Directory = "@subsysdir@" +} + +# +# List Directors who are permitted to contact Storage daemon +# +Director { + Name = @hostname@-dir + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" +} + +# +# Devices supported by this Storage daemon +# To connect, the Director's bacula-dir.conf must have the +# same Name and MediaType. +# +Autochanger { + Name = DDS-4 + Changer Device = @disk_drive@/conf + Changer Command ="@scriptdir@/disk-changer %c %o %S %a %d" + Device = Drive-0, Drive-1 +} + +Device { + Name = Drive-0 + Device Type = File + Media Type = DDS-4 + Archive Device = @disk_drive@/drive0 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 0 + AlwaysOpen = yes; + RemovableMedia = yes; +# Maximum File Size = 1000000 +} + +Device { + Name = Drive-1 + Device Type = File + Media Type = DDS-4 + Archive Device = @disk_drive@/drive1 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 1 + AlwaysOpen = yes; + RemovableMedia = yes; +# Maximum File Size = 1000000 +} + + +# +# Send all messages to the Director, +# mount messages also are sent to the email address +# +Messages { + Name = Standard + director = @hostname@-dir = all, !terminate +} diff --git a/regress/scripts/bacula-sd-2disk.conf b/regress/scripts/bacula-sd-2disk.conf new file mode 100644 index 0000000000..154d3d3c11 --- /dev/null +++ b/regress/scripts/bacula-sd-2disk.conf @@ -0,0 +1,61 @@ +# +# Default Bacula Storage Daemon Configuration file +# +# For Bacula release 1.39 +# +# You may need to change the name of your tape drive +# on the "Archive Device" directive in the Device +# resource. If you change the Name and/or the +# "Media Type" in the Device resource, please ensure +# that dird.conf has corresponding changes. +# + +Storage { # definition of myself + Name = localhost-sd + SDPort = 8103 # Director's port + WorkingDirectory = "/home/kern/bacula/regress/working" + Pid Directory = "/home/kern/bacula/regress/working" + Subsys Directory = "/home/kern/bacula/regress/working" +} + +# +# List Directors who are permitted to contact Storage daemon +# +Director { + Name = localhost-dir + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" +} + +# +# Devices supported by this Storage daemon +# To connect, the Director's bacula-dir.conf must have the +# same Name and MediaType. +# +Autochanger { + Name = DDS-4 + Changer Device = /home/kern/bacula/regress/tmp/disk-changer/conf + Changer Command ="/home/kern/bacula/regress/bin/disk-changer %c %o %S %a %d" + Device = Drive-0 +} + +Device { + Name = Drive-0 # + Device Type = File + Media Type = DDS-4 + Archive Device = /home/kern/bacula/regress/tmp/disk-changer/drive0 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 0 + AlwaysOpen = yes; + RemovableMedia = yes; +# Maximum File Size = 1000000 +} + +# +# Send all messages to the Director, +# mount messages also are sent to the email address +# +Messages { + Name = Standard + director = localhost-dir = all, !terminate +} diff --git a/regress/scripts/bacula-sd-2disk.conf.in b/regress/scripts/bacula-sd-2disk.conf.in new file mode 100644 index 0000000000..313dfe4249 --- /dev/null +++ b/regress/scripts/bacula-sd-2disk.conf.in @@ -0,0 +1,61 @@ +# +# Default Bacula Storage Daemon Configuration file +# +# For Bacula release 1.39 +# +# You may need to change the name of your tape drive +# on the "Archive Device" directive in the Device +# resource. If you change the Name and/or the +# "Media Type" in the Device resource, please ensure +# that dird.conf has corresponding changes. +# + +Storage { # definition of myself + Name = @hostname@-sd + SDPort = 8103 # Director's port + WorkingDirectory = "@working_dir@" + Pid Directory = "@piddir@" + Subsys Directory = "@subsysdir@" +} + +# +# List Directors who are permitted to contact Storage daemon +# +Director { + Name = @hostname@-dir + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" +} + +# +# Devices supported by this Storage daemon +# To connect, the Director's bacula-dir.conf must have the +# same Name and MediaType. +# +Autochanger { + Name = DDS-4 + Changer Device = @disk_drive@/conf + Changer Command ="@scriptdir@/disk-changer %c %o %S %a %d" + Device = Drive-0 +} + +Device { + Name = Drive-0 # + Device Type = File + Media Type = DDS-4 + Archive Device = @disk_drive@/drive0 + AutomaticMount = yes; # when device opened, read it + Autochanger = yes + Drive Index = 0 + AlwaysOpen = yes; + RemovableMedia = yes; +# Maximum File Size = 1000000 +} + +# +# Send all messages to the Director, +# mount messages also are sent to the email address +# +Messages { + Name = Standard + director = @hostname@-dir = all, !terminate +} diff --git a/regress/scripts/copy-2disk-confs b/regress/scripts/copy-2disk-confs new file mode 100755 index 0000000000..40f18605c3 --- /dev/null +++ b/regress/scripts/copy-2disk-confs @@ -0,0 +1,10 @@ +#!/bin/sh +/bin/cp -f scripts/bacula-dir-tape.conf bin/bacula-dir.conf +/bin/cp -f scripts/bacula-sd-2disk.conf bin/bacula-sd.conf +/bin/cp -f scripts/test-bacula-fd.conf bin/bacula-fd.conf +/bin/cp -f scripts/test-console.conf bin/bconsole.conf +outf="tmp/sed_tmp" +echo "s%# Autochanger = yes% Autochanger = yes%g" >${outf} +cp bin/bacula-dir.conf tmp/1 +sed -f ${outf} tmp/1 >bin/bacula-dir.conf + diff --git a/regress/scripts/copy-2disk-drive-confs b/regress/scripts/copy-2disk-drive-confs new file mode 100755 index 0000000000..7a5dcd30ea --- /dev/null +++ b/regress/scripts/copy-2disk-drive-confs @@ -0,0 +1,10 @@ +#!/bin/sh +/bin/cp -f scripts/bacula-dir-tape.conf bin/bacula-dir.conf +/bin/cp -f scripts/bacula-sd-2disk-drive.conf bin/bacula-sd.conf +/bin/cp -f scripts/test-bacula-fd.conf bin/bacula-fd.conf +/bin/cp -f scripts/test-console.conf bin/bconsole.conf +outf="tmp/sed_tmp" +echo "s%# Autochanger = yes% Autochanger = yes%g" >${outf} +cp bin/bacula-dir.conf tmp/1 +sed -f ${outf} tmp/1 >bin/bacula-dir.conf + diff --git a/regress/scripts/do_sed b/regress/scripts/do_sed index ddcc0388c5..8357611c50 100755 --- a/regress/scripts/do_sed +++ b/regress/scripts/do_sed @@ -9,9 +9,9 @@ if test $# != 6 ; then echo " and the sixth must be the smtp or email host" exit 1 fi +cwd=`pwd` mkdir -p ${cwd}/bin out="/tmp/sed_tmp" -cwd=`pwd` HOST="localhost" # Create sed command script echo "s%@sbindir@%${cwd}/bin%g" >${out} @@ -27,6 +27,7 @@ echo "s%@hostname@%${HOST}%g" >>${out} echo "s%@changer_path@%${4}%g" >>${out} echo "s%@tape_drive1@%${5}%g" >>${out} echo "s%@smtp_host@%${6}%g" >>${out} +echo "s%@disk_drive@%${cwd}/tmp/disk-changer%g" >>${out} echo "AUTOCHANGER=\"${3}\"" >config.out echo "TAPE_DRIVE1=\"${5}\"" >>config.out @@ -44,7 +45,9 @@ sed -f ${out} ${cwd}/scripts/bacula-dir-tape.conf.in >${cwd}/scripts/bacula-dir- sed -f ${out} ${cwd}/scripts/win32-bacula-dir-tape.conf.in >${cwd}/scripts/win32-bacula-dir-tape.conf sed -f ${out} ${cwd}/scripts/bacula-sd-tape.conf.in >${cwd}/scripts/bacula-sd-tape.conf sed -f ${out} ${cwd}/scripts/bacula-sd-2tape.conf.in >${cwd}/scripts/bacula-sd-2tape.conf +sed -f ${out} ${cwd}/scripts/bacula-sd-2disk.conf.in >${cwd}/scripts/bacula-sd-2disk.conf sed -f ${out} ${cwd}/scripts/bacula-sd-2drive.conf.in >${cwd}/scripts/bacula-sd-2drive.conf +sed -f ${out} ${cwd}/scripts/bacula-sd-2disk-drive.conf.in >${cwd}/scripts/bacula-sd-2disk-drive.conf sed -f ${out} ${cwd}/scripts/cleanup-tape.in >${cwd}/scripts/cleanup-tape sed -f ${out} ${cwd}/scripts/cleanup-2tape.in >${cwd}/scripts/cleanup-2tape sed -f ${out} ${cwd}/scripts/cleanup-2drive.in >${cwd}/scripts/cleanup-2drive diff --git a/regress/scripts/prepare-two-disks b/regress/scripts/prepare-two-disks new file mode 100755 index 0000000000..d7d97bdbb0 --- /dev/null +++ b/regress/scripts/prepare-two-disks @@ -0,0 +1,6 @@ +#!/bin/sh +# +# Create two blank tapes +# +rm -rf tmp/disk-changer +mkdir tmp/disk-changer diff --git a/regress/tests/2drive-incremental-2disk b/regress/tests/2drive-incremental-2disk new file mode 100755 index 0000000000..b61bcd970f --- /dev/null +++ b/regress/tests/2drive-incremental-2disk @@ -0,0 +1,135 @@ +#!/bin/sh +# +# Run a simple backup of the Bacula build directory then create some +# new files, do an Incremental and restore those two files. +# +# This script uses the virtual disk autochanger and two drives +# +. config.out +debug=0 +if test "$debug" -eq 1 ; then + out="tee" +else + out="output" +fi +cwd=`pwd` +bin/bacula stop 2>&1 >/dev/null +cd bin +./drop_bacula_tables >/dev/null 2>&1 +./make_bacula_tables >/dev/null 2>&1 +./grant_bacula_privileges 2>&1 >/dev/null +cd .. + +scripts/copy-2disk-drive-confs +scripts/prepare-two-disks +echo "${cwd}/tmp/build" >/tmp/file-list +if test ! -d ${cwd}/tmp/build ; then + mkdir ${cwd}/tmp/build +fi +cp -p ${cwd}/build/src/dird/*.c ${cwd}/tmp/build +cd ${cwd}/tmp +echo "${cwd}/tmp/build/ficheriro1.txt" >restore-list +echo "${cwd}/tmp/build/ficheriro2.txt" >>restore-list +cd ${cwd} + +# Turn off Prefer Mounted Volumes so we use 2 drives +outf="tmp/sed_tmp" +echo "s%# Prefer Mounted Volumes% Prefer Mounted Volumes%g" >${outf} +cp ${cwd}/bin/bacula-dir.conf ${cwd}/tmp/1 +# Comment the next line out to write everything to one drive +# otherwise, it writes the two jobs to different drives +sed -f ${outf} ${cwd}/tmp/1 >${cwd}/bin/bacula-dir.conf + +echo " " +echo " " +echo " === Starting 2drive-incremental-2disk test ===" +echo " === Starting 2drive-incremental-2disk test ===" >>working/log +echo " " + +# Write out bconsole commands +cat <tmp/bconcmds +@output /dev/null +messages +@$out tmp/log1.out +label storage=DDS-4 volume=TestVolume001 slot=1 Pool=Default drive=0 +label storage=DDS-4 volume=TestVolume002 slot=2 Pool=Default drive=1 +@#setdebug level=100 storage=DDS-4 +run job=NightlySave yes +run job=NightlySave yes +run job=NightlySave yes +run job=NightlySave yes +run job=NightlySave yes +@sleep 3 +status storage=DDS-4 +wait +list volumes +list jobs +status storage=DDS-4 +messages +quit +END_OF_DATA + +if test "$debug" -eq 1 ; then + bin/bacula start + cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf +else + bin/bacula start 2>&1 >/dev/null + cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf 2>&1 >/dev/null +fi +echo "ficheriro1.txt" >${cwd}/tmp/build/ficheriro1.txt +echo "ficheriro2.txt" >${cwd}/tmp/build/ficheriro2.txt + +cat <tmp/bconcmds +@$out /dev/null +messages +@$out tmp/log1.out +@# Force Incremental on the second Volume +update volume=TestVolume001 VolStatus=Used +status storage=DDS-4 +@#setdebug level=400 storage=DDS-4 +run level=Incremental job=NightlySave yes +wait +list volumes +status storage=DDS-4 +messages +@# +@# now do a restore +@# +@$out tmp/log2.out +restore where=${cwd}/tmp/bacula-restores +7 +<${cwd}/tmp/restore-list + +yes +wait +messages +@$out +quit +END_OF_DATA +if test "$debug" -eq 1 ; then + cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf +else + cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf 2>&1 >/dev/null +fi + +bin/bacula stop 2>&1 >/dev/null +grep "^ Termination: *Backup OK" tmp/log1.out 2>&1 >/dev/null +bstat=$? +grep "^ Termination: *Restore OK" tmp/log2.out 2>&1 >/dev/null +rstat=$? +# +# Delete .c files because we will only restored the txt files +# +rm -f tmp/build/*.c +diff -r tmp/build tmp/bacula-restores${cwd}/tmp/build 2>&1 >/dev/null +if [ $? != 0 -o $bstat != 0 -o $rstat != 0 ] ; then + echo " " + echo " " + echo " !!!!! 2drive-incremental-2disk test Bacula source failed!!! !!!!! " + echo " !!!!! 2drive-incremental-2disk test failed!!! !!!!! " >>test.out + echo " " +else + echo " ===== 2drive-incremental-2disk test Bacula source OK ===== " + echo " ===== 2drive-incremental-2disk test OK ===== " >>test.out + scripts/cleanup +fi diff --git a/regress/tests/backup-win32-tape b/regress/tests/backup-win32-tape new file mode 100755 index 0000000000..3723b536dd --- /dev/null +++ b/regress/tests/backup-win32-tape @@ -0,0 +1,56 @@ +#!/bin/sh +# +# Run a simple backup of the Bacula build directory +# to a tape then restore it, we do that twice to ensure that +# we can correctly append to a tape. +# +cwd=`pwd` +scripts/copy-win32-confs +scripts/cleanup-tape + +echo "${cwd}/build" >/tmp/file-list + +echo " " +echo " " +echo " === Starting Backup Win32 tape test at `date +%R:%S` ===" +echo " === Starting Backup Win32 tape test at `date +%R:%S` ===" >>working/log +echo " " + +bin/bacula start 2>&1 >/dev/null +bin/bconsole -c bin/bconsole.conf <&1 >/dev/null +grep "^ Termination: *Backup OK" tmp/log1.out 2>&1 >/dev/null +bstat=$? +if [ $bstat != 0 ] ; then + echo " " + echo " " + echo " !!!!! Backup Win32 tape test failed!!! !!!!! " + echo " !!!!! Backup Win32 tape test failed!!! !!!!! " >>test.out + echo " " +else + echo " ===== Backup Win32 tape test OK ===== " + echo " ===== Backup Win32 tape test OK ===== " >>test.out + scripts/cleanup +fi diff --git a/regress/tests/incremental-2disk b/regress/tests/incremental-2disk new file mode 100755 index 0000000000..c888635349 --- /dev/null +++ b/regress/tests/incremental-2disk @@ -0,0 +1,111 @@ +#!/bin/sh +# +# Run a simple backup of the Bacula build directory then create some +# new files, do an Incremental and restore those two files. +# +# This script uses the virtual disk autochanger +# +. config.out +if test x${AUTOCHANGER} = x/dev/null ; then + echo "incremental-2disk test skipped. No autochanger." + exit +fi +debug=0 +if test "$debug" -eq 1 ; then + out="tee" +else + out="output" +fi +cwd=`pwd` +bin/bacula stop 2>&1 >/dev/null +cd bin +./drop_bacula_tables >/dev/null 2>&1 +./make_bacula_tables >/dev/null 2>&1 +./grant_bacula_privileges 2>&1 >/dev/null +cd .. + +scripts/copy-2disk-confs +scripts/prepare-two-disks + +echo "${cwd}/tmp/build" >/tmp/file-list +if test ! -d ${cwd}/tmp/build ; then + mkdir ${cwd}/tmp/build +fi +cp -p ${cwd}/build/src/dird/*.c ${cwd}/tmp/build +cd ${cwd}/tmp +echo "${cwd}/tmp/build/ficheriro1.txt" >restore-list +echo "${cwd}/tmp/build/ficheriro2.txt" >>restore-list +cd ${cwd} + +echo " " +echo " " +echo " === Starting incremental-2disk test ===" +echo " === Starting incremental-2disk test ===" >>working/log +echo " " + +# Write out bconsole commands +cat <tmp/bconcmds +@$out /dev/null +messages +@$out tmp/log1.out +label storage=DDS-4 volume=TestVolume001 slot=1 Pool=Default drive=0 +label storage=DDS-4 volume=TestVolume002 slot=2 Pool=Default drive=0 +run job=NightlySave yes +wait +messages +quit +END_OF_DATA + +if test "$debug" -eq 1 ; then + bin/bacula start + cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf +else + bin/bacula start 2>&1 >/dev/null + cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf 2>&1 >/dev/null +fi +echo "ficheriro1.txt" >${cwd}/tmp/build/ficheriro1.txt +echo "ficheriro2.txt" >${cwd}/tmp/build/ficheriro2.txt +bin/bconsole -c bin/bconsole.conf <&1 >/dev/null +grep "^ Termination: *Backup OK" tmp/log1.out 2>&1 >/dev/null +bstat=$? +grep "^ Termination: *Restore OK" tmp/log2.out 2>&1 >/dev/null +rstat=$? +# +# Delete .c files because we will only restored the txt files +# +rm -f tmp/build/*.c +diff -r tmp/build tmp/bacula-restores${cwd}/tmp/build 2>&1 >/dev/null +if [ $? != 0 -o $bstat != 0 -o $rstat != 0 ] ; then + echo " " + echo " " + echo " !!!!! incremental-2disk test Bacula source failed!!! !!!!! " + echo " !!!!! incremental-2disk test failed!!! !!!!! " >>test.out + echo " " +else + echo " ===== incremental-2disk test Bacula source OK ===== " + echo " ===== incremental-2disk test OK ===== " >>test.out + scripts/cleanup +fi diff --git a/regress/tests/two-pool-test b/regress/tests/two-pool-test new file mode 100755 index 0000000000..9686b42566 --- /dev/null +++ b/regress/tests/two-pool-test @@ -0,0 +1,106 @@ +#!/bin/sh +# +# This is Arno's test. It uses two pools, two tapes, and +# an autochanger. Note, the Director has three Pools in its +# conf: Default, Full, and Inc. Default is used in the +# NightlySave job by default. What is backed up is what +# is in /tmp/file-list, which is by default the Bacula +# source code (i.e. the build directory). +# +# Note, we use the virtual disk autochanger. +# +. config.out +if test x${AUTOCHANGER} = x/dev/null ; then + echo "two-pool-test skipped. No autochanger." + exit +fi +debug=0 +if test "$debug" -eq 1 ; then + out="tee" +else + out="output" +fi +cwd=`pwd` +scripts/cleanup +scripts/copy-2disk-confs +scripts/prepare-two-disks + +# Make a relatively large backup set 5 x source code directory +# Reduced to 1 for portable +echo "${cwd}/build" >/tmp/file-list + +echo " " +echo " " +echo " === Starting Two Pool Test at `date +%R:%S` ===" +echo " === Starting Two Pool Test at `date +%R:%S` ===" >>working/log +echo " " +# Write out bconsole commands to a file +cat <tmp/bconcmds +@output /dev/null +messages +@$out tmp/log1.out +label storage=DDS-4 volume=TestVolume001 slot=1 pool=Full drive=0 +label storage=DDS-4 volume=TestVolume002 slot=2 pool=Default drive=0 +list volumes +@# Start job with Client run before and sleep +run job=NightlySave1 level=Full pool=Default yes +run job=NightlySave1 level=Full pool=Default yes +run job=NightlySave1 level=Full pool=Default yes +@# wait between starting jobs +@sleep 60 +@#setdebug level=100 storage=DDS-4 +run job=NightlySave2 level=Full pool=Full yes +run job=NightlySave2 level=Full pool=Full yes +run job=NightlySave2 level=Full pool=Full yes +@sleep 10 +messages +@sleep 10 +messages +@sleep 10 +status storage=DDS-4 +messages +wait +list volumes +messages +@# +@# now do a restore +@# +@$out tmp/log2.out +restore where=${cwd}/tmp/bacula-restores select all storage=DDS-4 done +yes +wait +messages +@$out +quit +END_OF_DATA + +# start Bacula and run bconsole commands +if test "$debug" -eq 1 ; then + bin/bacula start + cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf +else + bin/bacula start 2>&1 >/dev/null + cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf 2>&1 >/dev/null +fi +# Make sure no jobs are still running (debug check) +scripts/check_for_zombie_jobs storage=DDS-4 + +# stop Bacula +bin/bacula stop 2>&1 >/dev/null +# Check if backup done correctly +grep "^ Termination: *Backup OK" tmp/log1.out 2>&1 >/dev/null +bstat=$? +grep "^ Termination: *Restore OK" tmp/log2.out 2>&1 >/dev/null +rstat=$? +diff -r build tmp/bacula-restores${cwd}/build 2>&1 >/dev/null +if [ $? != 0 -o $bstat != 0 -o $rstat != 0 ] ; then + echo " " + echo " " + echo " !!!!! Two Pool Test Bacula source failed!!! !!!!! " + echo " !!!!! Two Pool Test failed!!! !!!!! " >>test.out + echo " " +else + echo " ===== Two Pool Test Bacula source OK ===== " + echo " ===== Two Pool Test OK ===== " >>test.out +# scripts/cleanup +fi diff --git a/regress/tests/two-volume-test b/regress/tests/two-volume-test new file mode 100755 index 0000000000..dd75665715 --- /dev/null +++ b/regress/tests/two-volume-test @@ -0,0 +1,87 @@ +#!/bin/sh +# +# Run a simple backup of the Bacula build directory +# to two tapes where the maximum tape file size is set to 1M +# Note, this test simulates the tape filling and writing to +# the next tape. +# +# Note we used the viritual disk autochanger +# +. config.out +if test x${AUTOCHANGER} = x/dev/null ; then + echo "two-volume-test skipped. No autochanger." + exit +fi +debug=0 +if test "$debug" -eq 1 ; then + out="tee" +else + out="output" +fi +cwd=`pwd` +scripts/cleanup +scripts/copy-2disk-confs +scripts/prepare-two-disks + +echo "${cwd}/build" >/tmp/file-list + +outf="tmp/sed_tmp" +echo "s%# Maximum File Size% Maximum File Size%g" >${outf} +cp ${cwd}/bin/bacula-sd.conf ${cwd}/tmp/1 +sed -f ${outf} ${cwd}/tmp/1 >${cwd}/bin/bacula-sd.conf + +echo " " +echo " " +echo " === Starting Two Volume Test at `date +%R:%S` ===" +echo " === Starting Two Volume Test at `date +%R:%S` ===" >>working/log +echo " " +# Write out bconsole commands +cat <tmp/bconcmds +@$out /dev/null +messages +@$out tmp/log1.out +label storage=DDS-4 volume=TestVolume001 slot=1 pool=Default drive=0 +label storage=DDS-4 volume=TestVolume002 slot=2 pool=Default drive=0 +update Volume=TestVolume001 MaxVolBytes=3000000 pool=Default drive=0 +@#setdebug level=1000 client +run job=NightlySave yes +wait +messages +@# +@# now do a restore +@# +@$out tmp/log2.out +restore where=${cwd}/tmp/bacula-restores select all storage=DDS-4 done +yes +wait +messages +@$out +quit +END_OF_DATA + +if test "$debug" -eq 1 ; then + bin/bacula start + cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf +else + bin/bacula start 2>&1 >/dev/null + cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf 2>&1 >/dev/null +fi +scripts/check_for_zombie_jobs storage=DDS-4 + +bin/bacula stop 2>&1 >/dev/null +grep "^ Termination: *Backup OK" tmp/log1.out 2>&1 >/dev/null +bstat=$? +grep "^ Termination: *Restore OK" tmp/log2.out 2>&1 >/dev/null +rstat=$? +diff -r build tmp/bacula-restores${cwd}/build 2>&1 >/dev/null +if [ $? != 0 -o $bstat != 0 -o $rstat != 0 ] ; then + echo " " + echo " " + echo " !!!!! Two Volume Test Bacula source failed!!! !!!!! " + echo " !!!!! Two Volume Test failed!!! !!!!! " >>test.out + echo " " +else + echo " ===== Two Volume Test Bacula source OK ===== " + echo " ===== Two Volume Test OK ===== " >>test.out +# scripts/cleanup +fi diff --git a/regress/tests/weird-files-test b/regress/tests/weird-files-test index c8d10aea70..5c1f44793e 100755 --- a/regress/tests/weird-files-test +++ b/regress/tests/weird-files-test @@ -3,7 +3,7 @@ # Run a simple backup of the Bacula build directory # then restore it. # -debug=0 +debug=0 if test "$debug" -eq 1 ; then out="tee" else