1#!/bin/sh 2# 3# Run a simple backup but 4# create three volumes and do six backups causing the 5# volumes to be recycled, and cycling through the volumes 6# twice. Tests maxvoljobs and volretention. 7# 8# Note, this test is a bit tricky, in that if you get too 9# much backup data, the test will 10# fail because it will run out of enough volumes to backup 11# all the data. 12# 13TestName="recycle-test" 14JobName=Recycle 15. scripts/functions 16 17scripts/cleanup 18scripts/copy-test-confs 19 20# Directory to backup. 21# This directory will be created by setup_data(). 22BackupDirectory="${tmp}/data" 23 24# Use a tgz to setup data to be backuped. 25# Data will be placed at "${tmp}/data/". 26setup_data data/small.tgz 27 28# the default fileset FS_TESTJOB backups all file and directories defined in "${tmp}/file-list". 29echo "${BackupDirectory}" >${tmp}/file-list 30 31 32change_jobname NightlySave $JobName 33start_test 34 35cat <<END_OF_DATA >${cwd}/tmp/bconcmds 36@$out /dev/null 37messages 38@$out ${cwd}/tmp/log1.out 39label storage=File1 volume=TestVolume001 40label storage=File1 volume=TestVolume002 41label storage=File1 volume=TestVolume003 42label storage=File1 volume=TestVolume004 43@# Note, this is going to fail if the pruning gets 44@# to tight because the saved volume is too large. 45@# In that case, either add another volume, or 46@# increase the volume capacity a bit. 47update Volume=TestVolume000 volretention=2s 48update Volume=TestVolume001 maxvolbytes=200000000 49update Volume=TestVolume002 volretention=2s 50update Volume=TestVolume002 maxvolbytes=200000000 51update Volume=TestVolume003 volretention=2s 52update Volume=TestVolume003 maxvolbytes=200000000 53update Volume=TestVolume004 volretention=2s 54update Volume=TestVolume004 maxvolbytes=200000000 55list volumes 56setdebug level=150 storage=File1 57setdebug level=50 dir 58run job=$JobName storage=File1 level=full yes 59run job=$JobName storage=File1 level=full yes 60run job=$JobName storage=File1 level=full yes 61wait 62messages 63list volumes 64@sleep 3 65run job=$JobName storage=File1 level=full yes 66run job=$JobName storage=File1 level=full yes 67run job=$JobName storage=File1 level=full yes 68wait 69messages 70list volumes 71@sleep 3 72run job=$JobName storage=File1 level=full yes 73run job=$JobName storage=File1 level=full yes 74run job=$JobName storage=File1 level=full yes 75wait 76messages 77list volumes 78@sleep 3 79run job=$JobName storage=File1 level=full yes 80run job=$JobName storage=File1 level=full yes 81run job=$JobName storage=File1 level=full yes 82wait 83messages 84list volumes 85@sleep 3 86run job=$JobName storage=File1 level=full yes 87run job=$JobName storage=File1 level=full yes 88run job=$JobName storage=File1 level=full yes 89wait 90messages 91list volumes 92@# 93@# now do a restore 94@# 95@$out ${cwd}/tmp/log2.out 96restore where=${cwd}/tmp/bareos-restores select storage=File1 97unmark * 98mark * 99done 100yes 101wait 102messages 103quit 104END_OF_DATA 105 106run_bareos 107check_for_zombie_jobs storage=File1 108stop_bareos 109 110check_two_logs 111check_restore_diff 112end_test 113