Imported Upstream version 3.3.3
[debian/amanda] / installcheck / amservice.pl
1 # Copyright (c) 2008-2012 Zmanda, Inc.  All Rights Reserved.
2 #
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful, but
9 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
10 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
11 # for more details.
12 #
13 # You should have received a copy of the GNU General Public License along
14 # with this program; if not, write to the Free Software Foundation, Inc.,
15 # 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # Contact information: Zmanda Inc, 465 S. Mathilda Ave., Suite 300
18 # Sunnyvale, CA 94086, USA, or: http://www.zmanda.com
19
20 use Test::More tests => 3;
21 use strict;
22 use warnings;
23
24 use lib "@amperldir@";
25 use Installcheck;
26 use Installcheck::Run qw( run run_get );
27 use Amanda::Paths;
28 use Amanda::Constants;
29
30 my $input_filename = "$Installcheck::TMP/amservice_input.txt";
31 my $testconf = Installcheck::Run::setup();
32 $testconf->write();
33 my $input;
34
35 sub write_input_file {
36     my ($contents) = @_;
37     open my $fh, ">", $input_filename
38         or die("Could not write to $input_filename");
39     print $fh $contents;
40     close $fh;
41 }
42
43 sub all_lines_ok {
44     my ($output) = @_;
45     my $ok = 1;
46
47     return 0 if not $output;
48
49     for (split /\n/, $output) {
50         next if /^OPTIONS /;
51         next if /^OK /;
52         diag "Got unexpected line: $_";
53         $ok = 0;
54     }
55
56     return $ok;
57 }
58
59 # a simple run of amservice to begin with
60 like(run_get('amservice', '-f', '/dev/null', 'localhost', 'local', 'noop'),
61     qr/^OPTIONS features=/,
62     "amservice runs noop successfully");
63
64 $input = <<EOF;
65 <dle>
66   <program>GNUTAR</program>
67   <disk>$Installcheck::TMP</disk>
68 </dle>
69 EOF
70
71 SKIP: {
72     skip "GNUTAR not installed", 1 unless $Amanda::Constants::GNUTAR;
73     write_input_file($input);
74     ok(all_lines_ok(
75         run_get('amservice', '-f', $input_filename, 'localhost', 'local', 'selfcheck')),
76         "GNUTAR program selfchecks successfully");
77 }
78
79 # (can't test DUMP, since we don't have a device)
80
81 $input = <<EOF;
82 <dle>
83   <program>APPLICATION</program>
84   <backup-program>
85     <plugin>amgtar</plugin>
86   </backup-program>
87   <disk>$Installcheck::TMP</disk>
88 </dle>
89 EOF
90
91 SKIP: {
92     skip "GNUTAR not installed", 1 unless $Amanda::Constants::GNUTAR;
93     write_input_file($input);
94     ok(all_lines_ok(
95         run_get('amservice', '-f', $input_filename, 'localhost', 'local', 'selfcheck')),
96         "amgtar application selfchecks successfully");
97 }
98
99 $input = <<EOF;
100 <dle>
101   <program>APPLICATION</program>
102   <backup-program>
103     <plugin>amstar</plugin>
104   </backup-program>
105   <disk>$Installcheck::TMP</disk>
106 </dle>
107 EOF
108
109 Installcheck::Run::cleanup();
110 unlink($input_filename);