]> git.sur5r.net Git - bacula/bacula/blob - regress/tests/speed-test
update speedtest
[bacula/bacula] / regress / tests / speed-test
1 #!/bin/sh
2 #
3 # Run a big test with backup of millions of files then run 100 incremental
4 # modifying 10% each time
5 #
6 TestName="speed-test"
7 JobName=speed 
8 . scripts/functions
9
10 ${rscripts}/cleanup
11 ${rscripts}/copy-test-confs
12 echo "${cwd}/files" >${tmp}/file-list
13 rm -rf ${tmp}/bacula-restores
14 mkdir -p $cwd/files
15
16 change_jobname CompressedTest $JobName
17 if echo $* | grep accurate >/dev/null; then
18   sed 's/Name = "speed"/Name = "speed"; accurate=yes/' $conf/bacula-dir.conf > $tmp/1
19   mv $tmp/1 $conf/bacula-dir.conf
20 fi
21
22 if echo $* | grep basejob >/dev/null; then
23   sed 's/Name = "speed"/Name = "speed"; accurate=yes;basejob=speed/' $conf/bacula-dir.conf > $tmp/1
24   mv $tmp/1 $conf/bacula-dir.conf
25   basejob="level=base"
26 fi
27
28 start_test
29
30 # Create X million of files 
31 echo "Creating 1.5M files"
32 perl -e '
33 my $dest="'$cwd/files'";
34 my $base;
35 my $dir=$dest;
36 mkdir $dest;
37 $base = chr(750000 % 26 + 65);
38 if (-f "$dest/$base/aaa750000aaa$base") {
39   exit 0;
40 }
41 $| = 1;
42 for(my $i=0; $i < 26; $i++) {
43  $base = chr($i + 65);
44   mkdir("$dest/$base") or die "$dest/$base $!";
45 }
46 for(my $i=0; $i<=750000; $i++) {
47  $base = chr($i % 26 + 65);
48  open(FP, ">$dest/$base/a${base}a${i}aaa$base") or die "$dest/$base $!";
49  print FP "$i\n";
50  close(FP);
51
52  open(FP, ">$dir/b${base}a${i}csq$base") or die "$dir $!";
53  print FP "$base $i\n";
54  close(FP);
55
56  if (!($i % 100)) {
57     $dir = "$dest/$base/$base$i$base";
58     mkdir $dir;
59  }
60  print "." if (!($i % 10000));
61 }
62 print "\n";
63 '
64
65 cat <<END_OF_DATA >${tmp}/bconcmds
66 @$out /dev/null
67 messages
68 @$out ${tmp}/log1.out
69 label storage=File volume=TestVolume001
70 run job=$JobName $basejob yes
71 wait
72 messages
73 quit
74 END_OF_DATA
75
76 run_bacula
77 check_for_zombie_jobs storage=File
78
79 cat <<END_OF_DATA >${tmp}/bconcmds
80 @$out /dev/null
81 messages
82 @$out ${tmp}/log1.out
83 run job=$JobName level=Full yes
84 wait
85 messages
86 quit
87 END_OF_DATA
88
89 # insert 15 million files into File table
90 for i in $(seq 0 10)
91 do
92  run_bconsole
93 done
94
95 cat <<END_OF_DATA >${tmp}/bconcmds
96 @$out /dev/null
97 messages
98 @$out ${tmp}/log1.out
99 run job=$JobName level=Incremental yes
100 wait
101 messages
102 quit
103 END_OF_DATA
104
105
106 for i in $(seq 0 25)
107 do
108
109 perl -e '
110 my $dest="'$cwd/files'";
111 my $start="'$i'";
112 my $base = chr($start + 65);
113
114 opendir(DIR, "$dest/$base") || die "$!";
115 map {
116  open(FP, ">$dest/$base/$_") or die "$_ $!";
117  print FP "update $_\n";
118  close(FP);
119 } grep { ! /^\./ && -f $_ } readdir(DIR);
120 closedir DIR;
121 '
122 run_bconsole
123
124 done
125
126 cat <<END_OF_DATA >${tmp}/bconcmds
127 @$out /dev/null
128 messages
129 @# 
130 @# now do a restore
131 @#
132 @$out ${tmp}/log2.out
133 time
134 restore where=${tmp}/bacula-restores storage=File select all done yes
135 time
136 wait
137 time
138 status storage=File
139 messages
140 quit
141 END_OF_DATA
142
143 run_bconsole
144 check_for_zombie_jobs storage=File
145 stop_bacula
146
147 check_two_logs
148 #rm -rf ${tmp}/files
149
150 find ${tmp}/bacula-restores | wc -l | tee $tmp/bacula-restore-list
151 rm -rf ${tmp}/bacula-restores
152
153 cp working/log files/log${WHICHDB}-$(date +%F_%H-%M).log
154
155 end_test