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