From 3cbeeb7e2116280a72d91854824073d5ccf6764f Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Thu, 25 Sep 2008 16:49:56 +0000 Subject: [PATCH] Add first cut plugin test git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@7639 91ce42f0-d328-0410-95d8-f526ca767f89 --- regress/scripts/copy-plugin-confs | 7 + regress/scripts/create_sed | 2 + regress/scripts/do_sed | 1 + regress/scripts/functions | 2 +- regress/scripts/new-test-bacula-dir.conf.in | 1 + .../scripts/plugin-test-bacula-dir.conf.in | 489 ++++++++++++++++++ regress/scripts/test-bacula-fd.conf.in | 1 + 7 files changed, 502 insertions(+), 1 deletion(-) create mode 100755 regress/scripts/copy-plugin-confs create mode 100644 regress/scripts/plugin-test-bacula-dir.conf.in diff --git a/regress/scripts/copy-plugin-confs b/regress/scripts/copy-plugin-confs new file mode 100755 index 0000000000..cc8bf3911e --- /dev/null +++ b/regress/scripts/copy-plugin-confs @@ -0,0 +1,7 @@ +#!/bin/sh +/bin/cp -f scripts/plugin-test-bacula-dir.conf bin/bacula-dir.conf +/bin/cp -f scripts/test-bacula-sd.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 + +scripts/set_tape_options diff --git a/regress/scripts/create_sed b/regress/scripts/create_sed index 7cc4e0ef21..9e4e58699d 100755 --- a/regress/scripts/create_sed +++ b/regress/scripts/create_sed @@ -24,6 +24,7 @@ os=`uname -s`-`./scripts/get-os` dbengine=`echo ${WHICHDB} | sed -e 's/--with-//' -e 's/=.*//'` bversion=`sed -n -e 's/^.*VERSION.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h` bdate=`sed -n -e 's/^.*LSMDATE.*"\(.*\)"$/\1/p' ${srcdir}/src/version.h` +builddir="${cwd}/build" # Create sed command script echo "s%@sbindir@%${cwd}/bin%g" >${out} @@ -71,3 +72,4 @@ echo "s%@win32_password@%${WIN32_PASSWORD}%g" >>${out} echo "s%@db_name@%${db_name}%g" >>${out} echo "s%@db_user@%${db_user}%g" >>${out} echo "s%@db_password@%${db_password}%g" >>${out} +echo "s%@builddir@%${builddir}%g" >>${out} diff --git a/regress/scripts/do_sed b/regress/scripts/do_sed index b8714c36ce..1533b90d1f 100755 --- a/regress/scripts/do_sed +++ b/regress/scripts/do_sed @@ -15,6 +15,7 @@ sed -f ${out} ${cwd}/scripts/multi-client-bacula-dir.conf.in >${cwd}/scripts/mul sed -f ${out} ${cwd}/scripts/bacula-dir.conf.regexwhere.in >${cwd}/scripts/bacula-dir.conf.regexwhere sed -f ${out} ${cwd}/scripts/bacula-dir.conf.maxtime.in >${cwd}/scripts/bacula-dir.conf.maxtime sed -f ${out} ${cwd}/scripts/new-test-bacula-dir.conf.in >${cwd}/scripts/new-test-bacula-dir.conf +sed -f ${out} ${cwd}/scripts/plugin-test-bacula-dir.conf.in >${cwd}/scripts/plugin-test-bacula-dir.conf sed -f ${out} ${cwd}/scripts/testa-bacula-dir.conf.in >${cwd}/scripts/testa-bacula-dir.conf sed -f ${out} ${cwd}/scripts/testb-bacula-dir.conf.in >${cwd}/scripts/testb-bacula-dir.conf sed -f ${out} ${cwd}/scripts/test-bacula-fd.conf.in >${cwd}/scripts/test-bacula-fd.conf diff --git a/regress/scripts/functions b/regress/scripts/functions index 53b90e60f1..2788149b1c 100644 --- a/regress/scripts/functions +++ b/regress/scripts/functions @@ -116,7 +116,7 @@ run_bacula() zstat=0 if test "$debug" -eq 1 ; then bin/bacula-ctl-sd start - bin/bacula-ctl-fd start + bin/bacula-ctl-fd start $1 bin/bacula-ctl-dir start cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf return $? diff --git a/regress/scripts/new-test-bacula-dir.conf.in b/regress/scripts/new-test-bacula-dir.conf.in index 7e79d25faa..4d82e67f01 100644 --- a/regress/scripts/new-test-bacula-dir.conf.in +++ b/regress/scripts/new-test-bacula-dir.conf.in @@ -19,6 +19,7 @@ Director { # define myself WorkingDirectory = "@working_dir@" PidDirectory = "@piddir@" SubSysDirectory = "@subsysdir@" + PluginDirectory = "@sbindir@" Maximum Concurrent Jobs = 4 Password = "pNvX1WiXnwv2C/F7E52LGvw6rKjbbPvu2kyuPa9pVaL3" # Console password Messages = Standard diff --git a/regress/scripts/plugin-test-bacula-dir.conf.in b/regress/scripts/plugin-test-bacula-dir.conf.in new file mode 100644 index 0000000000..0625b18b10 --- /dev/null +++ b/regress/scripts/plugin-test-bacula-dir.conf.in @@ -0,0 +1,489 @@ +# +# 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.39 or later +# +# 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 = @dirport@ # where we listen for UA connections + QueryFile = "@scriptdir@/query.sql" + WorkingDirectory = "@working_dir@" + PidDirectory = "@piddir@" + SubSysDirectory = "@subsysdir@" + PluginDirectory = "@sbindir@/plugins" + Maximum Concurrent Jobs = 4 + Password = "pNvX1WiXnwv2C/F7E52LGvw6rKjbbPvu2kyuPa9pVaL3" # Console password + Messages = Standard +} + +# +# Define the main nightly save backup job +# By default, this job will back up to disk in @tmpdir@ +Job { + Name = "NightlySave" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = File + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 + SpoolData=yes +} + +Job { + Name = "MonsterSave" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = File1 + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" +} + +Job { + Name = "MonsterFileSet" + Type = Backup + Client=@hostname@-fd + FileSet="MonsterFileSet" + Storage = File + Messages = Standard + Pool = Default + Maximum Concurrent Jobs = 4 + Write Bootstrap = "@working_dir@/NightlySave.bsr" +} + + + +Job { + Name = "VerifyVolume" + Type = Verify + Level = VolumeToCatalog + Client=@hostname@-fd + FileSet="Full Set" + Storage = File + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" +} + + +Job { + Name = "SparseTest" + Type = Backup + Client=@hostname@-fd + FileSet="SparseSet" + Storage = File + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" +} + +Job { + Name = "CompressedTest" + Type = Backup + Client=@hostname@-fd + FileSet="CompressedSet" + Storage = File + Messages = Standard + Pool = Default + Maximum Concurrent Jobs = 4 + Write Bootstrap = "@working_dir@/NightlySave.bsr" +} + +Job { + Name = "SparseCompressedTest" + Type = Backup + Client=@hostname@-fd + FileSet="SparseCompressedSet" + Storage = File + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" +} + +Job { + Name = "pluginTest" + Type = Backup + Client=@hostname@-fd + FileSet="pluginSet" + Storage = File + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" +} + + + +# Backup the catalog database (after the nightly save) +Job { + Name = "BackupCatalog" + Type = Backup + Client=@hostname@-fd + FileSet="Catalog" +# Schedule = "WeeklyCycleAfterBackup" + Storage = File + Messages = Standard + Pool = Default + # This creates an ASCII copy of the catalog + RunBeforeJob = "@sbindir@/make_catalog_backup -u regress" + # This deletes the copy of the catalog + RunAfterJob = "@sbindir@/delete_catalog_backup" + Write Bootstrap = "@working_dir@/BackupCatalog.bsr" +} + +JobDefs { + Name = "BackupJob" + Type = Backup + Pool = Default + Storage = File + Messages = Standard + Priority = 10 +} + +Job { + JobDefs = "BackupJob" + Name = "bug621-job-1" + Client = @hostname@-fd + FileSet="Full Set" + ClientRunBeforeJob = "/bin/sleep 60" +} + +Job { + JobDefs = "BackupJob" + Name = "bug621-job-2" + Client = @hostname@-fd + FileSet = "Full Set" + Max Run Time = 30 + Priority = 15 +} + + +# Standard Restore template, to be changed by Console program +Job { + Name = "RestoreFiles" + Type = Restore + Client=@hostname@-fd + FileSet="Full Set" + Storage = File + Messages = Standard + Pool = Default + Where = @tmpdir@/bacula-restores +} + + +# List of files to be backed up +FileSet { + Name = "Full Set" + Include { + Options { signature=MD5; sparse=yes } + File = <@tmpdir@/file-list + } +} + +FileSet { + Name = "SparseSet" + Include { + Options { + signature=MD5 + sparse=yes + } + File = <@tmpdir@/file-list + } +} + +FileSet { + Name = "CompressedSet" + Include { + Options { + signature=MD5 + compression=GZIP + } + File = <@tmpdir@/file-list + } +} + +FileSet { + Name = "pluginSet" + Include { + Options { + readfifo = yes + signature=MD5 + } + File = <@tmpdir@/file-list + Plugin = "bpipe:/@bpipe@/encrypt-bug.jpg:cat @builddir@/../encrypt-bug.jpg:cat >@tmpdir@/encrypt-bug.jpg" + } +} + + +FileSet { + Name = "SparseCompressedSet" + Include { + Options { + signature=MD5 + compression=GZIP + sparse=yes + } + File = <@tmpdir@/file-list + } +} + +FileSet { + Name = "MonsterFileSet" + Include { + Options { + signature = MD5 + noatime = yes + ignore case = yes + Exclude = yes + RegexDir = "Cache" + RegexDir = "Windows Defender" + RegexDir = "Temporary Internet Files" + RegexDir = "bacula" + RegexDir = "Temp" + + RegexDir = "ATI Technologies" + + RegexDir = "wmdownloads" + RegexDir = "My Music" + RegexDir = "iTunes" + RegexDir = "Cookies" + + RegexFile = "desktop.ini" + RegexFile = "thumbs.db" + RegexFile = "acrobat7.exe" + RegexFile = "acr6win.exe" + RegexFile = "AdbeRdr70_enu_full.exe" + RegexFile = "antivirus10_1_5.exe" + #thunderbird lock file + RegexFile = "parent.lock" + + RegexDir = "Retrospect Restore Points" + + #exclude i386 director of windows installer files + WildDir = "[A-Z]:/i386" + + # Exclude Mozilla-based programs' file caches + WildDir = "[A-Z]:/Documents and Settings/*/Application Data/*/Profiles/*/*/ImapMail" + WildDir = "[A-Z]:/Users/*/Application Data/*/Profiles/*/*/ImapMail" + + # Exclude user's registry files - they're always in use anyway. + WildFile = "[A-Z]:/Documents and Settings/*/Local Settings/Application Data/Microsoft/Windows/usrclass.*" + WildFile = "[A-Z]:/Users/*/Local Settings/Application Data/Microsoft/Windows/usrclass.*" + WildFile = "[A-Z]:/Documents and Settings/*/ntuser.*" + WildFile = "[A-Z]:/Users/*/ntuser.*" + + WildDir = "[A-Z]:/Documents and Settings/*/Recent" + WildDir = "[A-Z]:/Users/*/Recent" + + WildDir = "[A-Z]:/Documents and Settings/*/Local Settings/History" + WildDir = "[A-Z]:/Users/*/Local Settings/History" + + # These are always open and unable to be backed up + WildFile = "[A-Z]:/Documents and Settings/All Users/Application Data/Microsoft/Network/Downloader/qmgr[01].dat" + WildFile = "[A-Z]:/Users/All Users/Application Data/Microsoft/Network/Downloader/qmgr[01].dat" + + #Exclude all of Windows... + WildDir = "[A-Z]:/windows" + WildDir = "[A-Z]:/winnt" + WildDir = "[A-Z]:/winxp" + WildDir = "[A-Z]:/win" + + #symantec antivirus app stuff + WildDir = "[A-Z]:/*/Symantec*" + + #system volume information + WildDir = "[A-Z]:/System Volume Information" + + WildFile = "*.tmp" + # ghost image and spanning files + WildFile = "*.gho" + WildFile = "*.ghs" + + # Recycle bins + WildDir = "[A-Z]:/RECYCLER" + WildDir = "[A-Z]:/RECYCLER" + WildDir = "[A-Z]:/RECYCLED" + WildDir = "[A-Z]:/$RECYCLE.BIN" + + # Swap files + WildFile = "[A-Z]:/pagefile.sys" + + # These are programs and are easier to reinstall than restore from + # backup + WildDir = "[A-Z]:/cygwin" + WildDir = "[A-Z]:/Program Files/Adobe/Acrobat 7.0" + WildDir = "[A-Z]:/Program Files/Adobe/Acrobat 8.0" + + WildDir = "[A-Z]:/Program Files/Common Files/Software Center" + WildDir = "[A-Z]:/Software Center" + + WildDir = "[A-Z]:/Program Files/Grisoft" + WildDir = "[A-Z]:/Program Files/Java" + WildDir = "[A-Z]:/Program Files/Java Web Start" + WildDir = "[A-Z]:/Program Files/JavaSoft" + WildDir = "[A-Z]:/Program Files/Microsoft Office" + WildDir = "[A-Z]:/Program Files/Mozilla Firefox" + WildDir = "[A-Z]:/Program Files/Mozilla Thunderbird" + WildDir = "[A-Z]:/Program Files/mozilla.org" + WildDir = "[A-Z]:/Program Files/OpenOffice*" + } + File = <@tmpdir@/file-list + } +} + + +# +# 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 = Level=Full 1st sun at 1:05 + Run = Level=Differential 2nd-5th sun at 1:05 + Run = Level=Incremental mon-sat at 1:05 +} + +# This schedule does the catalog. It starts after the WeeklyCycle +Schedule { + Name = "WeeklyCycleAfterBackup" + Run = Level=Full sun-sat at 1:10 +} + +# This is the backup of the catalog +FileSet { + Name = "Catalog" + Include { + Options { + signature=MD5 + } + File = /home/kern/bacula/regress/bin/working/bacula.sql + } +} + +# Client (File Services) to backup +Client { + Name = @hostname@-fd + Address = @hostname@ + FDPort = @fdport@ + Catalog = MyCatalog + Password = "xevrjURYoCHhn26RaJoWbeWXEY/a3VqGKp/37tgWiuHc" # password for FileDaemon + File Retention = 30d # 30 days + Job Retention = 180d # six months + AutoPrune = yes # Prune expired Jobs/Files + Maximum Concurrent Jobs = 4 +} + +# Definiton of file storage device +Storage { + Name = File + Address = @hostname@ # N.B. Use a fully qualified name here + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = FileStorage + Media Type = File + Maximum Concurrent Jobs = 4 +} + +Storage { + Name = File1 + Address = @hostname@ # N.B. Use a fully qualified name here + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = FileStorage1 + Media Type = File1 + Maximum Concurrent Jobs = 4 +} + + +# Definition of DLT tape storage device +#Storage { +# Name = DLTDrive +# Address = @hostname@ # N.B. Use a fully qualified name here +# SDPort = @sdport@ +# Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" # password for Storage daemon +# Device = "HP DLT 80" # must be same as Device in Storage daemon +# Media Type = DLT8000 # must be same as MediaType in Storage daemon +#} + +# Definition of DDS tape storage device +#Storage { +# Name = SDT-10000 +# Address = @hostname@ # N.B. Use a fully qualified name here +# SDPort = @sdport@ +# Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" # password for Storage daemon +# Device = SDT-10000 # must be same as Device in Storage daemon +# Media Type = DDS-4 # must be same as MediaType in Storage daemon +#} + +# Definition of 8mm tape storage device +#Storage { +# Name = "8mmDrive" +# Address = @hostname@ # N.B. Use a fully qualified name here +# SDPort = @sdport@ +# Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" +# Device = "Exabyte 8mm" +# MediaType = "8mm" +#} + + +# Generic catalog service +Catalog { + Name = MyCatalog + @libdbi@ + dbname = @db_name@; user = @db_user@; password = "@db_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 \"Regression: %t %e of %c %l\" %r" + operatorcommand = "@sbindir@/bsmtp -h localhost -f \"\(Bacula regression\) %r\" -s \"Regression: Intervention needed for %j\" %r" +# MailOnError = @job_email@ = all +# 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 + catalog = all, !skipped +} + +Messages { + Name = NoEmail + mailcommand = "@sbindir@/bsmtp -h localhost -f \"\(Bacula regression\) %r\" -s \"Regression: %t %e of %c %l\" %r" + console = all, !skipped, !terminate +# +# 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 + catalog = 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 +# Label Format = "TEST-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}:${NumVols}" +# Maximum Volume Jobs = 1 +} diff --git a/regress/scripts/test-bacula-fd.conf.in b/regress/scripts/test-bacula-fd.conf.in index 6c3c439eef..0fa219bb3a 100644 --- a/regress/scripts/test-bacula-fd.conf.in +++ b/regress/scripts/test-bacula-fd.conf.in @@ -24,6 +24,7 @@ FileDaemon { # this is me WorkingDirectory = "@working_dir@" Pid Directory = "@piddir@" SubSys Directory = "@subsysdir@" + Plugin Directory = "@sbindir@/plugins" } # Send all messages except skipped files back to Director -- 2.39.5