Imported Upstream version 3.3.3
[debian/amanda] / installcheck / Amanda_Curinfo.pl
1 # Copyright (c) 2009-2012 Zmanda, Inc.  All Rights Reserved.
2 #
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful, but
9 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
10 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
11 # for more details.
12 #
13 # You should have received a copy of the GNU General Public License along
14 # with this program; if not, write to the Free Software Foundation, Inc.,
15 # 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # Contact information: Zmanda Inc, 465 S. Mathilda Ave., Suite 300
18 # Sunnyvale, CA 94086, USA, or: http://www.zmanda.com
19
20 use Test::More tests => 18;
21 use strict;
22 use warnings;
23
24 use File::Path qw(mkpath);
25 use Data::Dumper;
26
27 use lib "@amperldir@";
28 use Installcheck::Config;
29 use Amanda::Config qw( :init :getconf config_dir_relative );
30 use Amanda::Util qw( slurp burp sanitise_filename );
31
32 use Amanda::Curinfo;
33 use Amanda::Curinfo::Info;
34
35 my $use_diff;
36
37 BEGIN {
38     eval "use Text::Diff;";
39     $use_diff = !$@;
40 }
41
42 my $testconf = Installcheck::Config->new();
43 $testconf->write();
44
45 my $infodir = "$Installcheck::TMP/infodir";
46
47 config_init( $CONFIG_INIT_EXPLICIT_NAME, "TESTCONF" ) == $CFGERR_OK
48   or die("config_init failed");
49
50 my $data = <<EOF;
51 version: 0
52 command: 0
53 full-rate: 2974.060606 2886.529412 2973.878788
54 full-comp: 0.471483 0.471497 0.471477
55 incr-rate: 27.800000 3062.406250 1.000000
56 incr-comp: 0.133333 0.133333 0.133333
57 stats: 0 208160 98144 33 1211438831 16 S3012
58 stats: 1 30 4 0 1212380683 8 S3023
59 last_level: 1 11
60 history: 1 30 4 1212380683 0
61 history: 1 30 4 1212294141 0
62 history: 1 30 4 1212207722 0
63 history: 1 30 4 1212121208 0
64 history: 1 30 4 1212034786 0
65 history: 1 30 4 1211948729 0
66 history: 1 30 4 1211862004 0
67 history: 1 30 4 1211775583 0
68 history: 1 30 4 1211690046 0
69 history: 1 30 4 1211603671 0
70 history: 1 30 4 1211526232 0
71 history: 0 208160 98144 1211438831 33
72 history: 1 50 5 1211344512 0
73 history: 1 30 4 1210912587 0
74 history: 1 30 4 1210826040 0
75 history: 1 30 4 1210739734 0
76 history: 1 30 4 1210653066 0
77 history: 1 30 4 1210567105 0
78 history: 1 30 4 1210480489 0
79 history: 1 30 4 1210393557 0
80 history: 1 30 4 1210307156 0
81 history: 1 30 4 1210220759 0
82 history: 1 30 4 1210134427 0
83 history: 1 30 4 1210047948 0
84 history: 1 30 4 1209961521 0
85 history: 1 30 4 1209875114 0
86 history: 1 30 4 1209788730 0
87 history: 1 30 4 1209702327 0
88 history: 1 30 4 1209615918 0
89 history: 1 30 4 1209529659 0
90 history: 1 30 4 1209443026 0
91 history: 1 30 4 1209356534 0
92 history: 1 30 4 1209270139 0
93 history: 1 30 4 1209183732 0
94 history: 1 30 4 1209097323 0
95 history: 1 30 4 1209010914 0
96 history: 1 30 4 1208924687 0
97 history: 1 30 4 1208838244 0
98 history: 1 30 4 1208751683 0
99 history: 1 30 4 1208665357 0
100 history: 0 208150 98142 1208579385 34
101 history: 1 50 10 1208492851 0
102 history: 1 50 10 1208406237 0
103 history: 1 50 10 1208319724 0
104 history: 1 50 10 1208233394 0
105 history: 1 50 10 1208146982 0
106 history: 1 50 10 1208060529 0
107 history: 1 50 10 1207974095 0
108 history: 1 50 10 1207887693 0
109 history: 1 50 10 1207801290 0
110 history: 1 50 10 1207714857 0
111 history: 1 50 10 1207628549 0
112 history: 1 50 10 1207541982 0
113 history: 1 50 10 1207455648 0
114 history: 1 50 10 1207369359 0
115 history: 1 50 10 1207282921 0
116 history: 1 50 10 1207196370 0
117 history: 1 50 10 1207109992 0
118 history: 1 50 10 1207023639 0
119 history: 1 50 10 1206937266 0
120 history: 1 50 10 1206850809 0
121 history: 1 50 10 1206764417 0
122 history: 1 50 10 1206678095 0
123 history: 1 50 10 1206591577 0
124 history: 1 50 10 1206505188 0
125 history: 1 50 10 1206418784 0
126 history: 1 30 4 1206332424 0
127 history: 1 30 4 1206245966 0
128 history: 1 30 4 1206159612 0
129 history: 0 208150 98138 1206073398 33
130 history: 1 70 11 1205986945 0
131 history: 1 70 11 1205900387 0
132 history: 1 70 11 1205814007 0
133 history: 1 70 11 1205727544 0
134 history: 1 70 11 1205641330 0
135 history: 1 70 11 1205554904 0
136 history: 1 70 11 1205468423 0
137 history: 1 70 11 1205381996 0
138 history: 1 70 11 1205295616 0
139 history: 1 70 11 1205209178 0
140 history: 1 70 11 1205122964 0
141 history: 1 70 11 1205039969 0
142 history: 1 70 11 1204953604 0
143 history: 1 70 11 1204867108 0
144 history: 1 70 11 1204780854 0
145 history: 1 70 11 1204694432 0
146 history: 1 70 11 1204608080 0
147 history: 1 70 11 1204521528 0
148 history: 1 30 4 1204435294 0
149 history: 1 30 4 1204348825 0
150 history: 1 30 4 1204176062 0
151 history: 1 30 4 1204003405 0
152 history: 1 30 4 1203916794 0
153 history: 1 30 4 1203830409 0
154 history: 1 30 4 1203744032 0
155 history: 1 30 4 1203657632 0
156 history: 0 208120 98130 1203571350 33
157 history: 2 220 139 1203312046 0
158 history: 2 220 139 1203139220 0
159 history: 2 220 139 1203053015 0
160 //
161 EOF
162
163 ## set up the temporary infofile to read from
164 my $tmp_infofile = "$Installcheck::TMP/temporary-infofile";
165 burp $tmp_infofile, $data;
166
167 my $host   = "fakehost";
168 my $disk   = "/home/fakeuser/disk";
169 my $host_q = sanitise_filename($host);
170 my $disk_q = sanitise_filename($disk);
171
172 my $curinfo_file = "$infodir/$host_q/$disk_q/info";
173
174 ## start running tests
175 ok(my $ci = Amanda::Curinfo->new($infodir),
176     "create the Amanda::Curinfo object");
177
178 is_deeply(
179     $ci,
180     bless({ 'infodir' => $infodir }, 'Amanda::Curinfo'),
181     "Amanda::Curinfo object check"
182 );
183
184 ok(my $info = Amanda::Curinfo::Info->new($tmp_infofile),
185     "create the Amanda::Curinfo::Info object");
186 ok($ci->put_info($host, $disk, $info),
187     "test writing the Info object to the Curinfo database");
188 ok(-f $curinfo_file, "Info object installed in the correct location");
189
190 ## re-load Amanda::Curinfo::Info and check each field separately
191
192 undef $info;
193 ok($info = $ci->get_info($host, $disk),
194     "Amanda::Curinfo::Info constructor check");
195
196 ## Test components of Amanda::Curinfo::Info separately
197
198 is( $info->{command}, "0", "Amanda::Curinfo::Info->command check" );
199
200 is_deeply(
201     $info->{incr},
202     bless(
203         {
204             'rate' => [ '27.800000', '3062.406250', '1.000000' ],
205             'comp' => [ '0.133333',  '0.133333',    '0.133333' ]
206         },
207         'Amanda::Curinfo::Perf'
208     ),
209     'Amanda::Curinfo::Perf ($info->{incr}) check'
210 );
211
212 is_deeply(
213     $info->{full},
214     bless(
215         {
216             'rate' => [ '2974.060606', '2886.529412', '2973.878788' ],
217             'comp' => [ '0.471483',    '0.471497',    '0.471477' ]
218         },
219         'Amanda::Curinfo::Perf'
220     ),
221     'Amanda::Curinfo::Perf ($info->{full}) check'
222 );
223
224 is_deeply(
225     $info->{inf},
226     [
227         bless(
228             {
229                 'level'   => '0',
230                 'date'    => '1211438831',
231                 'csize'   => '98144',
232                 'label'   => 'S3012',
233                 'filenum' => '16',
234                 'secs'    => '33',
235                 'size'    => '208160'
236             },
237             'Amanda::Curinfo::Stats'
238         ),
239         bless(
240             {
241                 'level'   => '1',
242                 'date'    => '1212380683',
243                 'csize'   => '4',
244                 'label'   => 'S3023',
245                 'filenum' => '8',
246                 'secs'    => '0',
247                 'size'    => '30'
248             },
249             'Amanda::Curinfo::Stats'
250         )
251     ],
252     'Amanda::Curinfo::Stats ($info->{inf}) check'
253 );
254
255 is_deeply(
256     $info->{history},
257     [
258         bless(
259             {
260                 'level' => '1',
261                 'date'  => '1212380683',
262                 'csize' => '4',
263                 'secs'  => '0',
264                 'size'  => '30'
265             },
266             'Amanda::Curinfo::History'
267         ),
268         bless(
269             {
270                 'level' => '1',
271                 'date'  => '1212294141',
272                 'csize' => '4',
273                 'secs'  => '0',
274                 'size'  => '30'
275             },
276             'Amanda::Curinfo::History'
277         ),
278         bless(
279             {
280                 'level' => '1',
281                 'date'  => '1212207722',
282                 'csize' => '4',
283                 'secs'  => '0',
284                 'size'  => '30'
285             },
286             'Amanda::Curinfo::History'
287         ),
288         bless(
289             {
290                 'level' => '1',
291                 'date'  => '1212121208',
292                 'csize' => '4',
293                 'secs'  => '0',
294                 'size'  => '30'
295             },
296             'Amanda::Curinfo::History'
297         ),
298         bless(
299             {
300                 'level' => '1',
301                 'date'  => '1212034786',
302                 'csize' => '4',
303                 'secs'  => '0',
304                 'size'  => '30'
305             },
306             'Amanda::Curinfo::History'
307         ),
308         bless(
309             {
310                 'level' => '1',
311                 'date'  => '1211948729',
312                 'csize' => '4',
313                 'secs'  => '0',
314                 'size'  => '30'
315             },
316             'Amanda::Curinfo::History'
317         ),
318         bless(
319             {
320                 'level' => '1',
321                 'date'  => '1211862004',
322                 'csize' => '4',
323                 'secs'  => '0',
324                 'size'  => '30'
325             },
326             'Amanda::Curinfo::History'
327         ),
328         bless(
329             {
330                 'level' => '1',
331                 'date'  => '1211775583',
332                 'csize' => '4',
333                 'secs'  => '0',
334                 'size'  => '30'
335             },
336             'Amanda::Curinfo::History'
337         ),
338         bless(
339             {
340                 'level' => '1',
341                 'date'  => '1211690046',
342                 'csize' => '4',
343                 'secs'  => '0',
344                 'size'  => '30'
345             },
346             'Amanda::Curinfo::History'
347         ),
348         bless(
349             {
350                 'level' => '1',
351                 'date'  => '1211603671',
352                 'csize' => '4',
353                 'secs'  => '0',
354                 'size'  => '30'
355             },
356             'Amanda::Curinfo::History'
357         ),
358         bless(
359             {
360                 'level' => '1',
361                 'date'  => '1211526232',
362                 'csize' => '4',
363                 'secs'  => '0',
364                 'size'  => '30'
365             },
366             'Amanda::Curinfo::History'
367         ),
368         bless(
369             {
370                 'level' => '0',
371                 'date'  => '1211438831',
372                 'csize' => '98144',
373                 'secs'  => '33',
374                 'size'  => '208160'
375             },
376             'Amanda::Curinfo::History'
377         ),
378         bless(
379             {
380                 'level' => '1',
381                 'date'  => '1211344512',
382                 'csize' => '5',
383                 'secs'  => '0',
384                 'size'  => '50'
385             },
386             'Amanda::Curinfo::History'
387         ),
388         bless(
389             {
390                 'level' => '1',
391                 'date'  => '1210912587',
392                 'csize' => '4',
393                 'secs'  => '0',
394                 'size'  => '30'
395             },
396             'Amanda::Curinfo::History'
397         ),
398         bless(
399             {
400                 'level' => '1',
401                 'date'  => '1210826040',
402                 'csize' => '4',
403                 'secs'  => '0',
404                 'size'  => '30'
405             },
406             'Amanda::Curinfo::History'
407         ),
408         bless(
409             {
410                 'level' => '1',
411                 'date'  => '1210739734',
412                 'csize' => '4',
413                 'secs'  => '0',
414                 'size'  => '30'
415             },
416             'Amanda::Curinfo::History'
417         ),
418         bless(
419             {
420                 'level' => '1',
421                 'date'  => '1210653066',
422                 'csize' => '4',
423                 'secs'  => '0',
424                 'size'  => '30'
425             },
426             'Amanda::Curinfo::History'
427         ),
428         bless(
429             {
430                 'level' => '1',
431                 'date'  => '1210567105',
432                 'csize' => '4',
433                 'secs'  => '0',
434                 'size'  => '30'
435             },
436             'Amanda::Curinfo::History'
437         ),
438         bless(
439             {
440                 'level' => '1',
441                 'date'  => '1210480489',
442                 'csize' => '4',
443                 'secs'  => '0',
444                 'size'  => '30'
445             },
446             'Amanda::Curinfo::History'
447         ),
448         bless(
449             {
450                 'level' => '1',
451                 'date'  => '1210393557',
452                 'csize' => '4',
453                 'secs'  => '0',
454                 'size'  => '30'
455             },
456             'Amanda::Curinfo::History'
457         ),
458         bless(
459             {
460                 'level' => '1',
461                 'date'  => '1210307156',
462                 'csize' => '4',
463                 'secs'  => '0',
464                 'size'  => '30'
465             },
466             'Amanda::Curinfo::History'
467         ),
468         bless(
469             {
470                 'level' => '1',
471                 'date'  => '1210220759',
472                 'csize' => '4',
473                 'secs'  => '0',
474                 'size'  => '30'
475             },
476             'Amanda::Curinfo::History'
477         ),
478         bless(
479             {
480                 'level' => '1',
481                 'date'  => '1210134427',
482                 'csize' => '4',
483                 'secs'  => '0',
484                 'size'  => '30'
485             },
486             'Amanda::Curinfo::History'
487         ),
488         bless(
489             {
490                 'level' => '1',
491                 'date'  => '1210047948',
492                 'csize' => '4',
493                 'secs'  => '0',
494                 'size'  => '30'
495             },
496             'Amanda::Curinfo::History'
497         ),
498         bless(
499             {
500                 'level' => '1',
501                 'date'  => '1209961521',
502                 'csize' => '4',
503                 'secs'  => '0',
504                 'size'  => '30'
505             },
506             'Amanda::Curinfo::History'
507         ),
508         bless(
509             {
510                 'level' => '1',
511                 'date'  => '1209875114',
512                 'csize' => '4',
513                 'secs'  => '0',
514                 'size'  => '30'
515             },
516             'Amanda::Curinfo::History'
517         ),
518         bless(
519             {
520                 'level' => '1',
521                 'date'  => '1209788730',
522                 'csize' => '4',
523                 'secs'  => '0',
524                 'size'  => '30'
525             },
526             'Amanda::Curinfo::History'
527         ),
528         bless(
529             {
530                 'level' => '1',
531                 'date'  => '1209702327',
532                 'csize' => '4',
533                 'secs'  => '0',
534                 'size'  => '30'
535             },
536             'Amanda::Curinfo::History'
537         ),
538         bless(
539             {
540                 'level' => '1',
541                 'date'  => '1209615918',
542                 'csize' => '4',
543                 'secs'  => '0',
544                 'size'  => '30'
545             },
546             'Amanda::Curinfo::History'
547         ),
548         bless(
549             {
550                 'level' => '1',
551                 'date'  => '1209529659',
552                 'csize' => '4',
553                 'secs'  => '0',
554                 'size'  => '30'
555             },
556             'Amanda::Curinfo::History'
557         ),
558         bless(
559             {
560                 'level' => '1',
561                 'date'  => '1209443026',
562                 'csize' => '4',
563                 'secs'  => '0',
564                 'size'  => '30'
565             },
566             'Amanda::Curinfo::History'
567         ),
568         bless(
569             {
570                 'level' => '1',
571                 'date'  => '1209356534',
572                 'csize' => '4',
573                 'secs'  => '0',
574                 'size'  => '30'
575             },
576             'Amanda::Curinfo::History'
577         ),
578         bless(
579             {
580                 'level' => '1',
581                 'date'  => '1209270139',
582                 'csize' => '4',
583                 'secs'  => '0',
584                 'size'  => '30'
585             },
586             'Amanda::Curinfo::History'
587         ),
588         bless(
589             {
590                 'level' => '1',
591                 'date'  => '1209183732',
592                 'csize' => '4',
593                 'secs'  => '0',
594                 'size'  => '30'
595             },
596             'Amanda::Curinfo::History'
597         ),
598         bless(
599             {
600                 'level' => '1',
601                 'date'  => '1209097323',
602                 'csize' => '4',
603                 'secs'  => '0',
604                 'size'  => '30'
605             },
606             'Amanda::Curinfo::History'
607         ),
608         bless(
609             {
610                 'level' => '1',
611                 'date'  => '1209010914',
612                 'csize' => '4',
613                 'secs'  => '0',
614                 'size'  => '30'
615             },
616             'Amanda::Curinfo::History'
617         ),
618         bless(
619             {
620                 'level' => '1',
621                 'date'  => '1208924687',
622                 'csize' => '4',
623                 'secs'  => '0',
624                 'size'  => '30'
625             },
626             'Amanda::Curinfo::History'
627         ),
628         bless(
629             {
630                 'level' => '1',
631                 'date'  => '1208838244',
632                 'csize' => '4',
633                 'secs'  => '0',
634                 'size'  => '30'
635             },
636             'Amanda::Curinfo::History'
637         ),
638         bless(
639             {
640                 'level' => '1',
641                 'date'  => '1208751683',
642                 'csize' => '4',
643                 'secs'  => '0',
644                 'size'  => '30'
645             },
646             'Amanda::Curinfo::History'
647         ),
648         bless(
649             {
650                 'level' => '1',
651                 'date'  => '1208665357',
652                 'csize' => '4',
653                 'secs'  => '0',
654                 'size'  => '30'
655             },
656             'Amanda::Curinfo::History'
657         ),
658         bless(
659             {
660                 'level' => '0',
661                 'date'  => '1208579385',
662                 'csize' => '98142',
663                 'secs'  => '34',
664                 'size'  => '208150'
665             },
666             'Amanda::Curinfo::History'
667         ),
668         bless(
669             {
670                 'level' => '1',
671                 'date'  => '1208492851',
672                 'csize' => '10',
673                 'secs'  => '0',
674                 'size'  => '50'
675             },
676             'Amanda::Curinfo::History'
677         ),
678         bless(
679             {
680                 'level' => '1',
681                 'date'  => '1208406237',
682                 'csize' => '10',
683                 'secs'  => '0',
684                 'size'  => '50'
685             },
686             'Amanda::Curinfo::History'
687         ),
688         bless(
689             {
690                 'level' => '1',
691                 'date'  => '1208319724',
692                 'csize' => '10',
693                 'secs'  => '0',
694                 'size'  => '50'
695             },
696             'Amanda::Curinfo::History'
697         ),
698         bless(
699             {
700                 'level' => '1',
701                 'date'  => '1208233394',
702                 'csize' => '10',
703                 'secs'  => '0',
704                 'size'  => '50'
705             },
706             'Amanda::Curinfo::History'
707         ),
708         bless(
709             {
710                 'level' => '1',
711                 'date'  => '1208146982',
712                 'csize' => '10',
713                 'secs'  => '0',
714                 'size'  => '50'
715             },
716             'Amanda::Curinfo::History'
717         ),
718         bless(
719             {
720                 'level' => '1',
721                 'date'  => '1208060529',
722                 'csize' => '10',
723                 'secs'  => '0',
724                 'size'  => '50'
725             },
726             'Amanda::Curinfo::History'
727         ),
728         bless(
729             {
730                 'level' => '1',
731                 'date'  => '1207974095',
732                 'csize' => '10',
733                 'secs'  => '0',
734                 'size'  => '50'
735             },
736             'Amanda::Curinfo::History'
737         ),
738         bless(
739             {
740                 'level' => '1',
741                 'date'  => '1207887693',
742                 'csize' => '10',
743                 'secs'  => '0',
744                 'size'  => '50'
745             },
746             'Amanda::Curinfo::History'
747         ),
748         bless(
749             {
750                 'level' => '1',
751                 'date'  => '1207801290',
752                 'csize' => '10',
753                 'secs'  => '0',
754                 'size'  => '50'
755             },
756             'Amanda::Curinfo::History'
757         ),
758         bless(
759             {
760                 'level' => '1',
761                 'date'  => '1207714857',
762                 'csize' => '10',
763                 'secs'  => '0',
764                 'size'  => '50'
765             },
766             'Amanda::Curinfo::History'
767         ),
768         bless(
769             {
770                 'level' => '1',
771                 'date'  => '1207628549',
772                 'csize' => '10',
773                 'secs'  => '0',
774                 'size'  => '50'
775             },
776             'Amanda::Curinfo::History'
777         ),
778         bless(
779             {
780                 'level' => '1',
781                 'date'  => '1207541982',
782                 'csize' => '10',
783                 'secs'  => '0',
784                 'size'  => '50'
785             },
786             'Amanda::Curinfo::History'
787         ),
788         bless(
789             {
790                 'level' => '1',
791                 'date'  => '1207455648',
792                 'csize' => '10',
793                 'secs'  => '0',
794                 'size'  => '50'
795             },
796             'Amanda::Curinfo::History'
797         ),
798         bless(
799             {
800                 'level' => '1',
801                 'date'  => '1207369359',
802                 'csize' => '10',
803                 'secs'  => '0',
804                 'size'  => '50'
805             },
806             'Amanda::Curinfo::History'
807         ),
808         bless(
809             {
810                 'level' => '1',
811                 'date'  => '1207282921',
812                 'csize' => '10',
813                 'secs'  => '0',
814                 'size'  => '50'
815             },
816             'Amanda::Curinfo::History'
817         ),
818         bless(
819             {
820                 'level' => '1',
821                 'date'  => '1207196370',
822                 'csize' => '10',
823                 'secs'  => '0',
824                 'size'  => '50'
825             },
826             'Amanda::Curinfo::History'
827         ),
828         bless(
829             {
830                 'level' => '1',
831                 'date'  => '1207109992',
832                 'csize' => '10',
833                 'secs'  => '0',
834                 'size'  => '50'
835             },
836             'Amanda::Curinfo::History'
837         ),
838         bless(
839             {
840                 'level' => '1',
841                 'date'  => '1207023639',
842                 'csize' => '10',
843                 'secs'  => '0',
844                 'size'  => '50'
845             },
846             'Amanda::Curinfo::History'
847         ),
848         bless(
849             {
850                 'level' => '1',
851                 'date'  => '1206937266',
852                 'csize' => '10',
853                 'secs'  => '0',
854                 'size'  => '50'
855             },
856             'Amanda::Curinfo::History'
857         ),
858         bless(
859             {
860                 'level' => '1',
861                 'date'  => '1206850809',
862                 'csize' => '10',
863                 'secs'  => '0',
864                 'size'  => '50'
865             },
866             'Amanda::Curinfo::History'
867         ),
868         bless(
869             {
870                 'level' => '1',
871                 'date'  => '1206764417',
872                 'csize' => '10',
873                 'secs'  => '0',
874                 'size'  => '50'
875             },
876             'Amanda::Curinfo::History'
877         ),
878         bless(
879             {
880                 'level' => '1',
881                 'date'  => '1206678095',
882                 'csize' => '10',
883                 'secs'  => '0',
884                 'size'  => '50'
885             },
886             'Amanda::Curinfo::History'
887         ),
888         bless(
889             {
890                 'level' => '1',
891                 'date'  => '1206591577',
892                 'csize' => '10',
893                 'secs'  => '0',
894                 'size'  => '50'
895             },
896             'Amanda::Curinfo::History'
897         ),
898         bless(
899             {
900                 'level' => '1',
901                 'date'  => '1206505188',
902                 'csize' => '10',
903                 'secs'  => '0',
904                 'size'  => '50'
905             },
906             'Amanda::Curinfo::History'
907         ),
908         bless(
909             {
910                 'level' => '1',
911                 'date'  => '1206418784',
912                 'csize' => '10',
913                 'secs'  => '0',
914                 'size'  => '50'
915             },
916             'Amanda::Curinfo::History'
917         ),
918         bless(
919             {
920                 'level' => '1',
921                 'date'  => '1206332424',
922                 'csize' => '4',
923                 'secs'  => '0',
924                 'size'  => '30'
925             },
926             'Amanda::Curinfo::History'
927         ),
928         bless(
929             {
930                 'level' => '1',
931                 'date'  => '1206245966',
932                 'csize' => '4',
933                 'secs'  => '0',
934                 'size'  => '30'
935             },
936             'Amanda::Curinfo::History'
937         ),
938         bless(
939             {
940                 'level' => '1',
941                 'date'  => '1206159612',
942                 'csize' => '4',
943                 'secs'  => '0',
944                 'size'  => '30'
945             },
946             'Amanda::Curinfo::History'
947         ),
948         bless(
949             {
950                 'level' => '0',
951                 'date'  => '1206073398',
952                 'csize' => '98138',
953                 'secs'  => '33',
954                 'size'  => '208150'
955             },
956             'Amanda::Curinfo::History'
957         ),
958         bless(
959             {
960                 'level' => '1',
961                 'date'  => '1205986945',
962                 'csize' => '11',
963                 'secs'  => '0',
964                 'size'  => '70'
965             },
966             'Amanda::Curinfo::History'
967         ),
968         bless(
969             {
970                 'level' => '1',
971                 'date'  => '1205900387',
972                 'csize' => '11',
973                 'secs'  => '0',
974                 'size'  => '70'
975             },
976             'Amanda::Curinfo::History'
977         ),
978         bless(
979             {
980                 'level' => '1',
981                 'date'  => '1205814007',
982                 'csize' => '11',
983                 'secs'  => '0',
984                 'size'  => '70'
985             },
986             'Amanda::Curinfo::History'
987         ),
988         bless(
989             {
990                 'level' => '1',
991                 'date'  => '1205727544',
992                 'csize' => '11',
993                 'secs'  => '0',
994                 'size'  => '70'
995             },
996             'Amanda::Curinfo::History'
997         ),
998         bless(
999             {
1000                 'level' => '1',
1001                 'date'  => '1205641330',
1002                 'csize' => '11',
1003                 'secs'  => '0',
1004                 'size'  => '70'
1005             },
1006             'Amanda::Curinfo::History'
1007         ),
1008         bless(
1009             {
1010                 'level' => '1',
1011                 'date'  => '1205554904',
1012                 'csize' => '11',
1013                 'secs'  => '0',
1014                 'size'  => '70'
1015             },
1016             'Amanda::Curinfo::History'
1017         ),
1018         bless(
1019             {
1020                 'level' => '1',
1021                 'date'  => '1205468423',
1022                 'csize' => '11',
1023                 'secs'  => '0',
1024                 'size'  => '70'
1025             },
1026             'Amanda::Curinfo::History'
1027         ),
1028         bless(
1029             {
1030                 'level' => '1',
1031                 'date'  => '1205381996',
1032                 'csize' => '11',
1033                 'secs'  => '0',
1034                 'size'  => '70'
1035             },
1036             'Amanda::Curinfo::History'
1037         ),
1038         bless(
1039             {
1040                 'level' => '1',
1041                 'date'  => '1205295616',
1042                 'csize' => '11',
1043                 'secs'  => '0',
1044                 'size'  => '70'
1045             },
1046             'Amanda::Curinfo::History'
1047         ),
1048         bless(
1049             {
1050                 'level' => '1',
1051                 'date'  => '1205209178',
1052                 'csize' => '11',
1053                 'secs'  => '0',
1054                 'size'  => '70'
1055             },
1056             'Amanda::Curinfo::History'
1057         ),
1058         bless(
1059             {
1060                 'level' => '1',
1061                 'date'  => '1205122964',
1062                 'csize' => '11',
1063                 'secs'  => '0',
1064                 'size'  => '70'
1065             },
1066             'Amanda::Curinfo::History'
1067         ),
1068         bless(
1069             {
1070                 'level' => '1',
1071                 'date'  => '1205039969',
1072                 'csize' => '11',
1073                 'secs'  => '0',
1074                 'size'  => '70'
1075             },
1076             'Amanda::Curinfo::History'
1077         ),
1078         bless(
1079             {
1080                 'level' => '1',
1081                 'date'  => '1204953604',
1082                 'csize' => '11',
1083                 'secs'  => '0',
1084                 'size'  => '70'
1085             },
1086             'Amanda::Curinfo::History'
1087         ),
1088         bless(
1089             {
1090                 'level' => '1',
1091                 'date'  => '1204867108',
1092                 'csize' => '11',
1093                 'secs'  => '0',
1094                 'size'  => '70'
1095             },
1096             'Amanda::Curinfo::History'
1097         ),
1098         bless(
1099             {
1100                 'level' => '1',
1101                 'date'  => '1204780854',
1102                 'csize' => '11',
1103                 'secs'  => '0',
1104                 'size'  => '70'
1105             },
1106             'Amanda::Curinfo::History'
1107         ),
1108         bless(
1109             {
1110                 'level' => '1',
1111                 'date'  => '1204694432',
1112                 'csize' => '11',
1113                 'secs'  => '0',
1114                 'size'  => '70'
1115             },
1116             'Amanda::Curinfo::History'
1117         ),
1118         bless(
1119             {
1120                 'level' => '1',
1121                 'date'  => '1204608080',
1122                 'csize' => '11',
1123                 'secs'  => '0',
1124                 'size'  => '70'
1125             },
1126             'Amanda::Curinfo::History'
1127         ),
1128         bless(
1129             {
1130                 'level' => '1',
1131                 'date'  => '1204521528',
1132                 'csize' => '11',
1133                 'secs'  => '0',
1134                 'size'  => '70'
1135             },
1136             'Amanda::Curinfo::History'
1137         ),
1138         bless(
1139             {
1140                 'level' => '1',
1141                 'date'  => '1204435294',
1142                 'csize' => '4',
1143                 'secs'  => '0',
1144                 'size'  => '30'
1145             },
1146             'Amanda::Curinfo::History'
1147         ),
1148         bless(
1149             {
1150                 'level' => '1',
1151                 'date'  => '1204348825',
1152                 'csize' => '4',
1153                 'secs'  => '0',
1154                 'size'  => '30'
1155             },
1156             'Amanda::Curinfo::History'
1157         ),
1158         bless(
1159             {
1160                 'level' => '1',
1161                 'date'  => '1204176062',
1162                 'csize' => '4',
1163                 'secs'  => '0',
1164                 'size'  => '30'
1165             },
1166             'Amanda::Curinfo::History'
1167         ),
1168         bless(
1169             {
1170                 'level' => '1',
1171                 'date'  => '1204003405',
1172                 'csize' => '4',
1173                 'secs'  => '0',
1174                 'size'  => '30'
1175             },
1176             'Amanda::Curinfo::History'
1177         ),
1178         bless(
1179             {
1180                 'level' => '1',
1181                 'date'  => '1203916794',
1182                 'csize' => '4',
1183                 'secs'  => '0',
1184                 'size'  => '30'
1185             },
1186             'Amanda::Curinfo::History'
1187         ),
1188         bless(
1189             {
1190                 'level' => '1',
1191                 'date'  => '1203830409',
1192                 'csize' => '4',
1193                 'secs'  => '0',
1194                 'size'  => '30'
1195             },
1196             'Amanda::Curinfo::History'
1197         ),
1198         bless(
1199             {
1200                 'level' => '1',
1201                 'date'  => '1203744032',
1202                 'csize' => '4',
1203                 'secs'  => '0',
1204                 'size'  => '30'
1205             },
1206             'Amanda::Curinfo::History'
1207         ),
1208         bless(
1209             {
1210                 'level' => '1',
1211                 'date'  => '1203657632',
1212                 'csize' => '4',
1213                 'secs'  => '0',
1214                 'size'  => '30'
1215             },
1216             'Amanda::Curinfo::History'
1217         ),
1218         bless(
1219             {
1220                 'level' => '0',
1221                 'date'  => '1203571350',
1222                 'csize' => '98130',
1223                 'secs'  => '33',
1224                 'size'  => '208120'
1225             },
1226             'Amanda::Curinfo::History'
1227         ),
1228         bless(
1229             {
1230                 'level' => '2',
1231                 'date'  => '1203312046',
1232                 'csize' => '139',
1233                 'secs'  => '0',
1234                 'size'  => '220'
1235             },
1236             'Amanda::Curinfo::History'
1237         ),
1238         bless(
1239             {
1240                 'level' => '2',
1241                 'date'  => '1203139220',
1242                 'csize' => '139',
1243                 'secs'  => '0',
1244                 'size'  => '220'
1245             },
1246             'Amanda::Curinfo::History'
1247         ),
1248         bless(
1249             {
1250                 'level' => '2',
1251                 'date'  => '1203053015',
1252                 'csize' => '139',
1253                 'secs'  => '0',
1254                 'size'  => '220'
1255             },
1256             'Amanda::Curinfo::History'
1257         )
1258     ],
1259     'Amanda::Curinfo::history ($info->{history}) check'
1260 );
1261
1262 is( $info->{last_level}, 1, "Amanda::Curinfo::Info last_level check" );
1263
1264 is( $info->{consecutive_runs},
1265     11, "Amanda::Curinfo::Info consecutive_runs check" );
1266
1267 ## test the accessor functions
1268 is( $info->get_dumpdate(2),
1269     "2008:6:2:4:24:43", 'Amanda::Curinfo::Info->get_dumpdate check' );
1270
1271 is( $info->get_dumpdate(1),
1272     "2008:5:22:6:47:11", 'Amanda::Curinfo::Info->get_dumpdate check' );
1273
1274 ## delete the file
1275
1276 $ci->del_info($host, $disk);
1277 ok(!-f "$infodir/$host_q/$disk_q/info", "infofile successfully deleted");
1278
1279 ## rewrite it using the built-in
1280
1281 ok( $ci->put_info($host, $disk, $info), "Amanda::Curinfo->put_info check");
1282
1283 ## compare the two files
1284
1285 sub diff_wi
1286 {
1287     my ( $from, $to ) = @_;
1288
1289     $$from =~ s{\s+}{ }g;
1290     $$to   =~ s{\s+}{ }g;
1291
1292     return diff($from, $to);
1293 }
1294
1295 my $filedata = slurp $curinfo_file;
1296
1297 if ($use_diff) {
1298
1299     my $diff_txt = diff_wi(\$filedata, \$data);
1300
1301     is($diff_txt, "", "file writing functional.")
1302       or diag("original and written infofile different.  diff:\n"
1303           . diff_wi(\$filedata, \$data));
1304
1305 } else {
1306
1307     $filedata =~ s{\s+}{ }g;
1308     $data     =~ s{\s+}{ }g;
1309
1310     is($filedata, $data, "file writing functional. ")
1311       or diag("original and written infofile different.");
1312 }