X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=installcheck%2FAmanda_Tapelist.pl;h=02e6fb465af8930ccb6ebb0018a7aca9d7bfd48d;hb=768a18adc28561a0c177a164580b237df04b55b6;hp=bb4be1d73e94db05a720793bf9dd8a4dba0322d2;hpb=fd48f3e498442f0cbff5f3606c7c403d0566150e;p=debian%2Famanda diff --git a/installcheck/Amanda_Tapelist.pl b/installcheck/Amanda_Tapelist.pl index bb4be1d..02e6fb4 100644 --- a/installcheck/Amanda_Tapelist.pl +++ b/installcheck/Amanda_Tapelist.pl @@ -1,4 +1,4 @@ -# Copyright (c) 2008 Zmanda, Inc. All Rights Reserved. +# 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 @@ -16,13 +16,20 @@ # Contact information: Zmanda Inc, 465 S. Mathilda Ave., Suite 300 # Sunnyvale, CA 94086, USA, or: http://www.zmanda.com -use Test::More tests => 20; +use Test::More tests => 26; use strict; +use warnings; use lib "@amperldir@"; use Installcheck::Config; use Amanda::Tapelist; use Amanda::Config qw( :init :getconf config_dir_relative ); +use POSIX ":sys_wait_h"; +use Data::Dumper; + +# put the debug messages somewhere +Amanda::Debug::dbopen("installcheck"); +Installcheck::log_test_output(); my $tl; my $tl_ok; @@ -56,24 +63,31 @@ sub readtapelist { } @lines = ( - "20071111010002 TESTCONF004 reuse\n", - "20071110010002 TESTCONF003 reuse\n", - "20071109010002 TESTCONF002 reuse #comment 2\n", + "20071111010002 TESTCONF004 reuse META:META1\n", + "20071110010002 TESTCONF003 reuse BARCODE:BAR-003\n", + "20071109010002 TESTCONF002 reuse BARCODE:BAR-002 META:META2 #comment 2\n", "20071108010001 TESTCONF001 no-reuse #comment 1\n", ); mktapelist($tapelist, @lines); -$tl = Amanda::Tapelist::read_tapelist($tapelist); -$tl_ok = is_deeply($tl, [ +$tl = Amanda::Tapelist->new($tapelist); +$tl_ok = is_deeply($tl, { + filename => $tapelist, + lockname => $tapelist . ".lock", + tles => [ { 'datestamp' => '20071111010002', 'label' => 'TESTCONF004', - 'reuse' => 1, 'position' => 1, 'comment' => undef }, + 'reuse' => 1, 'position' => 1, + 'barcode' => undef, 'meta' => 'META1', 'comment' => undef }, { 'datestamp' => '20071110010002', 'label' => 'TESTCONF003', - 'reuse' => 1, 'position' => 2, 'comment' => undef }, + 'reuse' => 1, 'position' => 2, + 'barcode' => 'BAR-003', 'meta' => undef, 'comment' => undef }, { 'datestamp' => '20071109010002', 'label' => 'TESTCONF002', - 'reuse' => 1, 'position' => 3, 'comment' => 'comment 2' }, + 'reuse' => 1, 'position' => 3, + 'barcode' => 'BAR-002', 'meta' => 'META2', 'comment' => 'comment 2' }, { 'datestamp' => '20071108010001', 'label' => 'TESTCONF001', - 'reuse' => '', 'position' => 4, 'comment' => 'comment 1' }, -], "A simple tapelist is parsed correctly"); + 'reuse' => '', 'position' => 4, + 'barcode' => undef, 'meta' => undef, 'comment' => 'comment 1' }, +] }, "A simple tapelist is parsed correctly"); SKIP: { skip "Tapelist is parsed incorrectly, so these tests are unlikely to work", 15, @@ -86,7 +100,8 @@ SKIP: { is_deeply($tl->lookup_tapelabel('TESTCONF002'), { 'datestamp' => '20071109010002', 'label' => 'TESTCONF002', - 'reuse' => 1, 'position' => 3, 'comment' => 'comment 2' }, + 'reuse' => 1, 'position' => 3, + 'barcode' => 'BAR-002', 'meta' => 'META2', 'comment' => 'comment 2' }, "lookup_tapelabel works"); is_deeply($tl->lookup_tapelabel('TESTCONF009'), undef, @@ -94,7 +109,8 @@ SKIP: { is_deeply($tl->lookup_tapepos(4), { 'datestamp' => '20071108010001', 'label' => 'TESTCONF001', - 'reuse' => '', 'position' => 4, 'comment' => 'comment 1' }, + 'reuse' => '', 'position' => 4, + 'barcode' => undef, 'meta' => undef, 'comment' => 'comment 1' }, "lookup_tapepos works"); is_deeply($tl->lookup_tapepos(9), undef, @@ -102,37 +118,55 @@ SKIP: { is_deeply($tl->lookup_tapedate('20071110010002'), { 'datestamp' => '20071110010002', 'label' => 'TESTCONF003', - 'reuse' => 1, 'position' => 2, 'comment' => undef }, + 'reuse' => 1, 'position' => 2, + 'barcode' => 'BAR-003', 'meta' => undef, 'comment' => undef }, "lookup_tapedate works"); is_deeply($tl->lookup_tapedate('12345678'), undef, "lookup_tapedate returns undef on an unknown datestamp"); # try some edits - $tl->add_tapelabel("20080112010203", "TESTCONF007", "seven"); - is(scalar @$tl, 5, "add_tapelabel adds a new element to the tapelist"); + $tl->add_tapelabel("20080112010203", "TESTCONF007", "seven", 1, 'META3', 'BAR-007'); + is(scalar @{$tl->{'tles'}}, 5, "add_tapelabel adds a new element to the tapelist"); is_deeply($tl->lookup_tapepos(1), { 'datestamp' => '20080112010203', 'label' => 'TESTCONF007', - 'reuse' => 1, 'position' => 1, 'comment' => 'seven' }, + 'reuse' => 1, 'position' => 1, + 'barcode' => 'BAR-007', 'meta' => 'META3', 'comment' => 'seven' }, ".. lookup_tapepos finds it at the beginning"); is_deeply($tl->lookup_tapelabel("TESTCONF007"), { 'datestamp' => '20080112010203', 'label' => 'TESTCONF007', - 'reuse' => 1, 'position' => 1, 'comment' => 'seven' }, + 'reuse' => 1, 'position' => 1, + 'barcode' => 'BAR-007', 'meta' => 'META3' , 'comment' => 'seven' }, ".. lookup_tapelabel finds it"); is_deeply($tl->lookup_tapedate("20080112010203"), { 'datestamp' => '20080112010203', 'label' => 'TESTCONF007', - 'reuse' => 1, 'position' => 1, 'comment' => 'seven' }, + 'reuse' => 1, 'position' => 1, + 'barcode' => 'BAR-007', 'meta' => 'META3', 'comment' => 'seven' }, ".. lookup_tapedate finds it"); + # try some edits + $tl->add_tapelabel("20080112010204", "TESTCONF008", "eight", 0); + is(scalar @{$tl->{'tles'}}, 6, "add_tapelabel adds a new element to the tapelist no-reuse"); + + is_deeply($tl->lookup_tapelabel("TESTCONF008"), + { 'datestamp' => '20080112010204', 'label' => 'TESTCONF008', + 'reuse' => 0, 'position' => 1, + 'barcode' => undef, 'meta' => undef, 'comment' => 'eight' }, + ".. lookup_tapelabel finds it no-reuse"); + + $tl->remove_tapelabel("TESTCONF008"); + is(scalar @{$tl->{'tles'}}, 5, "remove_tapelabel removes an element from the tapelist, no-reuse"); + $tl->remove_tapelabel("TESTCONF002"); - is(scalar @$tl, 4, "remove_tapelabel removes an element from the tapelist"); + is(scalar @{$tl->{'tles'}}, 4, "remove_tapelabel removes an element from the tapelist"); is_deeply($tl->lookup_tapepos(4), # used to be in position 5 { 'datestamp' => '20071108010001', 'label' => 'TESTCONF001', - 'reuse' => '', 'position' => 4, 'comment' => 'comment 1' }, + 'reuse' => '', 'position' => 4, + 'barcode' => undef, 'meta' => undef, 'comment' => 'comment 1' }, ".. tape positions are adjusted correctly"); is_deeply($tl->lookup_tapelabel("TESTCONF002"), undef, @@ -141,6 +175,21 @@ SKIP: { is_deeply($tl->lookup_tapedate("20071109010002"), undef, ".. lookup_tapedate no longer finds it"); + # insert in the middle of the list. + $tl->add_tapelabel("20071109010204", "TESTCONF009", "nine", 1); + + is_deeply($tl->lookup_tapepos(4), + { 'datestamp' => '20071109010204', 'label' => 'TESTCONF009', + 'reuse' => '1', 'position' => 4, + 'barcode' => undef, 'meta' => undef, 'comment' => 'nine' }, + ".. tape positions are adjusted correctly"); + + is_deeply($tl->lookup_tapelabel('TESTCONF009'), + { 'datestamp' => '20071109010204', 'label' => 'TESTCONF009', + 'reuse' => '1', 'position' => 4, + 'barcode' => undef, 'meta' => undef, 'comment' => 'nine' }, + ".. tape positions are adjusted correctly"); + ## set tapecycle to 0 to perform the next couple tests config_uninit(); my $cor = new_config_overrides(1); @@ -167,12 +216,29 @@ SKIP: { ); mktapelist($tapelist, @lines); -$tl = Amanda::Tapelist::read_tapelist($tapelist); -is_deeply($tl, [ +$tl = Amanda::Tapelist->new($tapelist); +is_deeply($tl, { + filename => $tapelist, + lockname => $tapelist . ".lock", + tles => [ { 'datestamp' => '2006123456', 'label' => 'FOO', - 'reuse' => 1, 'position' => 1, 'comment' => undef }, -], "Invalid lines are ignored"); + 'reuse' => 1, 'position' => 1, + 'barcode' => undef, 'meta' => undef, 'comment' => undef }, +] }, "Invalid lines are ignored"); # make sure clear_tapelist is empty -$tl = Amanda::Tapelist::clear_tapelist(); -is_deeply($tl, [ ], "clear_tapelist returns an empty tapelist"); +$tl->clear_tapelist(); +is_deeply($tl, { filename => $tapelist, + lockname => $tapelist . ".lock", + tles => [] }, "clear_tapelist returns an empty tapelist"); + +$tl->reload(); +is_deeply($tl, { + filename => $tapelist, + lockname => $tapelist . ".lock", + tles => [ + { 'datestamp' => '2006123456', 'label' => 'FOO', + 'reuse' => 1, 'position' => 1, + 'barcode' => undef, 'meta' => undef, 'comment' => undef }, +] }, "reload works"); +