Imported Upstream version 3.3.2
[debian/amanda] / installcheck / amdevcheck.pl
index f82e37dd5605af98a59dd5e0e58ce1bb8860b1fb..d8423a5deba9ef4d2c0038dc24df1ade6f08b2e8 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2005-2008 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
 # 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 Mathlida Ave, Suite 300
+# Contact information: Zmanda Inc, 465 S. Mathilda Ave., Suite 300
 # Sunnyvale, CA 94086, USA, or: http://www.zmanda.com
 
-use Test::More tests => 10;
+use Test::More tests => 17;
+use strict;
+use warnings;
 
 use lib "@amperldir@";
 use Installcheck::Config;
 use Installcheck::Run qw(run run_get run_err $diskname);
+use Installcheck::Dumpcache;
 use Amanda::Paths;
 
 my $testconf;
@@ -41,40 +44,63 @@ like(run_err('amdevcheck', 'this-probably-doesnt-exist'), qr(could not open conf
 
 # this is re-created for each test
 $testconf = Installcheck::Config->new();
-$testconf->add_param("tapedev", '"/dev/null"');
+$testconf->add_param("tapedev", '"null:null"');
 $testconf->write();
 
 # test some defaults
-ok(run('amdevcheck', 'TESTCONF'), "run succeeds with a /dev/null tapedev");
+ok(run('amdevcheck', 'TESTCONF'), "run succeeds with a null tapedev");
 is_deeply([ sort split "\n", $Installcheck::Run::stdout],
-         [ sort "MESSAGE File /dev/null is not a tape device", "DEVICE_ERROR"],
-         "Fail with correct message for a /dev/null tapedev");
+         [ sort "MESSAGE Can't open NULL device for reading or appending.", "DEVICE_ERROR"],
+         "Fail with correct message for a null tapedev");
 
 ##
 # Now use a config with a vtape
 
 # this is re-created for each test
 $testconf = Installcheck::Run::setup();
-$testconf->add_param('label_new_tapes', '"TESTCONF%%"');
+$testconf->add_param('autolabel', '"TESTCONF%%" empty volume_error');
 $testconf->add_dle("localhost $diskname installcheck-test");
 $testconf->write();
 
 ok(run('amdevcheck', 'TESTCONF'), "run succeeds with an unlabeled tape");
 is_deeply([ sort split "\n", $Installcheck::Run::stdout],
-         [ sort "MESSAGE Error loading device header -- unlabeled volume?", "VOLUME_UNLABELED", "DEVICE_ERROR", "VOLUME_ERROR"],
+         [ sort "MESSAGE File 0 not found", "VOLUME_UNLABELED"],
          "..and output is correct");
 
-ok(run('amdevcheck', 'TESTCONF', "/dev/null"),
+ok(run('amdevcheck', 'TESTCONF', "--properties"),
+    "can list properties with --properties option");
+
+ok(run('amdevcheck', 'TESTCONF', "--properties", "BLOCK_SIZE"),
+    "check block_size property value");
+is_deeply([ sort split "\n", $Installcheck::Run::stdout],
+         [ sort "BLOCK_SIZE=32768"],
+    ".. and confirm it is default value");
+
+ok(run('amdevcheck', 'TESTCONF', "--properties", "CANONICAL_NAME"),
+    "check canonical_name property value");
+is_deeply([ sort split "\n", $Installcheck::Run::stdout],
+         [ sort "CANONICAL_NAME=file:" . Installcheck::Run::vtape_dir() ],
+    ".. and confirm it is set to default value");
+
+ok(run('amdevcheck', 'TESTCONF', "--properties", "BLOCK_SIZE,CANONICAL_NAME"),
+    "check a list of properties");
+is_deeply([ sort split "\n", $Installcheck::Run::stdout],
+         [ sort "BLOCK_SIZE=32768",
+                "CANONICAL_NAME=file:" . Installcheck::Run::vtape_dir() ],
+    ".. with correct results");
+
+ok(run('amdevcheck', 'TESTCONF', 'null:null'),
     "can override device on the command line");
 is_deeply([ sort split "\n", $Installcheck::Run::stdout],
-         [ sort "MESSAGE File /dev/null is not a tape device", "DEVICE_ERROR"],
+         [ sort "MESSAGE Can't open NULL device for reading or appending.", "DEVICE_ERROR"],
     ".. and produce a corresponding error message");
 
-BAIL_OUT("amdump failed")
-    unless run('amdump', 'TESTCONF');
+Installcheck::Dumpcache::load("basic");
 
-is_deeply([ sort split "\n", run_get('amdevcheck', 'TESTCONF') ],
+# the 'basic' dumpcache uses a changer, not a tapedev, and amdevcheck doesn't
+# understand that, so we have to give an explicit device here
+is_deeply([ sort split "\n",
+           run_get('amdevcheck', 'TESTCONF', 'file:'.$Installcheck::Run::taperoot) ],
          [ sort "SUCCESS" ],
     "used vtape described as SUCCESS");
-
 Installcheck::Run::cleanup();