updated sudo command
[fai-configs.git] / tests / Faitest.pm
1 #! /usr/bin/perl
2
3 # Subroutines for automatic tests
4 #
5 # Copyright (C) 2009 Thomas Lange, lange@informatik.uni-koeln.de
6 # Based on the first version by Sebastian Hetze, 08/2008
7
8 package FAITEST;
9
10 $errors = 0;
11
12 use Getopt::Long;
13 use Pod::Usage;
14 # - - - - - - - - - - - - - - - - - - - - - - - - - -
15 sub setup_test {
16
17 my $verbose = 0;
18 my $help = 0;
19 my $man = 0;
20 $verbose = $ENV{'debug'} if $ENV{'debug'};
21
22 my $result = GetOptions (
23 "verbose=i" => \$verbose,
24 "help" => \$help,
25 "man" => \$man,
26
27 );
28
29 pod2usage(1) if $help;
30 pod2usage(-exitstatus => 0, -verbose => 2) if $man;
31
32 open(LOGFILE,">> $ENV{LOGDIR}/test.log") || die "Can't open test.log. $!";
33 print LOGFILE "------------ Test $0 starting ------------\n";
34 }
35
36 sub printresult {
37
38 # write test result and set next test
39 my ($nexttest) = @_;
40
41 if ($errors > 0) {
42 print STDERR "\n===> $0 FAILED with $errors errors\n";
43 print LOGFILE "\n===> $0 FAILED with $errors errors\n";
44 } else {
45 print STDERR "\n===> $0 PASSED successfully\n";
46 print LOGFILE "\n===> $0 PASSED successfully\n";
47 print LOGFILE "NEXTTEST=$nexttest\n" if $nexttest;
48 }
49 close (LOGFILE);
50 return $errors;
51 }
52
53 sub getDevByMount {
54
55 my $mount = shift;
56 my $dev = qx#mount|grep $mount|cut -d' ' -f1#;
57 chomp $dev;
58 return $dev
59 }
60
61 sub checkMdStat {
62
63 my ($device, $expected) = @_;
64 my ($value) = qx#grep -i "^$device\\b" /proc/mdstat# =~ m/$device\s*:\s*(.*)/i;
65
66 if ($value eq $expected) {
67 print LOGFILE "Check raid $device success\n";
68 return 0;
69 } else {
70 print LOGFILE "Check raid $device FAILED.\n Expect <$expected>\n Found <$value>\n";
71 $errors++;
72 return 1;
73 }
74 }
75
76 sub checkE2fsAttribute {
77
78 my ($device, $attribute, $expected) = @_;
79
80 # since attribute is a space separated list of attributes, IMO we must loop over
81 # the list. Ask Sebastian again
82 my ($value) = qx#tune2fs -l $device |grep -i "$attribute"# =~ m/$attribute:\s+(.*)/i;
83
84 if ($value eq $expected) {
85 print LOGFILE "Check $attribute for $device success\n";
86 return 0;
87 } else {
88 print LOGFILE "Check $attribute for $device FAILED.\n Expect <$expected>\n Found <$value>\n";
89
90 $errors++;
91 return 1;
92 }
93 }
94
95 1;