]> git.sur5r.net Git - bacula/bacula/blob - regress/tests/speed-test
speed-test: small fix
[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 mkdir $dest;
36 $base = chr(1450000 % 26 + 65);
37 if (-f "$dest/$base/aaa1450000aaa$base") {
38   exit 0;
39 }
40 $| = 1;
41 for(my $i=0; $i < 26; $i++) {
42  $base = chr($i + 65);
43   mkdir("$dest/$base") or die "$dest/$base $!";
44 }
45 for(my $i=0; $i<=1500000; $i++) {
46  $base = chr($i % 26 + 65);
47  open(FP, ">$dest/$base/aaa${i}aaa$base") or die "$dest/$base $!";
48  print FP "$i\n";
49  close(FP);
50
51  mkdir "$dest/$base/$base$i$base" if (!($i % 100));
52  print "." if (!($i % 10000));
53 }
54 print "\n";
55 '
56
57 cat <<END_OF_DATA >${tmp}/bconcmds
58 @$out /dev/null
59 messages
60 @$out ${tmp}/log1.out
61 label storage=File volume=TestVolume001
62 run job=$JobName $basejob yes
63 wait
64 messages
65 quit
66 END_OF_DATA
67
68 run_bacula
69 check_for_zombie_jobs storage=File
70
71 cat <<END_OF_DATA >${tmp}/bconcmds
72 @$out /dev/null
73 messages
74 @$out ${tmp}/log1.out
75 run job=$JobName level=Full yes
76 wait
77 messages
78 quit
79 END_OF_DATA
80
81 # insert 15 million files into File table
82 for i in $(seq 0 10)
83 do
84  run_bconsole
85 done
86
87 cat <<END_OF_DATA >${tmp}/bconcmds
88 @$out /dev/null
89 messages
90 @$out ${tmp}/log1.out
91 run job=$JobName level=Incremental yes
92 wait
93 messages
94 quit
95 END_OF_DATA
96
97
98 for i in $(seq 0 25)
99 do
100
101 perl -e '
102 my $dest="'$cwd/files'";
103 my $start="'$i'";
104 my $base = chr($start + 65);
105
106 opendir(DIR, "$dest/$base") || die "$!";
107 map {
108  open(FP, ">$dest/$base/$_") or die "$_ $!";
109  print FP "update $_\n";
110  close(FP);
111 } grep { ! /^\./ && -f $_ } readdir(DIR);
112 closedir DIR;
113 '
114 run_bconsole
115
116 done
117
118 cat <<END_OF_DATA >${tmp}/bconcmds
119 @$out /dev/null
120 messages
121 @# 
122 @# now do a restore
123 @#
124 @$out ${tmp}/log2.out
125 time
126 restore where=${tmp}/bacula-restores storage=File select all done yes
127 time
128 wait
129 time
130 status storage=File
131 messages
132 quit
133 END_OF_DATA
134
135 run_bconsole
136 check_for_zombie_jobs storage=File
137 stop_bacula
138
139 check_two_logs
140 #rm -rf ${tmp}/files
141
142 find ${tmp}/bacula-restores | wc -l | tee $tmp/bacula-restore-list
143
144 rm -rf ${tmp}/bacula-restores
145 end_test