diff options
-rw-r--r-- | source4/main.mk | 2 | ||||
-rw-r--r-- | source4/samba4-skip | 20 | ||||
-rwxr-xr-x | source4/script/tests/selftest.pl | 37 | ||||
-rwxr-xr-x | source4/script/tests/test_local.sh | 17 | ||||
-rwxr-xr-x | source4/script/tests/test_posix.sh | 26 |
5 files changed, 57 insertions, 45 deletions
diff --git a/source4/main.mk b/source4/main.mk index 18ced055f5..7807b5f52f 100644 --- a/source4/main.mk +++ b/source4/main.mk @@ -283,7 +283,7 @@ realdistclean: distclean removebackup check:: test -SELFTEST = $(srcdir)/script/tests/selftest.pl --prefix=${selftest_prefix} --builddir=$(builddir) --srcdir=$(srcdir) --expected-failures=samba4-knownfail +SELFTEST = $(srcdir)/script/tests/selftest.pl --prefix=${selftest_prefix} --builddir=$(builddir) --srcdir=$(srcdir) --expected-failures=samba4-knownfail --skip=samba4-skip test: all libraries $(SELFTEST) $(DEFAULT_TEST_OPTIONS) $(TESTS) --immediate diff --git a/source4/samba4-skip b/source4/samba4-skip new file mode 100644 index 0000000000..00ad25e791 --- /dev/null +++ b/source4/samba4-skip @@ -0,0 +1,20 @@ +BASE-CHARSET +BASE-DEFER_OPEN +BASE-DELAYWRITE +RAW-COMPOSITE +RAW-OPLOCK +BASE-IOMETER +BASE-SAMBA3ERROR +BASE-CASETABLE +BASE-NTTRANS +BASE-BENCH-HOLDCON +BASE-SCAN-MAXFID +RAW-BENCH-OPLOCK +RAW-SAMBA3HIDE +RAW-SAMBA3CLOSEERR +RAW-SAMBA3CHECKFSP +RAW-SAMBA3BADPATH +RAW-SCAN-EAMAX +SMB2-LOCK +SMB2-NOTIFY +LOCAL-RESOLVE diff --git a/source4/script/tests/selftest.pl b/source4/script/tests/selftest.pl index 6c2ea6d0b1..e75e5d2c56 100755 --- a/source4/script/tests/selftest.pl +++ b/source4/script/tests/selftest.pl @@ -69,6 +69,11 @@ The format for the file is, one entry per line: TESTSUITE-NAME/TEST-NAME +=item I<--skip> + +Specify a file containing a list of tests that should be skipped. Possible candidates are +tests that segfault the server, flip or don't end. + =item I<--one> Abort as soon as one test fails. @@ -123,6 +128,7 @@ my $opt_socket_wrapper_pcap = undef; my $opt_one = 0; my $opt_immediate = 0; my $opt_expected_failures = undef; +my $opt_skip = undef; my $opt_verbose = 0; my $srcdir = "."; @@ -132,10 +138,12 @@ my $prefix = "st"; my $suitesfailed = []; my $start = time(); my @expected_failures = (); +my @skips = (); my $statistics = { SUITES_FAIL => 0, SUITES_OK => 0, + SUITES_SKIPPED => 0, TESTS_UNEXPECTED_OK => 0, TESTS_EXPECTED_OK => 0, @@ -148,13 +156,19 @@ sub expecting_failure($) { my $fullname = shift; - foreach (@expected_failures) { - return 1 if $fullname =~ /^$_$/; - } + return 1 if (grep(/^$fullname$/, @expected_failures)); return 0; } +sub skip($) +{ + my $fullname = shift; + + return 1 if (grep(/^$fullname$/, @skips)); + return 0; +} + sub run_test_buildfarm($$$$) { my ($name, $cmd, $i, $suitestotal) = @_; @@ -310,6 +324,7 @@ my $result = GetOptions ( 'one' => \$opt_one, 'immediate' => \$opt_immediate, 'expected-failures=s' => \$opt_expected_failures, + 'skip=s' => \$opt_skip, 'srcdir=s' => \$srcdir, 'builddir=s' => \$builddir, 'verbose' => \$opt_verbose @@ -419,6 +434,15 @@ if (defined($opt_expected_failures)) { close(KNOWN); } +if (defined($opt_skip)) { + open(SKIP, "<$opt_skip") or die("unable to read skip file: $!"); + while (<SKIP>) { + chomp; + s/([ \t]+)\#(.*)$//; + push (@skips, $_); } + close(SKIP); +} + my $test_fifo = "$prefix/smbd_test.fifo"; $ENV{SMBD_TEST_FIFO} = $test_fifo; @@ -496,6 +520,13 @@ foreach (@todo) { my $cmd = $$_[1]; $cmd =~ s/([\(\)])/\\$1/g; my $name = $$_[0]; + + if (skip($name)) { + print "SKIPPED: $name\n"; + $statistics->{SUITES_SKIPPED}++; + next; + } + if ($from_build_farm) { run_test_buildfarm($name, $cmd, $i, $suitestotal); } else { diff --git a/source4/script/tests/test_local.sh b/source4/script/tests/test_local.sh index 6a96987b9c..2751c73b11 100755 --- a/source4/script/tests/test_local.sh +++ b/source4/script/tests/test_local.sh @@ -21,25 +21,10 @@ incdir=`dirname $0` # the local tests don't need smbd SMBD_TEST_FIFO="" export SMBD_TEST_FIFO -skipped="LOCAL-RESOLVE" - -echo "WARNING: Skipping $skipped" failed=0 for t in $local_tests; do - skip=0 - for s in $skipped; do - if [ x"$s" = x"$t" ]; then - skip=1; - break; - fi - done - if [ $skip = 1 ]; then - continue; - fi - - name="$t" - testit "$name" $VALGRIND bin/smbtorture $TORTURE_OPTIONS ncalrpc: $t "$*" + testit "$t" $VALGRIND bin/smbtorture $TORTURE_OPTIONS ncalrpc: $t "$*" done testok $0 $failed diff --git a/source4/script/tests/test_posix.sh b/source4/script/tests/test_posix.sh index 8f9013df62..9099fe31a0 100755 --- a/source4/script/tests/test_posix.sh +++ b/source4/script/tests/test_posix.sh @@ -25,34 +25,10 @@ raw=`bin/smbtorture --list | grep "^RAW-" | xargs` base=`bin/smbtorture --list | grep "^BASE-" | xargs` tests="$base $raw $smb2" -# -# please add tests you want to be skipped here! -# -skipped="BASE-CHARSET BASE-DEFER_OPEN BASE-DELAYWRITE RAW-COMPOSITE RAW-OPLOCK BASE-IOMETER" -skipped="$skipped BASE-SAMBA3ERROR BASE-CASETABLE BASE-NTTRANS BASE-BENCH-HOLDCON BASE-SCAN-MAXFID" -skipped="$skipped RAW-BENCH-OPLOCK RAW-SAMBA3HIDE RAW-SAMBA3CLOSEERR RAW-SAMBA3CHECKFSP RAW-SAMBA3BADPATH" -skipped="$skipped RAW-SCAN-EAMAX SMB2-LOCK SMB2-NOTIFY" - -echo "WARNING: Skipping tests $skipped" - -failed=0 for t in $tests; do if [ ! -z "$start" -a "$start" != $t ]; then continue; fi - skip=0 - for s in $skipped; do - if [ x"$s" = x"$t" ]; then - skip=1; - break; - fi - done - if [ $skip = 1 ]; then - continue; - fi start="" - name="$t" - testit "$name" $VALGRIND bin/smbtorture $TORTURE_OPTIONS $ADDARGS $unc -U"$username"%"$password" $t + testit "$t" $VALGRIND bin/smbtorture $TORTURE_OPTIONS $ADDARGS $unc -U"$username"%"$password" $t done - -testok $0 $failed |