From: Michal Rakowski Date: Thu, 3 Dec 2020 11:16:39 +0000 (+0100) Subject: regress: Add bscan test for purged files X-Git-Tag: Release-11.3.2~811 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df4be85ddec1efad3cc7c496192cad94bff95a0f;p=thirdparty%2Fbacula.git regress: Add bscan test for purged files --- diff --git a/regress/tests/bscan-purged-files-test b/regress/tests/bscan-purged-files-test new file mode 100755 index 000000000..f923d0c33 --- /dev/null +++ b/regress/tests/bscan-purged-files-test @@ -0,0 +1,139 @@ +#!/bin/sh +# +# Copyright (C) 2000-2020 Kern Sibbald +# License: BSD 2-Clause; see file LICENSE-FOSS +# +# Purge files from job, run bscan, check if file records were reinserted back +# to the catalog, run bscan for the second time - now no records should be inserted. + +TestName="bscan-plugin-object-test" +JobName=PluginTest +. scripts/functions + +scripts/cleanup +scripts/copy-plugin-confs + +make -C $src/src/plugins/fd install install-test-plugin +if [ $? -ne 0 ]; then + print_debug "Failed to build and install test-plugin!" + exit 1 +fi + +# Change file retention time so that we can prune file records +outf="${tmp}/sed_tmp" +echo "s% Schedule =%# Schedule =%g" >${outf} +echo "s%File Retention =%File Retention = 2 #%" >> ${outf} +cp ${scripts}/bacula-dir.conf ${tmp}/1 +sed -f ${outf} ${tmp}/1 >${scripts}/bacula-dir.conf + +file=encrypt-bug.jpg +rm -rf ${cwd}/tmp/* +echo "${cwd}/README" >${cwd}/tmp/file-list + +start_test + +cat <${cwd}/tmp/bconcmds +@output /dev/null +messages +@$out ${cwd}/tmp/log1.out +label storage=File1 volume=TestVolume001 +run job=TestPluginTest storage=File1 yes +wait +messages +sql +@$out ${cwd}/tmp/log2.out +select count(*) from File; + +quit +quit +END_OF_DATA + +run_bacula + +# Check how many file records were in catalog after running backup job +file_count_orig=`cat ${cwd}/tmp/log2.out | grep '|' | cut -d'|' -f2 | tail -1` + +# Wait a bit so that we are after retention period +sleep 3 + +cat <${cwd}/tmp/bconcmds +@$out ${cwd}/tmp/log3.out +prune files +yes +sql +@$out ${cwd}/tmp/log4.out +select count(*) from File; + +quit +END_OF_DATA + +run_bconsole + +# There should not be any file records after prunning now +file_count=`cat ${cwd}/tmp/log4.out | grep '|' | cut -d'|' -f2 | tail -1` +if [ ${file_count} -ne 0 ]; then + estat=1 + print_debug "Failed to prune all file records, records left in db: ${file_count}" +fi + +# Run bscan +echo "volume=TestVolume001" >tmp/bscan.bsr + +bscan_libdbi + +# If the database has a password pass it to bscan +if test "x${db_password}" = "x"; then + PASSWD= +else + PASSWD="-P ${db_password}" +fi + +if test "$debug" -eq 1 ; then + $bin/bscan -w working $BSCANLIBDBI -u ${db_user} -n ${db_name} $PASSWD -m -s -v -b tmp/bscan.bsr -c bin/bacula-sd.conf ${cwd}/tmp +else + $bin/bscan -w working $BSCANLIBDBI -u ${db_user} -n ${db_name} $PASSWD -m -s -v -b tmp/bscan.bsr -c bin/bacula-sd.conf ${cwd}/tmp >tmp/log5.out 2>&1 +fi + +cat <${cwd}/tmp/bconcmds +sql +@$out ${cwd}/tmp/log6.out +select count(*) from File; + +quit +END_OF_DATA + +run_bconsole + +# File records should be inserted back into the catalog after bscon run +file_count=`cat ${cwd}/tmp/log6.out | grep '|' | cut -d'|' -f2 | tail -1` +if [ ${file_count} -ne ${file_count_orig} ]; then + estat=1 + print_debug "Bscan failed to insert file records. Expected ${file_count_orig} records in catalog, have: ${file_count}" +fi + +# Another bscan run should not insert any new file records +if test "$debug" -eq 1 ; then + $bin/bscan -w working $BSCANLIBDBI -u ${db_user} -n ${db_name} $PASSWD -m -s -v -b tmp/bscan.bsr -c bin/bacula-sd.conf ${cwd}/tmp +else + $bin/bscan -w working $BSCANLIBDBI -u ${db_user} -n ${db_name} $PASSWD -m -s -v -b tmp/bscan.bsr -c bin/bacula-sd.conf ${cwd}/tmp >tmp/log7.out 2>&1 +fi + +cat <${cwd}/tmp/bconcmds +sql +@$out ${cwd}/tmp/log8.out +select count(*) from File; + +quit +END_OF_DATA + +run_bconsole + +# File records count should be equal one after running backup job +file_count=`cat ${cwd}/tmp/log8.out | grep '|' | cut -d'|' -f2 | tail -1` +if [ ${file_count} -ne ${file_count_orig} ]; then + estat=1 + print_debug "Bscan inserted too many records after second run. Expected ${file_count_orig} records in catalog, have: ${file_count}" +fi + +stop_bacula +end_test