X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=installcheck%2FAmanda_Taper_Scan_traditional.pl;h=97f3595f622ccf917dcee316111a0bf522fff487;hb=cd0b924f27312d57bd42f6c4fae2b795139e2d0b;hp=8083eee9cab84b54e9ec6454e6030e6dc86e8c95;hpb=011a59f5a54864108a16af570a6b287410597cc2;p=debian%2Famanda diff --git a/installcheck/Amanda_Taper_Scan_traditional.pl b/installcheck/Amanda_Taper_Scan_traditional.pl index 8083eee..97f3595 100644 --- a/installcheck/Amanda_Taper_Scan_traditional.pl +++ b/installcheck/Amanda_Taper_Scan_traditional.pl @@ -41,7 +41,8 @@ Installcheck::log_test_output(); Amanda::Debug::disable_die_override(); my $taperoot = "$Installcheck::TMP/Amanda_Taper_Scan_traditional"; -my $tapelist = "$Installcheck::TMP/tapelist"; +my $tapelist_filename = "$Installcheck::TMP/tapelist"; +my $tapelist = Amanda::Tapelist->new($tapelist_filename); # vtape support @@ -59,7 +60,7 @@ sub reset_taperoot { } # clear out the tapefile - open(my $fh, ">", $tapelist) or die("opening tapelist: $!"); + open(my $fh, ">", $tapelist_filename) or die("opening tapelist_filename: $!"); } sub label_slot { @@ -86,7 +87,7 @@ sub label_slot { if ($update_tapelist) { # tapelist uses '0' for new tapes; devices use 'X'.. $stamp = '0' if ($stamp eq 'X'); - open(my $fh, ">>", $tapelist) or die("opening tapelist: $!"); + open(my $fh, ">>", $tapelist_filename) or die("opening tapelist_filename: $!"); print $fh "$stamp $label $reuse\n"; close($fh); } @@ -143,30 +144,37 @@ my $taperscan; my @results; # set up a traditional taperscan +$chg = Amanda::Changer->new("chg-disk:$taperoot", tapelist => $tapelist); $taperscan = Amanda::Taper::Scan->new( + tapelist => $tapelist, algorithm => "traditional", tapecycle => 4, - changer => Amanda::Changer->new("chg-disk:$taperoot")); + changer => $chg); @results = run_scan($taperscan); is_deeply([ @results ], [ "No acceptable volumes found", undef, undef ], "no reusable tapes -> error") or diag(Dumper(\@results)); +$taperscan->quit(); +$chg = Amanda::Changer->new("chg-disk:$taperoot", tapelist => $tapelist); $taperscan = Amanda::Taper::Scan->new( + tapelist => $tapelist, algorithm => "traditional", tapecycle => 3, - changer => Amanda::Changer->new("chg-disk:$taperoot")); + changer => $chg); @results = run_scan($taperscan); is_deeply([ @results ], [ undef, "TEST-1", $ACCESS_WRITE ], "finds the best reusable tape") or diag(Dumper(\@results)); +$taperscan->quit(); -$chg = Amanda::Changer->new("chg-disk:$taperoot"); +$chg = Amanda::Changer->new("chg-disk:$taperoot", tapelist => $tapelist); $chg->{'support_fast_search'} = 0; # no fast search -> skip stage 1 set_current_slot(2); # slot 2 is acceptable, so it should be returned $taperscan = Amanda::Taper::Scan->new( + tapelist => $tapelist, algorithm => "traditional", tapecycle => 1, changer => $chg); @@ -175,64 +183,85 @@ is_deeply([ @results ], [ undef, "TEST-2", $ACCESS_WRITE ], "finds the first reusable tape when fast_search is false") or diag(Dumper(\@results)); +$taperscan->quit(); + +$chg = Amanda::Changer->new("chg-disk:$taperoot", tapelist => $tapelist); +$chg->{'support_fast_search'} = 1; label_slot(1); # remove TEST-1 label_slot(4, "TEST-4", "20090424183004", "reuse", 1); set_current_slot(1); $taperscan = Amanda::Taper::Scan->new( + tapelist => $tapelist, algorithm => "traditional", tapecycle => 2, - changer => Amanda::Changer->new("chg-disk:$taperoot")); + changer => $chg); @results = run_scan($taperscan); is_deeply([ @results ], [ undef, "TEST-2", $ACCESS_WRITE ], "uses the first usable tape it finds when oldest is missing") or diag(Dumper(\@results)); +$taperscan->quit(); + +$chg = Amanda::Changer->new("chg-disk:$taperoot", tapelist => $tapelist); set_current_slot(3); $taperscan = Amanda::Taper::Scan->new( + tapelist => $tapelist, algorithm => "traditional", tapecycle => 2, - changer => Amanda::Changer->new("chg-disk:$taperoot")); + changer => $chg); @results = run_scan($taperscan); is_deeply([ @results ], [ undef, "TEST-3", $ACCESS_WRITE ], "starts sequential scan at 'current'") or diag(Dumper(\@results)); +$taperscan->quit(); -set_current_slot(5); +$chg = Amanda::Changer->new("chg-disk:$taperoot", + tapelist => $tapelist, + autolabel => { 'template' => "TEST-%", + 'empty' => 1, + 'volume_error' => 1}); $taperscan = Amanda::Taper::Scan->new( + tapelist => $tapelist, algorithm => "traditional", tapecycle => 2, - autolabel => { 'template' => "TEST-%", - 'empty' => 1, - 'volume_error' => 1}, - changer => Amanda::Changer->new("chg-disk:$taperoot")); + changer => $chg); +set_current_slot(5); @results = run_scan($taperscan); is_deeply([ @results ], [ undef, "TEST-5", $ACCESS_WRITE ], "labels new tapes in blank slots") or diag(Dumper(\@results)); +$taperscan->quit(); -set_current_slot(6); +$chg = Amanda::Changer->new("chg-disk:$taperoot", + tapelist => $tapelist, + autolabel => { }); $taperscan = Amanda::Taper::Scan->new( + tapelist => $tapelist, algorithm => "traditional", tapecycle => 1, - autolabel => { }, - changer => Amanda::Changer->new("chg-disk:$taperoot")); + changer => $chg); +set_current_slot(6); @results = run_scan($taperscan); is_deeply([ @results ], [ undef, "TEST-2", $ACCESS_WRITE ], "handles an invalid current slot by going to the next") or diag(Dumper(\@results)); +$taperscan->quit(); +$chg = Amanda::Changer->new("chg-disk:$taperoot", + tapelist => $tapelist); # simulate "amlabel" label_slot(1, "TEST-6", "X", "reuse", 1); -set_current_slot(2); $taperscan = Amanda::Taper::Scan->new( + tapelist => $tapelist, algorithm => "traditional", tapecycle => 2, - changer => Amanda::Changer->new("chg-disk:$taperoot")); + changer => $chg); +set_current_slot(2); @results = run_scan($taperscan); is_deeply([ @results ], [ undef, "TEST-2", $ACCESS_WRITE ], @@ -245,17 +274,22 @@ label_slot(1, "TEST-1", "20090424173001", "no-reuse", 1); label_slot(2, "TEST-2", "20090424173002", "reuse", 1); label_slot(3, "TEST-3", "20090424173003", "reuse", 1); label_slot(4, "TEST-4", "20090424173004", "reuse", 1); +$taperscan->quit(); + +$chg = Amanda::Changer->new("chg-disk:$taperoot", tapelist => $tapelist); set_current_slot(1); $taperscan = Amanda::Taper::Scan->new( + tapelist => $tapelist, algorithm => "traditional", tapecycle => 2, - changer => Amanda::Changer->new("chg-disk:$taperoot")); + changer => $chg); @results = run_scan($taperscan); is_deeply([ @results ], [ undef, "TEST-2", $ACCESS_WRITE ], "skips a no-reuse volume") or diag(Dumper(\@results)); +$taperscan->quit(); rmtree($taperoot); unlink($tapelist);