------------------------------------------------------------
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);
        }
 }
 

Reply via email to