/amanda/tags/3_1_2_sol01/installcheck/Amanda_Report.pl
Perl | 1358 lines | 1275 code | 55 blank | 28 comment | 1 complexity | 97d263ac6b47221e22ab0e83a8563fa4 MD5 | raw file
- # Copyright (c) 2008, 2010 Zmanda, Inc. All Rights Reserved.
- #
- # This program is free software; you can redistribute it and/or modify it
- # under the terms of the GNU General Public License version 2 as published
- # by the Free Software Foundation.
- #
- # This program is distributed in the hope that it will be useful, but
- # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- # for more details.
- #
- # You should have received a copy of the GNU General Public License along
- # with this program; if not, write to the Free Software Foundation, Inc.,
- # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- #
- # Contact information: Zmanda Inc., 465 S. Mathilda Ave., Suite 300
- # Sunnyvale, CA 94085, USA, or: http://www.zmanda.com
- use Test::More tests => 58;
- use strict;
- use warnings;
- use File::Path;
- use Data::Dumper;
- use lib "@amperldir@";
- use Installcheck;
- use Amanda::Report;
- use Amanda::Debug;
- Amanda::Debug::dbopen("installcheck");
- Installcheck::log_test_output();
- my %LogfileContents;
- my %LogfileFlags;
- my %LogfileData;
- my $logCount = 0;
- my $log_filename = "$Installcheck::TMP/Amanda_Report_test.log";
- # copy/pasted from installcheck/Amanda_Logfile.pl . Maybe move this
- # to a module?
- sub write_logfile
- {
- my ($contents) = @_;
- open my $logfile, ">", $log_filename
- or die("Could not create temporary log file '$log_filename': $!");
- print $logfile $contents;
- close $logfile;
- return $log_filename;
- }
- $LogfileContents{planner} = <<EOF;
- START planner date 20090728160530
- INFO planner planner pid 12346
- DISK planner localhost /root
- DISK planner localhost /etc
- DISK planner localhost /var/log
- EOF
- $LogfileFlags{planner} = {
- normal_run => 1,
- results_missing => 1,
- dump_failed => 0,
- dump_strange => 0
- };
- $LogfileData{planner} = {
- programs => { planner => { start => "20090728160530", }, },
- disklist => {
- localhost => {
- "/root" => {
- estimate => undef,
- dumps => {},
- },
- "/etc" => {
- estimate => undef,
- dumps => {},
- },
- "/var/log" => {
- estimate => undef,
- dumps => {},
- },
- },
- },
- };
- #
- # NOTE: this test is not reflective of real amanda log output.
- #
- $LogfileContents{driver} = <<EOF;
- START planner date 20090728122430
- INFO planner planner pid 12346
- INFO driver driver pid 12347
- DISK planner localhost /root
- DISK planner localhost /etc
- DISK planner localhost /home
- START driver date 20090728122430
- STATS driver hostname localhost
- STATS driver startup time 0.034
- STATS driver estimate localhost /root 20090728122430 0 [sec 0 nkb 42 ckb 64 kps 1024]
- STATS driver estimate localhost /etc 20090728122430 0 [sec 2 nkb 2048 ckb 64 kps 1024]
- STATS driver estimate localhost /home 20090728122430 0 [sec 4 nkb 5012 ckb 64 kps 1024]
- FINISH driver date 20090728122445 time 14.46
- EOF
- $LogfileFlags{driver} = {
- got_finish => 1,
- normal_run => 1,
- results_missing => 1,
- dump_failed => 0,
- dump_strange => 0
- };
- $LogfileData{driver} = {
- programs => {
- planner => { start => "20090728122430", },
- driver => {
- start => "20090728122430",
- start_time => "0.034",
- time => "14.46",
- },
- },
- disklist => {
- localhost => {
- "/root" => {
- estimate => {
- level => "0",
- sec => "0",
- nkb => "42",
- ckb => "64",
- kps => "1024",
- },
- dumps => {},
- },
- "/etc" => {
- estimate => {
- level => "0",
- sec => "2",
- nkb => "2048",
- ckb => "64",
- kps => "1024",
- },
- dumps => {},
- },
- "/home" => {
- estimate => {
- level => "0",
- sec => "4",
- nkb => "5012",
- ckb => "64",
- kps => "1024",
- },
- dumps => {},
- },
- },
- },
- };
- $LogfileContents{dumper} = <<EOF;
- START planner date 20090728122430
- INFO driver driver pid 12345
- INFO planner planner pid 12346
- DISK planner localhost /root
- DISK planner localhost /etc
- DISK planner localhost /home
- START driver date 20090728122430
- STATS driver hostname localhost
- STATS driver startup time 0.034
- SUCCESS dumper localhost /root 20090728122430 0 [sec 0.02 kb 42 kps 2100 orig-kb 42]
- STATS driver estimate localhost /root 20090728122430 0 [sec 0 nkb 42 ckb 64 kps 1024]
- SUCCESS dumper localhost /etc 20090728122430 0 [sec 0.87 kb 2048 kps 2354 orig-kb 2048]
- STATS driver estimate localhost /etc 20090728122430 0 [sec 2 nkb 2048 ckb 64 kps 1024]
- SUCCESS dumper localhost /home 20090728122430 0 [sec 1.68421 kb 4096 kps 2354 orig-kb 4096]
- STATS driver estimate localhost /home 20090728122430 0 [sec 4 nkb 4096 ckb 64 kps 1024]
- FINISH driver date 20090728122445 time 14.46
- EOF
- $LogfileFlags{dumper} = {
- got_finish => 1,
- normal_run => 1,
- results_missing => 0,
- dump_failed => 1,
- dump_strange => 0
- };
- $LogfileData{dumper} = {
- programs => {
- planner => { start => "20090728122430", },
- driver => {
- start => "20090728122430",
- start_time => "0.034",
- time => "14.46",
- },
- dumper => {},
- },
- disklist => {
- localhost => {
- "/root" => {
- estimate => {
- level => "0",
- sec => "0",
- nkb => "42",
- ckb => "64",
- kps => "1024",
- },
- dumps => {
- '20090728122430' => [
- {
- dumper => {
- date => "20090728122430",
- status => "success",
- level => "0",
- sec => "0.02",
- kb => "42",
- kps => "2100",
- orig_kb => "42",
- },
- },
- ]
- },
- },
- "/etc" => {
- estimate => {
- level => "0",
- sec => "2",
- nkb => "2048",
- ckb => "64",
- kps => "1024",
- },
- dumps => {
- '20090728122430' => [
- {
- dumper => {
- date => "20090728122430",
- status => "success",
- level => "0",
- sec => "0.87",
- kb => "2048",
- kps => "2354",
- orig_kb => "2048",
- },
- },
- ]
- },
- },
- "/home" => {
- estimate => {
- level => "0",
- sec => "4",
- nkb => "4096",
- ckb => "64",
- kps => "1024",
- },
- dumps => {
- '20090728122430' => [
- {
- dumper => {
- date => "20090728122430",
- status => "success",
- level => "0",
- sec => "1.68421",
- kb => "4096",
- kps => "2354",
- orig_kb => "4096",
- },
- },
- ]
- },
- },
- },
- },
- };
- $LogfileContents{chunker} = <<EOF;
- START planner date 20090728122430
- INFO driver driver pid 12345
- INFO planner planner pid 12346
- DISK planner localhost /root
- DISK planner localhost /etc
- DISK planner localhost /home
- START driver date 20090728122430
- STATS driver hostname localhost
- STATS driver startup time 0.034
- SUCCESS dumper localhost /root 20090728122430 0 [sec 0.02 kb 42 kps 2100 orig-kb 42]
- INFO chunker chunker pid 12348
- SUCCESS chunker localhost /root 20090728122430 0 [sec 0.02 kb 42 kps 2100]
- STATS driver estimate localhost /root 20090728122430 0 [sec 0 nkb 42 ckb 64 kps 1024]
- SUCCESS dumper localhost /etc 20090728122430 0 [sec 0.87 kb 2048 kps 2354 orig-kb 2048]
- INFO chunker chunker pid 12349
- SUCCESS chunker localhost /etc 20090728122430 0 [sec 0.79 kb 2048 kps 2592.40506]
- STATS driver estimate localhost /etc 20090728122430 0 [sec 2 nkb 2048 ckb 64 kps 1024]
- SUCCESS dumper localhost /home 20090728122430 0 [sec 1.68421 kb 4096 kps 2354 orig-kb 4096]
- INFO chunker chunker pid 12350
- PARTIAL chunker localhost /home 20090728122430 0 [sec 0.82 kb 2532 kps 3087.80488]
- STATS driver estimate localhost /home 20090728122430 0 [sec 4 nkb 4096 ckb 64 kps 1024]
- FINISH driver date 20090728122445 time 14.46
- EOF
- $LogfileFlags{chunker} = {
- got_finish => 1,
- normal_run => 1,
- results_missing => 0,
- dump_failed => 1,
- dump_strange => 0
- };
- $LogfileData{chunker} = {
- programs => {
- planner => { start => "20090728122430", },
- driver => {
- start => "20090728122430",
- start_time => "0.034",
- time => "14.46",
- },
- dumper => {},
- chunker => {}
- },
- disklist => {
- localhost => {
- "/root" => {
- estimate => {
- level => "0",
- sec => "0",
- nkb => "42",
- ckb => "64",
- kps => "1024",
- },
- dumps => {
- '20090728122430' => [
- {
- dumper => {
- date => "20090728122430",
- status => "success",
- level => "0",
- sec => "0.02",
- kb => "42",
- kps => "2100",
- orig_kb => "42",
- },
- chunker => {
- status => "success",
- level => "0",
- date => "20090728122430",
- sec => "0.02",
- kb => "42",
- kps => "2100",
- },
- },
- ]
- },
- },
- "/etc" => {
- estimate => {
- level => "0",
- sec => "2",
- nkb => "2048",
- ckb => "64",
- kps => "1024",
- },
- dumps => {
- '20090728122430' => [
- {
- dumper => {
- date => "20090728122430",
- status => "success",
- level => "0",
- sec => "0.87",
- kb => "2048",
- kps => "2354",
- orig_kb => "2048",
- },
- chunker => {
- status => "success",
- level => "0",
- date => "20090728122430",
- sec => "0.79",
- kb => "2048",
- kps => "2592.40506",
- },
- },
- ]
- },
- },
- "/home" => {
- estimate => {
- level => "0",
- sec => "4",
- nkb => "4096",
- ckb => "64",
- kps => "1024",
- },
- dumps => {
- '20090728122430' => [
- {
- dumper => {
- date => "20090728122430",
- status => "success",
- level => "0",
- sec => "1.68421",
- kb => "4096",
- kps => "2354",
- orig_kb => "4096",
- },
- chunker => {
- status => "partial",
- level => "0",
- date => "20090728122430",
- sec => "0.82",
- kb => "2532",
- kps => "3087.80488"
- },
- },
- ]
- },
- },
- },
- },
- };
- $LogfileContents{taper} = <<EOF;
- DISK planner somebox /lib
- START planner date 20080111
- START driver date 20080111
- STATS driver hostname somebox
- STATS driver startup time 0.051
- FINISH planner date 20080111 time 82.721
- SUCCESS dumper somebox /lib 20080111 0 [sec 0.209 kb 1970 kps 9382.2 orig-kb 1970]
- SUCCESS chunker somebox /lib 20080111 0 [sec 0.305 kb 420 kps 1478.7]
- STATS driver estimate somebox /lib 20080111 0 [sec 1 nkb 2002 ckb 480 kps 385]
- INFO taper taper pid 28023
- INFO taper Will write new label `TESTCONF01' to new tape
- START taper datestamp 20080111 label TESTCONF01 tape 1
- PART taper TESTCONF01 1 somebox /lib 20080111 1/-1 0 [sec 0.004722 kb 640 kps 135535.789920]
- PART taper TESTCONF01 2 somebox /lib 20080111 2/-1 0 [sec 0.003438 kb 640 kps 186154.741129]
- PART taper TESTCONF01 3 somebox /lib 20080111 3/-1 0 [sec 0.002931 kb 640 kps 218355.510065]
- PART taper TESTCONF01 4 somebox /lib 20080111 4/-1 0 [sec 0.000578 kb 96 kps 166089.965398]
- PARTIAL taper somebox /lib 20080111 4 0 [sec 0.011669 kb 2016 kps 172765.446911]
- INFO taper tape TESTCONF01 kb 2016 fm 4 [OK]
- INFO taper pid-done 28023
- FINISH driver date 20080111 time 2167.581
- EOF
- $LogfileFlags{taper} = {
- got_finish => 1,
- normal_run => 1,
- results_missing => 0,
- dump_failed => 0,
- dump_strange => 0
- };
- $LogfileData{taper} = {
- programs => {
- planner => {
- start => "20080111",
- time => "82.721",
- },
- driver => {
- start => "20080111",
- start_time => "0.051",
- time => "2167.581",
- },
- dumper => {},
- chunker => {},
- taper => {
- start => '20080111',
- notes => [
- "Will write new label `TESTCONF01' to new tape",
- "tape TESTCONF01 kb 2016 fm 4 [OK]"
- ],
- tapes => {
- TESTCONF01 => {
- 'label' => 'TESTCONF01',
- time => "0.011669",
- date => "20080111",
- kb => "2016",
- files => "4",
- dle => "1",
- },
- },
- tape_labels => ['TESTCONF01'],
- },
- },
- disklist => {
- somebox => {
- "/lib" => {
- estimate => {
- level => "0",
- sec => "1",
- nkb => "2002",
- ckb => "480",
- kps => "385",
- },
- dumps => {
- '20080111' => [
- {
- dumper => {
- status => "success",
- date => "20080111",
- level => "0",
- sec => "0.209",
- kb => "1970",
- kps => "9382.2",
- orig_kb => "1970",
- },
- chunker => {
- status => "success",
- date => "20080111",
- level => "0",
- sec => "0.305",
- kb => "420",
- kps => "1478.7",
- },
- taper => {
- status => "partial",
- parts => [
- {
- label => "TESTCONF01",
- date => "20080111",
- file => "1",
- partnum => "1",
- sec => "0.004722",
- kb => "640",
- kps => "135535.789920",
- },
- {
- label => "TESTCONF01",
- date => "20080111",
- file => "2",
- partnum => "2",
- sec => "0.003438",
- kb => "640",
- kps => "186154.741129",
- },
- {
- label => "TESTCONF01",
- date => "20080111",
- file => "3",
- partnum => "3",
- sec => "0.002931",
- kb => "640",
- kps => "218355.510065",
- },
- {
- label => "TESTCONF01",
- date => "20080111",
- file => "4",
- partnum => "4",
- sec => "0.000578",
- kb => "96",
- kps => "166089.965398",
- },
- ],
- level => "0",
- sec => "0.011669",
- kb => "2016",
- kps => "172765.446911",
- orig_kb => undef,
- error => '',
- },
- },
- ]
- },
- },
- },
- },
- };
- $LogfileContents{simple} = <<EOF;
- DISK planner somebox /lib
- START planner date 20080111
- START driver date 20080111
- STATS driver hostname somebox
- STATS driver startup time 0.051
- FINISH planner date 20080111 time 82.721
- START taper datestamp 20080111 label Conf-001 tape 1
- SUCCESS dumper somebox /lib 20080111 0 [sec 0.209 kb 1970 kps 9382.2 orig-kb 1970]
- SUCCESS chunker somebox /lib 20080111 0 [sec 0.305 kb 420 kps 1478.7]
- STATS driver estimate somebox /lib 20080111 0 [sec 1 nkb 2002 ckb 480 kps 385]
- PART taper Conf-001 1 somebox /lib 20080111 1/1 0 [sec 4.813543 kb 419 kps 87.133307]
- DONE taper somebox /lib 20080111 1 0 [sec 4.813543 kb 419 kps 87.133307]
- FINISH driver date 20080111 time 2167.581
- EOF
- $LogfileFlags{simple} = {
- got_finish => 1,
- normal_run => 1,
- results_missing => 0,
- dump_failed => 0,
- dump_strange => 0
- };
- $LogfileData{simple} = {
- programs => {
- planner => {
- start => "20080111",
- time => "82.721",
- },
- driver => {
- start => "20080111",
- start_time => "0.051",
- time => "2167.581",
- },
- taper => {
- start => '20080111',
- tapes => {
- "Conf-001" => {
- 'label' => 'Conf-001',
- 'files' => 1,
- 'time' => '4.813543',
- 'date' => '20080111',
- 'kb' => 419,
- 'dle' => 1
- },
- },
- tape_labels => ["Conf-001"],
- },
- dumper => {},
- chunker => {},
- },
- disklist => {
- somebox => {
- "/lib" => {
- estimate => {
- nkb => "2002",
- kps => "385",
- ckb => "480",
- level => "0",
- sec => "1"
- },
- dumps => {
- '20080111' => [
- {
- dumper => {
- status => "success",
- date => "20080111",
- level => "0",
- sec => "0.209",
- kb => "1970",
- kps => "9382.2",
- orig_kb => "1970",
- },
- taper => {
- status => "done",
- parts => [
- {
- label => "Conf-001",
- date => "20080111",
- file => "1",
- partnum => "1",
- sec => "4.813543",
- kb => "419",
- kps => "87.133307",
- },
- ],
- level => "0",
- sec => "4.813543",
- kb => "419",
- kps => "87.133307",
- orig_kb => undef,
- },
- chunker => {
- status => "success",
- date => "20080111",
- level => "0",
- sec => "0.305",
- kb => "420",
- kps => "1478.7",
- },
- },
- ]
- },
- },
- },
- },
- };
- $LogfileContents{fullExample} = <<EOF;
- INFO amdump amdump pid 9291
- INFO driver driver pid 9313
- INFO planner planner pid 9312
- DISK planner hostname.example.org /
- DISK planner hostname.example.org /somedir2
- DISK planner hostname.example.org /moreapps
- DISK planner hostname.example.org /apps
- DISK planner hostname.example.org /somedir
- START planner date 20081002040002
- START driver date 20081002040002
- STATS driver hostname hostname.example.org
- STATS driver startup time 0.043
- INFO dumper dumper pid 9316
- INFO dumper dumper pid 9315
- INFO dumper dumper pid 9318
- INFO dumper dumper pid 9317
- INFO taper taper pid 9314
- FINISH planner date 20081002040002 time 32.689
- INFO planner pid-done 9312
- INFO chunker chunker pid 11110
- INFO dumper gzip pid 11129
- SUCCESS dumper hostname.example.org /somedir 20081002040002 1 [sec 0.039 kb 10 kps 250.4 orig-kb 10]
- SUCCESS chunker hostname.example.org /somedir 20081002040002 1 [sec 5.070 kb 10 kps 8.3]
- INFO chunker pid-done 11110
- STATS driver estimate hostname.example.org /somedir 20081002040002 1 [sec 0 nkb 42 ckb 64 kps 1024]
- INFO dumper pid-done 11129
- START taper datestamp 20081002040002 label FullBackup-14 tape 1
- PART taper FullBackup-14 1 hostname.example.org /somedir 20081002040002 1/1 1 [sec 0.002776 kb 10 kps 3602.305476]
- DONE taper hostname.example.org /somedir 20081002040002 1 1 [sec 0.002776 kb 10 kps 3602.305476]
- INFO chunker chunker pid 11157
- INFO dumper gzip pid 11232
- SUCCESS dumper hostname.example.org /moreapps 20081002040002 1 [sec 0.039 kb 10 kps 250.8 orig-kb 10]
- INFO dumper pid-done 11232
- SUCCESS chunker hostname.example.org /moreapps 20081002040002 1 [sec 5.058 kb 10 kps 8.3]
- INFO chunker pid-done 11157
- STATS driver estimate hostname.example.org /moreapps 20081002040002 1 [sec 0 nkb 42 ckb 64 kps 149050]
- PART taper FullBackup-14 2 hostname.example.org /moreapps 20081002040002 1/1 1 [sec 0.002656 kb 10 kps 3765.060241]
- DONE taper hostname.example.org /moreapps 20081002040002 1 1 [sec 0.002656 kb 10 kps 3765.060241]
- INFO chunker chunker pid 11700
- INFO dumper gzip pid 11723
- SUCCESS dumper hostname.example.org /apps 20081002040002 1 [sec 0.414 kb 6630 kps 16013.4 orig-kb 6630]
- SUCCESS chunker hostname.example.org /apps 20081002040002 1 [sec 5.432 kb 6630 kps 1226.3]
- INFO chunker pid-done 11700
- INFO dumper pid-done 11723
- STATS driver estimate hostname.example.org /apps 20081002040002 1 [sec 6 nkb 6662 ckb 6688 kps 1024]
- PART taper FullBackup-14 3 hostname.example.org /apps 20081002040002 1/1 1 [sec 0.071808 kb 6630 kps 92329.545455]
- DONE taper hostname.example.org /apps 20081002040002 1 1 [sec 0.071808 kb 6630 kps 92329.545455]
- INFO chunker chunker pid 11792
- INFO dumper gzip pid 11816
- SUCCESS dumper hostname.example.org / 20081002040002 1 [sec 3.028 kb 8393 kps 2771.1 orig-kb 82380]
- SUCCESS chunker hostname.example.org / 20081002040002 1 [sec 8.047 kb 8393 kps 1047.0]
- INFO chunker pid-done 11792
- STATS driver estimate hostname.example.org / 20081002040002 1 [sec 39 nkb 80542 ckb 40288 kps 1024]
- INFO dumper pid-done 11816
- PART taper FullBackup-14 4 hostname.example.org / 20081002040002 1/1 1 [sec 0.088934 kb 8392 kps 94368.875374]
- DONE taper hostname.example.org / 20081002040002 1 1 [sec 0.088934 kb 8392 kps 94368.875374]
- INFO dumper gzip pid 11861
- STRANGE dumper hostname.example.org /somedir2 0 [sec 372.700 kb 28776940 kps 77212.0 orig-kb 28776940]
- ! strange data
- PART taper FullBackup-14 5 hostname.example.org /somedir2 20081002040002 1/1 0 [sec 370.382399 kb 28776940 kps 77695.214669]
- DONE taper hostname.example.org /somedir2 20081002040002 1 0 [sec 370.382399 kb 28776940 kps 77695.214669]
- INFO dumper pid-done 11861
- STATS driver estimate hostname.example.org /somedir2 20081002040002 0 [sec 28776940 nkb 28776972 ckb 28776992 kps 1]
- PART taper FullBackup-14 6 hostname.example.org /somedir2 20081002030002 1/1 0 [sec 370.382399 kb 28776940 kps 77695.214669]
- DONE taper hostname.example.org /somedir2 20081002030002 1 0 [sec 370.382399 kb 28776940 kps 77695.214669]
- INFO dumper pid-done 9315
- INFO dumper pid-done 9317
- INFO dumper pid-done 9316
- INFO dumper pid-done 9318
- INFO taper pid-done 9314
- FINISH driver date 20081002040002 time 663.574
- INFO driver pid-done 9313
- EOF
- $LogfileFlags{fullExample} = {
- got_finish => 1,
- normal_run => 1,
- results_missing => 0,
- dump_failed => 0,
- dump_strange => 1
- };
- $LogfileData{fullExample} = {
- programs => {
- amdump => {},
- dumper => {},
- driver => {
- time => "663.574",
- start => "20081002040002",
- start_time => "0.043",
- },
- planner => {
- time => "32.689",
- start => "20081002040002",
- },
- chunker => {},
- taper => {
- start => '20081002040002',
- tapes => {
- "FullBackup-14" => {
- 'label' => 'FullBackup-14',
- 'files' => 6,
- 'time' => '740.930972',
- 'date' => '20081002040002',
- 'kb' => 57568922,
- 'dle' => 6
- },
- },
- tape_labels => ["FullBackup-14"],
- },
- },
- disklist => {
- "hostname.example.org" => {
- "/" => {
- estimate => {
- level => "1",
- sec => "39",
- nkb => "80542",
- kps => "1024",
- ckb => "40288",
- },
- dumps => {
- '20081002040002' => [
- {
- chunker => {
- status => "success",
- date => "20081002040002",
- kps => "1047.0",
- level => "1",
- sec => "8.047",
- kb => "8393"
- },
- taper => {
- kps => '94368.875374',
- level => '1',
- sec => '0.088934',
- status => 'done',
- parts => [
- {
- kps => "94368.875374",
- sec => "0.088934",
- date => "20081002040002",
- partnum => "1",
- file => "4",
- kb => "8392",
- label => "FullBackup-14"
- },
- ],
- kb => '8392',
- orig_kb => undef
- },
- dumper => {
- kps => "2771.1",
- level => "1",
- sec => "3.028",
- status => "success",
- date => "20081002040002",
- kb => "8393",
- orig_kb => "82380"
- },
- },
- ]
- },
- },
- "/somedir2" => {
- estimate => {
- nkb => "28776972",
- kps => "1",
- ckb => "28776992",
- level => "0",
- sec => "28776940"
- },
- dumps => {
- "20081002040002" => [
- {
- dumper => {
- kps => "77212.0",
- level => "0",
- sec => "372.700",
- status => "strange",
- #date => "20081002040002",
- kb => "28776940",
- orig_kb => "28776940",
- nb_stranges => 1,
- stranges => [ "! strange data" ],
- },
- taper => {
- kps => "77695.214669",
- level => "0",
- sec => "370.382399",
- status => "done",
- parts => [
- {
- label => 'FullBackup-14',
- date => '20081002040002',
- kps => '77695.214669',
- sec => '370.382399',
- partnum => '1',
- file => '5',
- kb => '28776940',
- }
- ],
- kb => "28776940",
- orig_kb => undef
- },
- },
- ],
- "20081002030002" => [
- {
- taper => {
- kps => "77695.214669",
- level => "0",
- sec => "370.382399",
- status => "done",
- parts => [
- {
- label => 'FullBackup-14',
- date => '20081002030002',
- kps => '77695.214669',
- sec => '370.382399',
- partnum => '1',
- file => '6',
- kb => '28776940',
- }
- ],
- kb => "28776940",
- orig_kb => undef
- },
- },
- ]
- },
- },
- "/moreapps" => {
- estimate => {
- nkb => "42",
- kps => "149050",
- ckb => "64",
- level => "1",
- sec => "0"
- },
- dumps => {
- '20081002040002' => [
- {
- 'chunker' => {
- 'kps' => '8.3',
- 'level' => '1',
- 'sec' => '5.058',
- 'status' => 'success',
- 'date' => '20081002040002',
- 'kb' => '10'
- },
- 'taper' => {
- 'kps' => '3765.060241',
- 'level' => '1',
- 'sec' => '0.002656',
- 'status' => 'done',
- 'parts' => [
- {
- kps => "3765.060241",
- sec => "0.002656",
- date => "20081002040002",
- partnum => "1",
- file => "2",
- kb => "10",
- label => "FullBackup-14"
- },
- ],
- 'kb' => '10',
- orig_kb => undef
- },
- 'dumper' => {
- 'kps' => '250.8',
- 'level' => '1',
- 'sec' => '0.039',
- 'status' => 'success',
- 'date' => '20081002040002',
- 'kb' => '10',
- orig_kb => '10'
- },
- },
- ]
- },
- },
- "/apps" => {
- estimate => {
- nkb => "6662",
- kps => "1024",
- ckb => "6688",
- level => "1",
- sec => "6"
- },
- dumps => {
- '20081002040002' => [
- {
- chunker => {
- kps => "1226.3",
- level => "1",
- sec => "5.432",
- status => "success",
- date => "20081002040002",
- kb => "6630"
- },
- taper => {
- kps => "92329.545455",
- level => "1",
- sec => "0.071808",
- status => "done",
- parts => [
- {
- kps => "92329.545455",
- sec => "0.071808",
- date => "20081002040002",
- partnum => "1",
- file => "3",
- kb => "6630",
- label => "FullBackup-14"
- },
- ],
- kb => "6630",
- orig_kb => undef,
- },
- dumper => {
- kps => "16013.4",
- level => "1",
- sec => "0.414",
- status => "success",
- date => "20081002040002",
- kb => "6630",
- orig_kb => "6630"
- },
- },
- ]
- },
- },
- "/somedir" => {
- estimate => {
- nkb => "42",
- kps => "1024",
- ckb => "64",
- level => "1",
- sec => "0"
- },
- dumps => {
- "20081002040002" => [
- {
- chunker => {
- kps => "8.3",
- level => "1",
- sec => "5.070",
- status => "success",
- date => "20081002040002",
- kb => "10",
- },
- taper => {
- kps => "3602.305476",
- level => "1",
- sec => "0.002776",
- status => "done",
- parts => [
- {
- kps => "3602.305476",
- sec => "0.002776",
- date => "20081002040002",
- partnum => "1",
- file => "1",
- kb => "10",
- label => "FullBackup-14",
- },
- ],
- kb => "10",
- orig_kb => undef
- },
- dumper => {
- kps => "250.4",
- level => "1",
- sec => "0.039",
- status => "success",
- date => "20081002040002",
- kb => "10",
- orig_kb => "10",
- },
- },
- ]
- },
- },
- },
- },
- };
- $LogfileContents{amflushExample} = <<EOF;
- INFO amflush amflush pid 26036
- DISK amflush localhost /backups/oracle
- DISK amflush localhost /backups/mysql
- DISK amflush localhost /usr/local/bin
- DISK amflush localhost /etc
- DISK amflush localhost /home
- START amflush date 20090622075550
- INFO driver driver pid 26076
- START driver date 20090622075550
- STATS driver hostname localhost
- STATS driver startup time 0.011
- INFO taper taper pid 26077
- START taper datestamp 20090622075550 label DailyTapeDataSet-017 tape 1
- PART taper DailyTapeDataSet-017 1 localhost /etc 20090620020002 1/1 1 [sec 2.504314 kb 36980 kps 14766.518895]
- DONE taper localhost /etc 20090620020002 1 1 [sec 2.504314 kb 36980 kps 14766.518895]
- PART taper DailyTapeDataSet-017 2 localhost /usr/local/bin 20090620020002 1/1 1 [sec 1.675693 kb 309 kps 184.632684]
- DONE taper localhost /usr/local/bin 20090620020002 1 1 [sec 1.675693 kb 309 kps 184.632684]
- INFO taper pid-done 26077
- FINISH driver date 20090622075550 time 177.708
- INFO driver pid-done 26076
- INFO amflush pid-done 26075
- EOF
- $LogfileFlags{amflushExample} = {
- got_finish => 1,
- amflush_run => 1,
- results_missing => 0,
- dump_failed => 0,
- dump_strange => 0
- };
- $LogfileData{amflushExample} = {
- 'programs' => {
- 'taper' => {
- 'start' => '20090622075550',
- 'tapes' => {
- 'DailyTapeDataSet-017' => {
- 'label' => 'DailyTapeDataSet-017',
- 'files' => 2,
- 'time' => '4.180007',
- 'date' => '20090622075550',
- 'kb' => 37289,
- 'dle' => 2
- },
- },
- tape_labels => ["DailyTapeDataSet-017"],
- },
- 'amflush' => { 'start' => '20090622075550' },
- 'driver' => {
- 'time' => '177.708',
- 'start_time' => '0.011',
- 'start' => '20090622075550'
- },
- },
- 'disklist' => {
- 'localhost' => {
- '/etc' => {
- estimate => undef,
- dumps => {
- '20090620020002' => [
- {
- 'taper' => {
- 'kps' => '14766.518895',
- 'level' => '1',
- 'sec' => '2.504314',
- 'status' => 'done',
- 'parts' => [
- {
- 'kps' => '14766.518895',
- 'sec' => '2.504314',
- 'date' => '20090620020002',
- 'partnum' => '1',
- 'file' => '1',
- 'kb' => '36980',
- 'label' => 'DailyTapeDataSet-017'
- },
- ],
- 'kb' => '36980',
- orig_kb => undef
- },
- },
- ]
- },
- },
- '/backups/oracle' => {
- estimate => undef,
- dumps => {},
- },
- '/usr/local/bin' => {
- estimate => undef,
- dumps => {
- '20090620020002' => [
- {
- 'taper' => {
- 'kps' => '184.632684',
- 'level' => '1',
- 'sec' => '1.675693',
- 'status' => 'done',
- 'parts' => [
- {
- 'kps' => '184.632684',
- 'sec' => '1.675693',
- 'date' => '20090620020002',
- 'partnum' => '1',
- 'file' => '2',
- 'kb' => '309',
- 'label' => 'DailyTapeDataSet-017'
- },
- ],
- 'kb' => '309',
- orig_kb => undef
- },
- }]
- },
- },
- '/home' => {
- estimate => undef,
- dumps => {},
- },
- '/backups/mysql' => {
- estimate => undef,
- dumps => {},
- },
- },
- },
- };
- foreach my $test ( keys %LogfileContents ) {
- unless ( exists $LogfileData{$test} ) {
- die "error: $test present in \%LogfileContents but not \%LogfileData\n";
- }
- my $report =
- Amanda::Report->new( write_logfile( $LogfileContents{$test} ), 1 );
- is_deeply( $report->{data}, $LogfileData{$test}, "data check: $test" );
- map {
- cmp_ok(
- $report->get_flag($_), "==",
- $LogfileFlags{$test}->{$_},
- "flag test: $_, $test"
- );
- } keys %{ $LogfileFlags{$test} };
- }
- #
- # Test the report API
- #
- my $report =
- Amanda::Report->new( write_logfile( $LogfileContents{fullExample} ), 1 );
- is_deeply( [ $report->get_hosts() ],
- ['hostname.example.org'], 'check: Amanda::Report::get_hosts()' );
- is_deeply(
- [ sort { $a cmp $b } $report->get_disks('hostname.example.org') ],
- [ '/', '/apps', '/moreapps', '/somedir', '/somedir2' ],
- 'check: Amanda::Report::get_disks($hostname)'
- );
- is_deeply(
- [ sort { $a->[1] cmp $b->[1] } $report->get_dles() ],
- [
- [ 'hostname.example.org', '/' ],
- [ 'hostname.example.org', '/apps' ],
- [ 'hostname.example.org', '/moreapps' ],
- [ 'hostname.example.org', '/somedir' ],
- [ 'hostname.example.org', '/somedir2' ],
- ],
- 'check: Amanda::Report::get_dles()'
- );
- is_deeply(
- $report->get_dle_info("hostname.example.org", "/apps"),
- {
- estimate => {
- nkb => "6662",
- kps => "1024",
- ckb => "6688",
- level => "1",
- sec => "6"
- },
- dumps => {
- '20081002040002' => [
- {
- chunker => {
- kps => "1226.3",
- level => "1",
- sec => "5.432",
- status => "success",
- date => "20081002040002",
- kb => "6630"
- },
- taper => {
- kps => "92329.545455",
- level => "1",
- sec => "0.071808",
- status => "done",
- parts => [
- {
- kps => "92329.545455",
- sec => "0.071808",
- date => "20081002040002",
- partnum => "1",
- file => "3",
- kb => "6630",
- label => "FullBackup-14"
- },
- ],
- kb => "6630",
- orig_kb => undef,
- },
- dumper => {
- kps => "16013.4",
- level => "1",
- sec => "0.414",
- status => "success",
- date => "20081002040002",
- kb => "6630",
- orig_kb => "6630"
- },
- },
- ]
- },
- },
- 'check: Amanda::Report::get_dle_info($hostname, $disk)'
- );
- is_deeply(
- $report->get_dle_info( 'hostname.example.org', '/', 'estimate' ),
- {
- level => "1",
- sec => "39",
- nkb => "80542",
- kps => "1024",
- ckb => "40288",
- },
- 'check: Amanda::Report::get_dle_info($hostname, $disk, $field)'
- );
- is_deeply(
- $report->get_program_info('planner'),
- {
- time => "32.689",
- start => "20081002040002",
- },
- 'check: Amanda::Report::get_program_info($program)'
- );
- is(
- $report->get_program_info('driver', 'start', 0),
- "20081002040002",
- 'check: Amanda::Report::get_program_info($program, $field, $default) field exists'
- );
- # dummy check, makes sure default value gets set correctly
- is(
- $report->get_program_info('planner', 'fake_field', 67),
- 67,
- 'check: Amanda::Report::get_program_info($program, $field, $default) default case'
- );
- is(
- $report->get_program_info('planner', 'fake_field', 32),
- 67,
- 'check: Amanda::Report::get_program_info($program, $field, $default) default "sticks"'
- );
- $report->get_program_info('planner', 'fake_field2', 0);
- is(
- $report->get_program_info('planner', 'fake_field2', 1),
- 0,
- 'check: Amanda::Report::get_program_info($program, $field, $default) false default "sticks"'
- );
- ok($report->get_flag('historical'),
- "historical flag processed correctly");
- # clean up
- unlink($log_filename) if -f $log_filename;