------------------------------------------------------------ revno: 11292 revision-id: [EMAIL PROTECTED] parent: [EMAIL PROTECTED] committer: Jelmer Vernooij <[EMAIL PROTECTED]> branch nick: 4.0-perlselftest timestamp: Wed 2007-01-24 17:00:07 +0100 message: Add documentation, initial support for the buildfarm modified: source/script/tests/selftest.pl svn-v2:[EMAIL PROTECTED] === modified file 'source/script/tests/selftest.pl' --- a/source/script/tests/selftest.pl 2007-01-22 23:49:29 +0000 +++ b/source/script/tests/selftest.pl 2007-01-24 16:00:07 +0000 @@ -2,6 +2,82 @@ # Bootstrap Samba and run a number of tests against it. # Copyright (C) 2005-2007 Jelmer Vernooij <[EMAIL PROTECTED]> # Published under the GNU GPL, v3 or later. + +=pod + +=head1 NAME + +selftest - Samba test runner + +=head1 SYNOPSIS + +selftest --help + +selftest [--target=samba4|samba3|win] [--socket-wrapper] [--quick] [--one] PREFIX + +=head1 DESCRIPTION + +A simple test runner. + +=head1 OPTIONS + +=over 4 + +=item I<--help> + +Show list of available options. + +=item I<--target samba4|samba3|win> + +Specify test target against which to run. Default is 'samba4'. + +=item I<--quick> + +Run only a limited number of tests. Intended to run in about 30 seconds on +moderately recent systems. + +=item I<--socket-wrapper> + +Use socket wrapper library for communication with server. Only works +when the server is running locally. + +Will prevent TCP and UDP ports being opened on the local host but +(transparently) redirects these calls to use unix domain sockets. + +=item I<--one> + +Abort as soon as one test fails. + +=back + +=head1 ENVIRONMENT + +=over 4 + +=item I<SMBD_VALGRIND> + +=item I<TORTURE_MAXTIME> + +=item I<VALGRIND> + +=item I<TEST_LDAP> + +=item I<TLS_ENABLED> + +=item I<srcdir> + +=back + +=head1 LICENSE + +selftest is licensed under the GNU General Public License L<http://www.gnu.org/licenses/gpl.html>. + +=head1 AUTHOR + +Jelmer Vernooij + +=cut + use strict; use warnings; @@ -11,6 +87,12 @@ use POSIX; use Cwd; +my $opt_help = 0; +my $opt_target = "samba4"; +my $opt_quick = 0; +my $opt_socket_wrapper = 0; +my $opt_one = 0; + sub slapd_start($$) { my ($conf, $uri) = @_; my $oldpath = $ENV{PATH}; @@ -91,12 +173,58 @@ exit $failed; } +my $totalfailed = 0; +my $start = time(); + +sub run_test_buildfarm($$$$) +{ + my ($name, $cmd, $i, $total) = @_; + print "--==--==--==--==--==--==--==--==--==--==--\n"; + print "Running test $name (level 0 stdout)\n"; + print "--==--==--==--==--==--==--==--==--==--==--\n"; + system("date"); + print "Testing $name"; + + system($cmd); + +# print "SMBD is down! Skipping: $cmd\n"; +# print "==========================================\n"; +# print "TEST SKIPPED: $name (reason SMBD is down)\n"; +# print "==========================================\n"; +# + print "ALL OK: $cmd\n"; + print "==========================================\n"; + print "TEST PASSED: $name\n"; + print "==========================================\n"; + + my $ret = 0; + if ($ret != 0) { + $totalfailed++; + } +} + +sub run_test_plain($$$$) +{ + my ($name, $cmd, $i, $total) = @_; + my $err = ""; + if ($totalfailed > 0) { $err = ", $totalfailed errors"; } + printf "[$i/$total in " . (time() - $start)."s$err] $name\n"; + open(RESULT, "$cmd 2>/dev/null|"); + while (<RESULT>) { } + close(RESULT); + my $ret = 0; + if ($ret != 0) { + $totalfailed++; + exit(1) if ($opt_one); + } +} + sub ShowHelp() { print "Samba test runner Copyright (C) Jelmer Vernooij <[EMAIL PROTECTED]> -Usage: $Script PREFIX +Usage: $Script [OPTIONS] PREFIX Generic options: --help this help page @@ -108,11 +236,6 @@ exit(0); } -my $opt_help = 0; -my $opt_target = "samba4"; -my $opt_quick = 0; -my $opt_socket_wrapper = 0; -my $opt_one = 0; my $result = GetOptions ( 'help|h|?' => \$opt_help, @@ -160,6 +283,8 @@ my $testsdir = "$srcdir/script/tests"; my $tls_enabled = not $opt_quick; +my $from_build_farm = (defined($ENV{RUN_FROM_BUILD_FARM}) and + ($ENV{RUN_FROM_BUILD_FARM} eq "yes")); $ENV{TLS_ENABLED} = ($tls_enabled?"yes":"no"); $ENV{LD_LDB_MODULE_PATH} = "$old_pwd/bin/modules/ldb"; @@ -236,18 +361,17 @@ $ENV{SOCKET_WRAPPER_DEFAULT_IFACE} = 6; $ENV{TORTURE_INTERFACES} = '127.0.0.6/8,127.0.0.7/8,127.0.0.8/8,127.0.0.9/8,127.0.0.10/8,127.0.0.11/8'; -my @torture_options = ("--option=interfaces=$ENV{TORTURE_INTERFACES} $ENV{CONFIGURATION}"); +my @torture_options = (); +push (@torture_options, "--option=interfaces=$ENV{TORTURE_INTERFACES}"); +push (@torture_options, $ENV{CONFIGURATION}); # ensure any one smbtorture call doesn't run too long push (@torture_options, "--maximum-runtime=$torture_maxtime"); push (@torture_options, "--target=$opt_target"); -push (@torture_options, "--option=torture:progress=no") - if (defined($ENV{RUN_FROM_BUILD_FARM}) and $ENV{RUN_FROM_BUILD_FARM} eq "yes"); +push (@torture_options, "--option=torture:progress=no") if ($from_build_farm); $ENV{TORTURE_OPTIONS} = join(' ', @torture_options); print "OPTIONS $ENV{TORTURE_OPTIONS}\n"; -my $start = time(); - open(DATA, ">$test_fifo"); # give time for nbt server to register its names @@ -264,7 +388,6 @@ # start off with 0 failures $ENV{failed} = 0; -my $totalfailed = 0; my @todo = (); @@ -293,24 +416,16 @@ my $total = $#todo + 1; my $i = 0; $| = 1; -$result = {}; foreach (@todo) { $i++; - my $err = ""; - if ($totalfailed > 0) { $err = ", $totalfailed errors"; } - printf "[$i/$total in " . (time() - $start)."s$err] $$_[0]\n"; my $cmd = $$_[1]; $cmd =~ s/([\(\)])/\\$1/g; my $name = $$_[0]; - $result->{$name} = ""; - open(RESULT, "$cmd 2>/dev/null|"); - while (<RESULT>) { $result->{$name}.=$_; } - close(RESULT); - my $ret = 0; - if ($ret != 0) { - $totalfailed++; - exit(1) if ($opt_one); + if ($from_build_farm) { + run_test_buildfarm($name, $cmd, $i, $total); + } else { + run_test_plain($name, $cmd, $i, $total); } }