#!/bin/sh # # Test different cancel cases # Can be quite long # TestName="cancel-test" JobName=backup . scripts/functions scripts/cleanup scripts/copy-confs # # Zap out any schedule in default conf file so that # it doesn't start during our test # outf="tmp/sed_tmp" echo "s% Schedule =%# Schedule =%g" >$outf cp ${cwd}/bin/bacula-dir.conf ${cwd}/tmp/1 sed -f ${outf} ${cwd}/tmp/1 >${cwd}/bin/bacula-dir.conf touch tmp/log1.out # Add some jobs and fileset for this test cat <>${cwd}/bin/bacula-dir.conf FileSet { Name = FS_ERR Include { Options { signature = MD5 } file = "\\${cwd}/tmp/bconcmds @output /dev/null messages @$out ${cwd}/tmp/logfile1.out @################################################################ @# run a first test without volume @# Expect: duration < 60 @################################################################ run job=$JobName yes @sleep 5 messages cancel yes wait messages @$out ${cwd}/tmp/logfile2.out @################################################################ @# run test with a small volume @# Expect: duration < 60 @################################################################ label volume=TestVolume001 storage=File pool=Default update volume=TestVolume001 MaxVolBytes=1MB run job=$JobName yes @sleep 5 messages st dir cancel yes wait messages @$out ${cwd}/tmp/logfile3.out @################################################################ @# run test with 2 jobs in // (limit 1) @# expect that the second job don't stay in the list @# Expect: Job2 not present at the end @################################################################ label volume=TestVolume002 storage=File pool=Default run job=$JobName yes @sleep 1 messages run job=$JobName yes @sleep 1 messages st dir cancel jobid=4 @sleep 1 st dir cancel jobid=3 @sleep 1 st dir wait messages @$out ${cwd}/tmp/logfile4.out @################################################################ @# test with a broken fileset @# Expect: duration < 20s @################################################################ run job=$JobName fileset=FS_ERR yes @sleep 3 messages st dir wait messages @$out ${cwd}/tmp/logfile5.out @################################################################ @# test with a broken runscript @# Expect: duration < 20s @################################################################ run job=RUN_ERR1 yes @sleep 3 messages st dir wait messages @$out ${cwd}/tmp/logfile6.out @################################################################ @# test with a broken runscript @# Expect: duration < 20s @################################################################ run job=RUN_ERR2 yes @sleep 3 messages st dir wait messages @$out ${cwd}/tmp/logfile7.out @################################################################ @# test with a broken runscript and a very long AfterJob @# we broke the backup during the ClientRunBeforeJob @# Expect: duration > 600 @################################################################ run job=RUN_ERR3 yes @sleep 5 messages st dir cancel yes @sleep 5 messages st dir wait messages @$out ${cwd}/tmp/logfile8.out @################################################################ @# test with a broken runscript and a very long AfterJob @# we broke the backup during the ClientRunAfterJob @# Expect: duration > 600 @################################################################ run job=RUN_ERR3 yes @sleep 20 messages st dir cancel yes @sleep 5 messages st dir wait messages @$out ${cwd}/tmp/logfile9.out @################################################################ @# test with a broken runscript and a very long AfterJob @# we broke the backup during the backup @# Expect: duration > 600 @################################################################ update volume=TestVolume002 volstatus=Used label volume=TestVolume003 storage=File pool=Default update volume=TestVolume003 MaxVolBytes=1MB run job=RUN_ERR3 yes @sleep 20 messages st dir cancel yes @sleep 5 messages st dir wait messages @$out ${cwd}/tmp/logfile20.out @################################################################ @# test with a broken connexion between DIR/FD @# the test will run a job that will stop, and we send @# the STOP signal to the FD process @# Expect: duration < 400 @################################################################ update volume=TestVolume003 volstatus=Used label volume=TestVolume004 storage=File pool=Default update volume=TestVolume004 MaxVolBytes=1MB run job=$JobName yes @sleep 5 messages quit END_OF_DATA run_bacula print_debug "Stopping FD" # stop the bacula-fd and cancel the job #kill -STOP $(pidof bacula-fd) cat <${cwd}/tmp/bconcmds @$out ${cwd}/tmp/logfile20.out @sleep 3 messages st dir cancel yes st dir wait messages quit END_OF_DATA run_bconsole kill -CONT $(pidof bacula-fd) check_for_zombie_jobs storage=File stop_bacula # A fileset or runscript error goes fast check_duration ${cwd}/tmp/logfile4.out 30 check_duration ${cwd}/tmp/logfile5.out 30 check_duration ${cwd}/tmp/logfile6.out 30 # Verify the broken connection check_duration ${cwd}/tmp/logfile20.out 400 end_test