From: Michal Rakowski Date: Sat, 23 Oct 2021 19:46:25 +0000 (+0200) Subject: regress: add fd-excluded-backup-dir-test X-Git-Tag: Beta-15.0.0~808 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=98e8f518382123b2c43e1b4991593cb3d64e8e0c;p=thirdparty%2Fbacula.git regress: add fd-excluded-backup-dir-test --- diff --git a/regress/tests/fd-excluded-backup-dir-test b/regress/tests/fd-excluded-backup-dir-test new file mode 100755 index 000000000..53a4c7ed6 --- /dev/null +++ b/regress/tests/fd-excluded-backup-dir-test @@ -0,0 +1,108 @@ +#!/bin/bash +# +# Copyright (C) 2000-2020 Kern Sibbald +# License: BSD 2-Clause; see file LICENSE-FOSS +# +# Simple test for the 'ExlcudedBackupDirectories' FD directive +# +TestName="excluded-backup-dir" +JobName=excluded-dir + +. scripts/functions + +scripts/cleanup +scripts/copy-confs + +echo "${cwd}/build" >${cwd}/tmp/file-list + +change_jobname BackupClient1 $JobName +start_test + +verify_backup_ok() +{ +nb=`grep 'Backup OK' $1 | wc -l` +if [ $nb -lt 1 ]; then + print_debug "ERROR: should have found Backup OK message, check $1 log" + bstat=1 +fi +} + +# Set some directories as excluded +excluded_dir1="$cwd/build/autoconf" +excluded_dir2="$cwd/build/src" +excluded_dirs="${excluded_dir1} ${excluded_dir2}" + +# Try to backup and restore 'build' directory respecting the excluded dirs +$bperl -e 'add_attribute("$conf/bacula-fd.conf", "ExlcudedBackupDirectories", "'$excluded_dir1','$excluded_dir2'", "Director")' + +# Create directory to compare later +mkdir $tmp/expected +tar -cP $cwd/build | tar -xC $tmp/expected + +# Remove excluded directories from expected tree - should not be backed up meaning we do not expect it to be restored +rm -rf $tmp/expected/$cwd/build/autoconf +rm -rf $tmp/expected/$cwd/build/src + +cat <${cwd}/tmp/bconcmds +@$out /dev/null +messages +@$out ${tmp}/log1.out +label volume=TestVolume001 storage=File1 pool=File slot=1 drive=0 +run job=$JobName yes +wait +messages +@$out ${tmp}/log2.out +llist files jobid=1 +@$out ${tmp}/log3.out +restore where=$tmp/bacula-restores select all done +yes +wait +messages +quit +END_OF_DATA + +run_bacula + +verify_backup_ok ${tmp}/log1.out + +diff -r ${tmp}/expected ${tmp}/bacula-restores +if test $? -ne 0; then + print_debug "ERROR: Restored tree different than expected one!" + dstat=1 +fi + +# Restore 'build' directory - nothing should be backed up now +$bperl -e 'add_attribute("$conf/bacula-fd.conf", "ExlcudedBackupDirectories", "'$cwd/build'", "Director")' + +# Restart FD to reload config +$bin/bacula-ctl-fd restart +if test $? -ne 0; then + print_debug "ERROR: Failed to restart the FD!" + dstat=1 +fi + +cat <${cwd}/tmp/bconcmds +@$out ${tmp}/log4.out +run job=$JobName level=Full yes +wait +messages +quit +END_OF_DATA + +run_bconsole + +# We should see 'Backup OK' with 0 files written +verify_backup_ok ${tmp}/log4.out + +# No files should be written - main backup directory is excluded +n_files=`cat tmp/log4.out | grep 'FD Files Written:' | tr -s ' ' | cut -d ':' -f 2` +if [ ${n_files} -ne 0 ]; then + estat=1 + print_debug "ERROR: Wrong number of files backed up: ${n_files}, expected: 0, check $tmp/log4.out" +fi + + +check_for_zombie_jobs storage=File1 +stop_bacula + +end_test