]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
regress: Extend console-delete-object-test to validate filters
authorMichal Rakowski <michal.rakowski@baculasystems.com>
Mon, 7 Dec 2020 15:26:25 +0000 (16:26 +0100)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:02:59 +0000 (09:02 +0100)
regress/tests/console-delete-object-test

index 6d39c242b974ed6036bf7dc29e65bd555e038286..8071f2282f8e913b69f81a16dc298c0c148337f0 100755 (executable)
@@ -104,5 +104,100 @@ if [ ${objects_lines} -ne ${db_objs_expected} ]; then
    print_debug "Wrong PostgreSQL object cound found: ${objects_lines}, expected: ${db_objs_expected}"
 fi
 
+# Purge objects and run job once more to have all objects generated by the test plugin back in db
+cat <<END_OF_DATA >${cwd}/tmp/bconcmds
+@$out ${cwd}/tmp/log7.out
+purge volume=TestVolume001
+@$out ${cwd}/tmp/log8.out
+run job=TestPluginTest storage=File1 yes
+wait
+messages
+@$out ${cwd}/tmp/log9.out
+list objects
+quit
+END_OF_DATA
+
+run_bconsole
+
+# Delete objects by 'category' filter
+db_objects=`cat ${cwd}/tmp/log9.out | grep 'Database' | wc -l`
+vm_objects=`cat ${cwd}/tmp/log9.out | grep 'Virtual Machine' | wc -l`
+
+cat <<END_OF_DATA >${cwd}/tmp/bconcmds
+@$out ${cwd}/tmp/log10.out
+delete object category=Database
+yes
+@$out ${cwd}/tmp/log11.out
+list objects
+@$out ${cwd}/tmp/log12.out
+delete object category="Virtual Machine"
+yes
+@$out ${cwd}/tmp/log13.out
+list objects
+quit
+END_OF_DATA
+
+run_bconsole
+
+objects_lines=`cat ${cwd}/tmp/log11.out | grep 'Database' | wc -l`
+if [ ${objects_lines} -ne 0 ]; then
+   estat=1
+   print_debug "Not all VMWare objects deleted with 'Database' filter. Objects left: ${objects_lines}"
+fi
+
+objects_lines=`cat ${cwd}/tmp/log13.out | grep 'Virtual Machine' | wc -l`
+if [ ${objects_lines} -ne 0 ]; then
+   estat=1
+   print_debug "Not all VMWare objects deleted with 'Virtual Machine' filter. Objects left: ${objects_lines}"
+fi
+
+# Run job once more to have all objects generated by the test plugin back in db
+cat <<END_OF_DATA >${cwd}/tmp/bconcmds
+@$out ${cwd}/tmp/log14.out
+run job=TestPluginTest storage=File1 yes
+wait
+messages
+@$out ${cwd}/tmp/log15.out
+llist objects
+quit
+END_OF_DATA
+
+run_bconsole
+
+db_objects=`cat ${cwd}/tmp/log15.out | grep 'objectcategory: Database' | wc -l`
+obj_name_everything=`cat ${cwd}/tmp/log15.out | grep 'objectname: everything' | wc -l`
+
+# Try to use two filters at once
+cat <<END_OF_DATA >${cwd}/tmp/bconcmds
+@$out ${cwd}/tmp/log16.out
+delete object category=Database uuid=1234-abc-testplugin
+@$out ${cwd}/tmp/log17.out
+llist objects
+@$out ${cwd}/tmp/log18.out
+delete object category=Database name=everything
+yes
+@$out ${cwd}/tmp/log19.out
+llist objects
+quit
+END_OF_DATA
+
+run_bconsole
+
+# No db obj should be deleted (there is no db with '1234-abc-testplugin' uuid
+objects_lines=`cat ${cwd}/tmp/log17.out | grep 'objectcategory: Database' | wc -l`
+if [ ${objects_lines} -ne ${db_objects} ]; then
+   estat=1
+   print_debug "Database objects should not be deleted at all, expected: ${db_objects}, have: ${objects_lines}"
+   exit 1
+fi
+
+# 2 'everything' objs should be deleted
+objects_lines=`cat ${cwd}/tmp/log19.out | grep 'objectname: everything' | wc -l`
+if [ ${objects_lines} -ne 0 ]; then
+   estat=1
+   print_debug "Not all 'everything' objects deleted with 'name' and 'category' filters. Objects left: ${objects_lines}"
+fi
+
+
 stop_bacula
 end_test