X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=installcheck%2FAmanda_Changer.pl;h=416586591c0eabd2239fa8f5e6a35d5fa8349d10;hb=4f0b86f7a23848c16cfe82fae81e639917fcff27;hp=910d459cdea9ed0b54faf4438083e4c72feee8b6;hpb=42ff24f2a525d5965e1841b2ebe3ee0f4b918ac6;p=debian%2Famanda diff --git a/installcheck/Amanda_Changer.pl b/installcheck/Amanda_Changer.pl index 910d459..4165865 100644 --- a/installcheck/Amanda_Changer.pl +++ b/installcheck/Amanda_Changer.pl @@ -1,4 +1,4 @@ -# Copyright (c) 2007, 2008, 2009, 2010 Zmanda, Inc. All Rights Reserved. +# Copyright (c) 2007-2012 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 @@ -16,7 +16,7 @@ # Contact information: Zmanda Inc, 465 S. Mathilda Ave., Suite 300 # Sunnyvale, CA 94086, USA, or: http://www.zmanda.com -use Test::More tests => 47; +use Test::More tests => 54; use File::Path; use Data::Dumper; use strict; @@ -25,11 +25,12 @@ use warnings; use lib "@amperldir@"; use Installcheck::Config; use Amanda::Paths; -use Amanda::Device; +use Amanda::Device qw( :constants );; use Amanda::Debug; use Amanda::MainLoop; use Amanda::Config qw( :init :getconf config_dir_relative ); use Amanda::Changer; +use Amanda::Tapelist; # set up debugging so debug output doesn't interfere with test results Amanda::Debug::dbopen("installcheck"); @@ -249,9 +250,33 @@ if ($cfg_result != $CFGERR_OK) { } # check out the relevant changer properties -my $chg = Amanda::Changer->new("mychanger"); +my $tlf = Amanda::Config::config_dir_relative(getconf($CNF_TAPELIST)); +my $tl = Amanda::Tapelist->new($tlf); +my $chg = Amanda::Changer->new("mychanger", tapelist => $tl); is($chg->{'config'}->get_property("testprop"), "testval", "changer properties are correctly represented"); +is($chg->have_inventory(), 1, "changer have inventory"); +my @new_tape_label = $chg->make_new_tape_label(); +is_deeply(\@new_tape_label, [undef, "template is not set, you must set autolabel"], "no make_new_tape_label"); +is($chg->make_new_meta_label(), undef, "no make_new_meta_label"); + +$chg = Amanda::Changer->new("mychanger", tapelist => $tl, + labelstr => "TESTCONF-[0-9][0-9][0-9]-[a-z][a-z][a-z]-[0-9][0-9][0-9]", + autolabel => { template => '$c-$m-$b-%%%', + other_config => 1, + non_amanda => 1, + volume_error => 0, + empty => 1 }, + meta_autolabel => "%%%"); +my $meta = $chg->make_new_meta_label(); +is($meta, "001", "meta 001"); +my $label = $chg->make_new_tape_label(meta => $meta, barcode => 'aaa'); +is($label, 'TESTCONF-001-aaa-001', "label TESTCONF-001-aaa-001"); + +is($chg->volume_is_labelable($DEVICE_STATUS_VOLUME_UNLABELED, $Amanda::Header::F_EMPTY), + 1, "empty volume is labelable"); +is($chg->volume_is_labelable($DEVICE_STATUS_VOLUME_ERROR, undef), + 0, "empty volume is labelable"); # test loading by label { @@ -522,6 +547,7 @@ Amanda::MainLoop::run(); $do_info->(); Amanda::MainLoop::run(); } +$chg->quit(); # Test the various permutations of configuration setup, with a patched # _new_from_uri so we can monitor the result @@ -676,7 +702,8 @@ sub test_locked_state { my $num_outstanding = 0; my $steps = define_steps - cb_ref => \$finished_cb; + cb_ref => \$finished_cb, + finalize => sub { $chg->quit() if defined $chg }; step start => sub { $chg = Amanda::Changer->new("chg-null:");