bd165f8c0b701a00814b381ccaed85774de99f41
[debian/amanda] / installcheck / amstatus.pl
1 # Copyright (c) 2005-2008 Zmanda Inc.  All Rights Reserved.
2 #
3 # This program is free software; you can redistribute it and/or modify it
4 # under the terms of the GNU General Public License version 2 as published
5 # by the Free Software Foundation.
6 #
7 # This program is distributed in the hope that it will be useful, but
8 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
9 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
10 # for more details.
11 #
12 # You should have received a copy of the GNU General Public License along
13 # with this program; if not, write to the Free Software Foundation, Inc.,
14 # 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
15 #
16 # Contact information: Zmanda Inc, 465 S Mathlida Ave, Suite 300
17 # Sunnyvale, CA 94086, USA, or: http://www.zmanda.com
18
19 use Test::More tests => 7;
20
21 use lib "@amperldir@";
22 use Installcheck::Run qw( run run_get );
23 use Amanda::Paths;
24 use Amanda::Constants;
25
26 my $filename="$AMANDA_TMPDIR/installcheck-amdump.1";
27 my $testconf = Installcheck::Run::setup();
28 $testconf->write();
29
30 # read __DATA__ to a hash, keyed by the names following '%%%%'
31 my %logfiles;
32 my $key = undef;
33 while (<DATA>) {
34     if (/^%%%% (.*)/) {
35         $key = $1;
36     } else {
37         $logfiles{$key} .= $_;
38     }
39 }
40
41 sub write_logfile {
42     my ($data) = @_;
43     open(my $fh, ">", $filename) or die("Could not open '$filename' for writing");
44     print $fh $data;
45     close($fh);
46 };
47
48 ## try a few various options with a pretty normal logfile
49
50 write_logfile($logfiles{'normal'});
51
52 ok(run('amstatus', 'TESTCONF', '--file', $filename),
53     "plain amstatus runs without error");
54 like($Installcheck::Run::stdout,
55     qr{clienthost:/some/dir\s*0\s*100k\s*finished\s*\(13:01:53\)},
56     "output is reasonable");
57
58 ok(run('amstatus', 'TESTCONF', '--file', $filename, '--summary'),
59     "amstatus --summary runs without error");
60 unlike($Installcheck::Run::stdout,
61     qr{clienthost:/some/dir\s*0\s*100k\s*finished\s*\(13:01:53\)},
62     "output does not contain the finished dump");
63 like($Installcheck::Run::stdout,
64     qr{taped\s+:\s+1\s+},
65     "output contains summary info");
66
67 ## now test a file with spaces and other funny characters in filenames
68
69 write_logfile($logfiles{'quoted'});
70
71 ok(run('amstatus', 'TESTCONF', '--file', $filename),
72     "amstatus runs without error with quoted disknames");
73 like($Installcheck::Run::stdout,
74     # note that amstatus' output is quoted, so backslashes are doubled
75     qr{clienthost:"C:\\\\Some Dir\\\\"\s*0\s*100k\s*finished\s*\(13:01:53\)},
76     "output is correct");
77
78 unlink($filename);
79
80 __DATA__
81 %%%% normal
82 amdump: start at Wed Jun 18 13:01:47 EDT 2008
83 amdump: datestamp 20080618
84 amdump: starttime 20080618130147
85 amdump: starttime-locale-independent 2008-06-18 13:01:47 EDT
86 planner: pid 4079 executable /path/to/planner version 9.8.7
87 READING CONF INFO...
88 planner: timestamp 20080618130147
89 planner: time 0.000: startup took 0.000 secs
90
91 SENDING FLUSHES...
92 ENDFLUSH
93
94 SETTING UP FOR ESTIMATES...
95 planner: time 0.000: setting up estimates for clienthost:/some/dir
96 clienthost:/some/dir overdue 14049 days for level 0
97 setup_estimate: clienthost:/some/dir: command 0, options: none    last_level -1 next_level0 -14049 level_days 0    getting estimates 0 (-2) -1 (-2) -1 (-2)
98 planner: time 0.000: setting up estimates took 0.000 secs
99
100 GETTING ESTIMATES...
101 driver: pid 4080 executable /path/to/driver version 9.8.7
102 driver: adding holding disk 0 dir /holding size 868352 chunksize 1048576
103 reserving 0 out of 868352 for degraded-mode dumps
104 driver: send-cmd time 0.015 to taper: START-TAPER 20080618130147
105 taper: pid 4084 executable taper version 9.8.7
106 driver: started dumper0 pid 4086
107 driver: send-cmd time 0.031 to dumper0: START 20080618130147
108 planner: time 0.050: got partial result for host clienthost disk /some/dir: 0 -> -2K, -1 -> -2K, -1 -> -2K
109 dumper: pid 4090 executable dumper1 version 9.8.7
110 driver: started dumper1 pid 4090
111 driver: send-cmd time 0.046 to dumper1: START 20080618130147
112 driver: started dumper2 pid 4094
113 driver: send-cmd time 0.048 to dumper2: START 20080618130147
114 driver: started dumper3 pid 4095
115 driver: send-cmd time 0.059 to dumper3: START 20080618130147
116 driver: start time 0.059 inparallel 4 bandwidth 600 diskspace 868352  dir OBSOLETE datestamp 20080618130147 driver: drain-ends tapeq FIRST big-dumpers sssS
117 dumper: pid 4094 executable dumper2 version 9.8.7
118 planner: time 0.088: got partial result for host clienthost disk /some/dir: 0 -> 100K, -1 -> -2K, -1 -> -2K
119 planner: time 0.091: got result for host clienthost disk /some/dir: 0 -> 100K, -1 -> -2K, -1 -> -2K
120 planner: time 0.091: getting estimates took 0.090 secs
121 FAILED QUEUE: empty
122 DONE QUEUE:
123   0: clienthost     /some/dir
124
125 ANALYZING ESTIMATES...
126 pondering clienthost:/some/dir... next_level0 -14049 last_level -1 (due for level 0) (new disk, can't switch to degraded mode)
127   curr level 0 nsize 100 csize 100 total size 208 total_lev0 100 balanced-lev0size 50
128 INITIAL SCHEDULE (size 208):
129   clienthost /some/dir pri 14050 lev 0 nsize 100 csize 100
130
131 DELAYING DUMPS IF NEEDED, total_size 208, tape length 102400 mark 4
132   delay: Total size now 208.
133
134 PROMOTING DUMPS IF NEEDED, total_lev0 100, balanced_size 50...
135 planner: time 0.091: analysis took 0.000 secs
136
137 GENERATING SCHEDULE:
138 --------
139 DUMP clienthost ffffffff9ffeffffffff1f /some/dir 20080618130147 14050 0 1970:1:1:0:0:0 100 100 0 1024
140 --------
141 dumper: pid 4086 executable dumper0 version 9.8.7
142 dumper: pid 4095 executable dumper3 version 9.8.7
143 taper: using label `Conf-001' date `20080618130147'
144 driver: result time 1.312 from taper: TAPER-OK
145 driver: state time 1.312 free kps: 600 space: 868352 taper: idle idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: not-idle
146 driver: interface-state time 1.312 if default: free 600
147 driver: hdisk-state time 1.312 hdisk 0: free 868352 dumpers 0
148 driver: flush size 0
149 driver: started chunker0 pid 4129
150 driver: send-cmd time 1.314 to chunker0: START 20080618130147
151 driver: send-cmd time 1.314 to chunker0: PORT-WRITE 00-00001 /holding/20080618130147/clienthost._some_dir.0 clienthost ffffffff9ffeffffffff1f /some/dir 0 1970:1:1:0:0:0 1048576 GNUTAR 192 |;auth=local;index;
152 chunker: pid 4129 executable chunker0 version 9.8.7
153 driver: result time 1.330 from chunker0: PORT 1487
154 driver: send-cmd time 1.330 to dumper0: PORT-DUMP 00-00001 1487 clienthost ffffffff9ffeffffffff1f /some/dir NODEVICE 0 1970:1:1:0:0:0 GNUTAR X amanda X local |"  <auth>local</auth>\n  <record>YES</record>\n  <index>YES</index>\n"
155 driver: state time 6.408 free kps: 0 space: 868160 taper: idle idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
156 driver: interface-state time 6.408 if default: free 0
157 driver: hdisk-state time 6.408 hdisk 0: free 868160 dumpers 1
158 driver: result time 6.408 from dumper0: DONE 00-00001 100 100 0 "[sec 0.012 kb 100 kps 7915.1 orig-kb 100]"
159 driver: finished-cmd time 6.408 dumper0 dumped clienthost:/some/dir
160 driver: send-cmd time 6.408 to chunker0: DONE 00-00001
161 driver: state time 6.408 free kps: 0 space: 868160 taper: idle idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
162 driver: interface-state time 6.408 if default: free 0
163 driver: hdisk-state time 6.408 hdisk 0: free 868160 dumpers 1
164 driver: result time 6.408 from chunker0: DONE 00-00001 100 "[sec 5.075 kb 100 kps 26.0]"
165 driver: finished-cmd time 6.408 chunker0 chunked clienthost:/some/dir
166 driver: send-cmd time 6.410 to taper: FILE-WRITE 00-00002 /holding/20080618130147/clienthost._some_dir.0 clienthost /some/dir 0 20080618130147 0
167 driver: startaflush: FIRST clienthost /some/dir 132 102400
168 driver: state time 6.410 free kps: 600 space: 868220 taper: writing idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
169 driver: interface-state time 6.410 if default: free 600
170 driver: hdisk-state time 6.410 hdisk 0: free 868220 dumpers 0
171 driver: result time 6.411 from taper: REQUEST-NEW-TAPE 00-00002
172 driver: send-cmd time 6.411 to taper: NEW-TAPE
173 driver: state time 6.412 free kps: 600 space: 868220 taper: writing idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
174 driver: interface-state time 6.412 if default: free 600
175 driver: hdisk-state time 6.412 hdisk 0: free 868220 dumpers 0
176 driver: result time 6.412 from taper: NEW-TAPE 00-00002 Conf-001
177 driver: state time 6.414 free kps: 600 space: 868220 taper: writing idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
178 driver: interface-state time 6.414 if default: free 600
179 driver: hdisk-state time 6.414 hdisk 0: free 868220 dumpers 0
180 driver: result time 6.415 from taper: PARTDONE 00-00002 Conf-001 1 100 "[sec 0.001177 kb 100 kps 84961.767205]"
181 driver: state time 6.415 free kps: 600 space: 868220 taper: writing idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
182 driver: interface-state time 6.415 if default: free 600
183 driver: hdisk-state time 6.415 hdisk 0: free 868220 dumpers 0
184 driver: result time 6.415 from taper: DONE 00-00002 INPUT-GOOD TAPE-GOOD "[sec 0.001177 kb 100 kps 84961.767205]" "" ""
185 driver: finished-cmd time 6.415 taper wrote clienthost:/some/dir
186 driver: state time 6.415 free kps: 600 space: 868352 taper: idle idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
187 driver: interface-state time 6.415 if default: free 600
188 driver: hdisk-state time 6.415 hdisk 0: free 868352 dumpers 0
189 driver: QUITTING time 6.415 telling children to quit
190 driver: send-cmd time 6.415 to dumper0: QUIT
191 driver: send-cmd time 6.415 to dumper1: QUIT
192 driver: send-cmd time 6.417 to dumper2: QUIT
193 driver: send-cmd time 6.417 to dumper3: QUIT
194 driver: send-cmd time 6.418 to taper: QUIT
195 taper: DONE
196 driver: FINISHED time 7.426
197 amdump: end at Wed Jun 18 13:01:55 EDT 2008
198 %%%% quoted
199 amdump: start at Wed Jun 18 13:01:47 EDT 2008
200 amdump: datestamp 20080618
201 amdump: starttime 20080618130147
202 amdump: starttime-locale-independent 2008-06-18 13:01:47 EDT
203 planner: pid 4079 executable /path/to/planner version 9.8.7
204 READING CONF INFO...
205 planner: timestamp 20080618130147
206 planner: time 0.000: startup took 0.000 secs
207
208 SENDING FLUSHES...
209 ENDFLUSH
210
211 SETTING UP FOR ESTIMATES...
212 planner: time 0.000: setting up estimates for clienthost:"C:\\Some Dir\\"
213 clienthost:"C:\\Some Dir\\" overdue 14049 days for level 0
214 setup_estimate: clienthost:"C:\\Some Dir\\": command 0, options: none    last_level -1 next_level0 -14049 level_days 0    getting estimates 0 (-2) -1 (-2) -1 (-2)
215 planner: time 0.000: setting up estimates took 0.000 secs
216
217 GETTING ESTIMATES...
218 driver: pid 4080 executable /path/to/driver version 9.8.7
219 driver: adding holding disk 0 dir /holding size 868352 chunksize 1048576
220 reserving 0 out of 868352 for degraded-mode dumps
221 driver: send-cmd time 0.015 to taper: START-TAPER 20080618130147
222 taper: pid 4084 executable taper version 9.8.7
223 driver: started dumper0 pid 4086
224 driver: send-cmd time 0.031 to dumper0: START 20080618130147
225 planner: time 0.050: got partial result for host clienthost disk "C:\\Some Dir\\": 0 -> -2K, -1 -> -2K, -1 -> -2K
226 dumper: pid 4090 executable dumper1 version 9.8.7
227 driver: started dumper1 pid 4090
228 driver: send-cmd time 0.046 to dumper1: START 20080618130147
229 driver: started dumper2 pid 4094
230 driver: send-cmd time 0.048 to dumper2: START 20080618130147
231 driver: started dumper3 pid 4095
232 driver: send-cmd time 0.059 to dumper3: START 20080618130147
233 driver: start time 0.059 inparallel 4 bandwidth 600 diskspace 868352  dir OBSOLETE datestamp 20080618130147 driver: drain-ends tapeq FIRST big-dumpers sssS
234 dumper: pid 4094 executable dumper2 version 9.8.7
235 planner: time 0.088: got partial result for host clienthost disk "C:\\Some Dir\\": 0 -> 100K, -1 -> -2K, -1 -> -2K
236 planner: time 0.091: got result for host clienthost disk "C:\\Some Dir\\": 0 -> 100K, -1 -> -2K, -1 -> -2K
237 planner: time 0.091: getting estimates took 0.090 secs
238 FAILED QUEUE: empty
239 DONE QUEUE:
240   0: clienthost     "C:\\Some Dir\\"
241
242 ANALYZING ESTIMATES...
243 pondering clienthost:"C:\\Some Dir\\"... next_level0 -14049 last_level -1 (due for level 0) (new disk, can't switch to degraded mode)
244   curr level 0 nsize 100 csize 100 total size 208 total_lev0 100 balanced-lev0size 50
245 INITIAL SCHEDULE (size 208):
246   clienthost "C:\\Some Dir\\" pri 14050 lev 0 nsize 100 csize 100
247
248 DELAYING DUMPS IF NEEDED, total_size 208, tape length 102400 mark 4
249   delay: Total size now 208.
250
251 PROMOTING DUMPS IF NEEDED, total_lev0 100, balanced_size 50...
252 planner: time 0.091: analysis took 0.000 secs
253
254 GENERATING SCHEDULE:
255 --------
256 DUMP clienthost ffffffff9ffeffffffff1f "C:\\Some Dir\\" 20080618130147 14050 0 1970:1:1:0:0:0 100 100 0 1024
257 --------
258 dumper: pid 4086 executable dumper0 version 9.8.7
259 dumper: pid 4095 executable dumper3 version 9.8.7
260 taper: using label `Conf-001' date `20080618130147'
261 driver: result time 1.312 from taper: TAPER-OK
262 driver: state time 1.312 free kps: 600 space: 868352 taper: idle idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: not-idle
263 driver: interface-state time 1.312 if default: free 600
264 driver: hdisk-state time 1.312 hdisk 0: free 868352 dumpers 0
265 driver: flush size 0
266 driver: started chunker0 pid 4129
267 driver: send-cmd time 1.314 to chunker0: START 20080618130147
268 driver: send-cmd time 1.314 to chunker0: PORT-WRITE 00-00001 /holding/20080618130147/clienthost._some_dir.0 clienthost ffffffff9ffeffffffff1f "C:\\Some Dir\\" 0 1970:1:1:0:0:0 1048576 GNUTAR 192 |;auth=local;index;
269 chunker: pid 4129 executable chunker0 version 9.8.7
270 driver: result time 1.330 from chunker0: PORT 1487
271 driver: send-cmd time 1.330 to dumper0: PORT-DUMP 00-00001 1487 clienthost ffffffff9ffeffffffff1f "C:\\Some Dir\\" NODEVICE 0 1970:1:1:0:0:0 GNUTAR X amanda X local |"  <auth>local</auth>\n  <record>YES</record>\n  <index>YES</index>\n"
272 driver: state time 6.408 free kps: 0 space: 868160 taper: idle idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
273 driver: interface-state time 6.408 if default: free 0
274 driver: hdisk-state time 6.408 hdisk 0: free 868160 dumpers 1
275 driver: result time 6.408 from dumper0: DONE 00-00001 100 100 0 "[sec 0.012 kb 100 kps 7915.1 orig-kb 100]"
276 driver: finished-cmd time 6.408 dumper0 dumped clienthost:"C:\\Some Dir\\"
277 driver: send-cmd time 6.408 to chunker0: DONE 00-00001
278 driver: state time 6.408 free kps: 0 space: 868160 taper: idle idle-dumpers: 3 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
279 driver: interface-state time 6.408 if default: free 0
280 driver: hdisk-state time 6.408 hdisk 0: free 868160 dumpers 1
281 driver: result time 6.408 from chunker0: DONE 00-00001 100 "[sec 5.075 kb 100 kps 26.0]"
282 driver: finished-cmd time 6.408 chunker0 chunked clienthost:"C:\\Some Dir\\"
283 driver: send-cmd time 6.410 to taper: FILE-WRITE 00-00002 /holding/20080618130147/clienthost._some_dir.0 clienthost "C:\\Some Dir\\" 0 20080618130147 0
284 driver: startaflush: FIRST clienthost "C:\\Some Dir\\" 132 102400
285 driver: state time 6.410 free kps: 600 space: 868220 taper: writing idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
286 driver: interface-state time 6.410 if default: free 600
287 driver: hdisk-state time 6.410 hdisk 0: free 868220 dumpers 0
288 driver: result time 6.411 from taper: REQUEST-NEW-TAPE 00-00002
289 driver: send-cmd time 6.411 to taper: NEW-TAPE
290 driver: state time 6.412 free kps: 600 space: 868220 taper: writing idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
291 driver: interface-state time 6.412 if default: free 600
292 driver: hdisk-state time 6.412 hdisk 0: free 868220 dumpers 0
293 driver: result time 6.412 from taper: NEW-TAPE 00-00002 Conf-001
294 driver: state time 6.414 free kps: 600 space: 868220 taper: writing idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
295 driver: interface-state time 6.414 if default: free 600
296 driver: hdisk-state time 6.414 hdisk 0: free 868220 dumpers 0
297 driver: result time 6.415 from taper: PARTDONE 00-00002 Conf-001 1 100 "[sec 0.001177 kb 100 kps 84961.767205]"
298 driver: state time 6.415 free kps: 600 space: 868220 taper: writing idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
299 driver: interface-state time 6.415 if default: free 600
300 driver: hdisk-state time 6.415 hdisk 0: free 868220 dumpers 0
301 driver: result time 6.415 from taper: DONE 00-00002 INPUT-GOOD TAPE-GOOD "[sec 0.001177 kb 100 kps 84961.767205]" "" ""
302 driver: finished-cmd time 6.415 taper wrote clienthost:"C:\\Some Dir\\"
303 driver: state time 6.415 free kps: 600 space: 868352 taper: idle idle-dumpers: 4 qlen tapeq: 0 runq: 0 roomq: 0 wakeup: 0 driver-idle: no-dumpers
304 driver: interface-state time 6.415 if default: free 600
305 driver: hdisk-state time 6.415 hdisk 0: free 868352 dumpers 0
306 driver: QUITTING time 6.415 telling children to quit
307 driver: send-cmd time 6.415 to dumper0: QUIT
308 driver: send-cmd time 6.415 to dumper1: QUIT
309 driver: send-cmd time 6.417 to dumper2: QUIT
310 driver: send-cmd time 6.417 to dumper3: QUIT
311 driver: send-cmd time 6.418 to taper: QUIT
312 taper: DONE
313 driver: FINISHED time 7.426
314 amdump: end at Wed Jun 18 13:01:55 EDT 2008