97 lines
2.2 KiB
Perl
97 lines
2.2 KiB
Perl
#! /usr/bin/perl
|
|
|
|
# Subroutines for automatic tests
|
|
#
|
|
# Copyright (C) 2009 Thomas Lange, lange@cs.uni-koeln.de
|
|
# Based on the first version by Sebastian Hetze, 08/2008
|
|
|
|
package FAITEST;
|
|
|
|
my $errors = 0;
|
|
|
|
use strict;
|
|
use Getopt::Long;
|
|
use Pod::Usage;
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
sub setup_test {
|
|
|
|
my $verbose = 0;
|
|
my $help = 0;
|
|
my $man = 0;
|
|
$verbose = $ENV{'debug'} if $ENV{'debug'};
|
|
|
|
my $result = GetOptions (
|
|
"verbose=i" => \$verbose,
|
|
"help" => \$help,
|
|
"man" => \$man,
|
|
|
|
);
|
|
|
|
pod2usage(1) if $help;
|
|
pod2usage(-exitstatus => 0, -verbose => 2) if $man;
|
|
|
|
open(LOGFILE,">> $ENV{LOGDIR}/test.log") || die "Can't open test.log. $!";
|
|
print LOGFILE "------------ Test $0 starting ------------\n";
|
|
}
|
|
|
|
sub printresult {
|
|
|
|
# write test result and set next test
|
|
my ($nexttest) = @_;
|
|
|
|
if ($errors > 0) {
|
|
print STDERR "\n===> $0 FAILED with $errors errors\n";
|
|
print LOGFILE "\n===> $0 FAILED with $errors errors\n";
|
|
} else {
|
|
print STDERR "\n===> $0 PASSED successfully\n";
|
|
print LOGFILE "\n===> $0 PASSED successfully\n";
|
|
print LOGFILE "NEXTTEST=$nexttest\n" if $nexttest;
|
|
}
|
|
close (LOGFILE);
|
|
return $errors;
|
|
}
|
|
|
|
sub getDevByMount {
|
|
|
|
my $mount = shift;
|
|
my $dev = qx#mount|grep $mount|cut -d' ' -f1#;
|
|
chomp $dev;
|
|
return $dev
|
|
}
|
|
|
|
sub checkMdStat {
|
|
|
|
my ($device, $expected) = @_;
|
|
my ($value) = qx#grep -i "^$device\\b" /proc/mdstat# =~ m/$device\s*:\s*(.*)/i;
|
|
|
|
if ($value eq $expected) {
|
|
print LOGFILE "Check raid $device success\n";
|
|
return 0;
|
|
} else {
|
|
print LOGFILE "Check raid $device FAILED.\n Expect <$expected>\n Found <$value>\n";
|
|
$errors++;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
sub checkE2fsAttribute {
|
|
|
|
my ($device, $attribute, $expected) = @_;
|
|
|
|
# since attribute is a space separated list of attributes, IMO we must loop over
|
|
# the list. Ask Sebastian again
|
|
my ($value) = qx#tune2fs -l $device |grep -i "$attribute"# =~ m/$attribute:\s+(.*)/i;
|
|
|
|
if ($value eq $expected) {
|
|
print LOGFILE "Check $attribute for $device success\n";
|
|
return 0;
|
|
} else {
|
|
print LOGFILE "Check $attribute for $device FAILED.\n Expect <$expected>\n Found <$value>\n";
|
|
|
|
$errors++;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
1;
|