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