]> git.sur5r.net Git - bacula/bacula/blobdiff - regress/tests/cancel-test
Big backport from Enterprise
[bacula/bacula] / regress / tests / cancel-test
index 4b869b4e0ad43f4378397882e9141b04f9e47a2d..bc93a24697976843486e6e07d187c642d6fd90fb 100755 (executable)
@@ -1,5 +1,8 @@
 #!/bin/sh
 #
+# Copyright (C) 2000-2017 Kern Sibbald
+# License: BSD 2-Clause; see file LICENSE-FOSS
+#
 # Test different cancel cases
 # Can be quite long
 
@@ -20,6 +23,12 @@ 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
 
+if [ "$FORCE_DEDUP" = yes ]; then
+    MAXVOLBYTES=5KB
+else
+    MAXVOLBYTES=1MB
+fi
+
 touch tmp/log1.out
 
 # Add some jobs and fileset for this test
@@ -51,6 +60,18 @@ Job {
   ClientRunBeforeJob="/bin/sleep 10"
   RunScript {
     Command = "/bin/sleep 600"
+    Command = "touch $tmp/RUN_ERR3.after.%i"
+    RunsWhen = After
+    RunsOnFailure = Yes
+  }
+  JobDefs = DefaultJob
+}
+Job {
+  Name = RUN_ERR4
+  ClientRunBeforeJob="/bin/sleep 10"
+  RunScript {
+    Command = "touch $tmp/RUN_ERR4.after"
+    Command = "/bin/sleep 40"
     RunsWhen = After
     RunsOnFailure = Yes
   }
@@ -58,12 +79,15 @@ Job {
 }
 EOF
 
-change_jobname Client1 $JobName
+change_jobname BackupClient1 $JobName
 start_test
 
+when=`perl -MPOSIX -e "print strftime('%F %T', localtime(time+6000))"`
+
 cat <<END_OF_DATA >${cwd}/tmp/bconcmds
 @output /dev/null
 messages
+setbandwidth limit="500 kb/s" client
 @$out ${cwd}/tmp/logfile1.out
 @################################################################
 @# run a first test without volume
@@ -81,8 +105,8 @@ messages
 @# run test with a small volume
 @# Expect: duration < 60
 @################################################################
-label volume=TestVolume001 storage=File pool=Default
-update volume=TestVolume001 MaxVolBytes=1MB
+label volume=TestVolume001 storage=File1 drive=0 slot=0 pool=Default
+update volume=TestVolume001 MaxVolBytes=$MAXVOLBYTES
 run job=$JobName yes
 @sleep 5
 messages
@@ -97,7 +121,7 @@ messages
 @# 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
+label volume=TestVolume002 storage=File1 drive=0 slot=0 pool=Default
 run job=$JobName yes
 @sleep 1
 messages
@@ -149,8 +173,8 @@ 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
+@# we break the backup during the ClientRunBeforeJob
+@# Expect: duration > 550
 @################################################################
 run job=RUN_ERR3 yes
 @sleep 5
@@ -166,8 +190,9 @@ 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
+@# we break the backup during the ClientRunAfterJob
+@# Expect: duration > 550
+@#         print sleep 600
 @################################################################
 run job=RUN_ERR3 yes
 @sleep 20
@@ -183,11 +208,12 @@ 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
+@# we break the backup during the backup
+@# Expect: duration > 550
+@#         print sleep 600
 @################################################################
 update volume=TestVolume002 volstatus=Used
-label volume=TestVolume003 storage=File pool=Default
+label volume=TestVolume003 storage=File1 drive=0 slot=0 pool=Default
 update volume=TestVolume003 MaxVolBytes=1MB
 run job=RUN_ERR3 yes
 @sleep 20
@@ -200,6 +226,61 @@ messages
 st dir
 wait
 messages
+@$out ${cwd}/tmp/logfile10.out
+@################################################################
+@# test with a broken runscript and a short AfterJob
+@# we break the backup during the backup
+@# Expect: print sleep 40
+@################################################################
+update volume=TestVolume003 volstatus=Used
+label volume=TestVolume004 storage=File1 drive=0 slot=0 pool=Default
+update volume=TestVolume004 MaxVolBytes=1MB
+run job=RUN_ERR4 yes
+@sleep 20
+messages
+st dir
+time
+cancel
+yes
+@sleep 5
+messages
+st dir
+wait
+time
+messages
+@$out ${cwd}/tmp/logfile11.out
+@################################################################
+@# Test to cancel the job immediately
+@# Expect: duration < 30
+@################################################################
+label volume=TestVolume005 storage=File1 drive=0 slot=0 pool=Default
+run job=$JobName yes
+time
+cancel
+yes
+@sleep 5
+messages
+st dir
+wait
+time
+messages
+@$out ${cwd}/tmp/logfile12.out
+@################################################################
+@# Test to cancel the job before it starts
+@# Expect: 
+@################################################################
+run job=$JobName when="$when" yes
+@sleep 5
+st dir
+cancel
+yes
+time
+@sleep 5
+messages
+st dir
+wait
+time
+messages
 @$out ${cwd}/tmp/logfile20.out
 @################################################################
 @# test with a broken connexion between DIR/FD
@@ -207,9 +288,9 @@ messages
 @# 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
+update volume=TestVolume005 volstatus=Used
+label volume=TestVolume006 storage=File1 drive=0 slot=0 pool=Default
+update volume=TestVolume006 MaxVolBytes=1MB
 run job=$JobName yes
 @sleep 5
 messages
@@ -220,7 +301,8 @@ run_bacula
 
 print_debug "Stopping FD"
 # stop the bacula-fd and cancel the job
-#kill -STOP $(pidof bacula-fd)
+pid=`cat $working/bacula-fd.*.pid`
+kill -STOP $pid
 
 cat <<END_OF_DATA >${cwd}/tmp/bconcmds
 @$out ${cwd}/tmp/logfile20.out
@@ -237,17 +319,54 @@ END_OF_DATA
 
 run_bconsole
 
-kill -CONT $(pidof bacula-fd)
+kill -CONT $pid
 
-check_for_zombie_jobs storage=File
+check_for_zombie_jobs storage=File1
 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
+check_duration $tmp/logfile1.out 30
+check_duration $tmp/logfile3.out 30
+check_duration $tmp/logfile4.out 30
+check_duration $tmp/logfile5.out 30
+check_duration $tmp/logfile6.out 30
+
+check_duration $tmp/logfile8.out 550 lt
+grep 'ClientAfterJob "/bin/sleep 600"' $tmp/logfile8.out >/dev/null
+if [ $? -ne 0 ]; then
+    print_debug "Can't find ClientAfterJob in $tmp/logfile8.out"
+    if [ -f $tmp/RUN_ERR3.after.9 ]; then
+        print_debug "No log found, but the $tmp/RUN_ERR3.after.9 was created"
+    else
+        print_debug "ERROR: No log found, AND the $tmp/RUN_ERR3.after.9 was not created"
+    fi
+    estat=2
+fi
+
+check_duration $tmp/logfile9.out 550 lt
+grep 'ClientAfterJob "/bin/sleep 600"' $tmp/logfile9.out >/dev/null
+if [ $? -ne 0 ]; then
+    print_debug "Can't find ClientAfterJob in $tmp/logfile9.out"
+    if [ -f $tmp/RUN_ERR3.after.10 ]; then
+        print_debug "No log found, but the $tmp/RUN_ERR3.after.10 was created"
+    else
+        print_debug "ERROR: No log found, AND the $tmp/RUN_ERR3.after.10 was not created"
+    fi
+    estat=2
+fi
+
+grep 'ClientAfterJob "/bin/sleep 40"' $tmp/logfile10.out >/dev/null
+if [ $? -ne 0 ]; then
+    print_debug "Can't find ClientAfterJob in $tmp/logfile10.out"
+    if [ -f $tmp/RUN_ERR4.after ]; then
+        print_debug "No log found, but the $tmp/RUN_ERR4.after was created"
+    else
+        print_debug "ERROR: No log found, AND the $tmp/RUN_ERR4.after was not created..."
+    fi
+    estat=2
+fi
 
 # Verify the broken connection
-check_duration ${cwd}/tmp/logfile20.out 400
+check_duration $tmp/logfile20.out 400 lt
 
 end_test