Rev 11293: - Fix return code checking. in file:///home/jelmer/bzr.samba/4.0-perlselftest/

Jelmer Vernooij jelmer at samba.org
Thu Jan 25 11:39:25 GMT 2007


------------------------------------------------------------
revno: 11293
revision-id: jelmer at samba.org-20070125113720-djp3pkd40b1c3u9z
parent: jelmer at samba.org-20070124160007-unjqs7exmgubw5df
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 4.0-perlselftest
timestamp: Thu 2007-01-25 12:37:20 +0100
message:
  - Fix return code checking.
  - Parse subunit output.
  - Print failed test output at the end of test run.
modified:
  .bzrignore                     svn-v2:17811 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-.bzrignore
  source/script/tests/selftest.pl svn-v2:20693 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2fscript%2ftests%2fselftest.pl
  source/script/tests/test_nbt.sh svn-v2:8735 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2fscript%2ftests%2ftest_nbt.sh
  source/script/tests/tests_quick.sh svn-v2:8525 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2fscript%2ftests%2ftests_quick.sh
=== modified file '.bzrignore'
--- a/.bzrignore	2007-01-24 12:05:47 +0000
+++ b/.bzrignore	2007-01-25 11:37:20 +0000
@@ -162,3 +162,4 @@
 source/st
 source/samba.info
 source/pidl/cover_db
+source/dsdb/repl/drepl_service_proto.h

=== modified file 'source/script/tests/selftest.pl'
--- a/source/script/tests/selftest.pl	2007-01-24 16:00:07 +0000
+++ b/source/script/tests/selftest.pl	2007-01-25 11:37:20 +0000
@@ -161,7 +161,6 @@
 sub teststatus($$) {
 	my ($name, $failed) = @_;
 
-	print "TEST STATUS: $failed failures\n";
 	if ($failed > 0) {
 print <<EOF	    
 ************************
@@ -173,19 +172,22 @@
 	exit $failed;
 }
 
+my $suitesfailed = [];
 my $totalfailed = 0;
+my $totalsuccesses = 0;
+my $total = 0;
 my $start = time();
 
 sub run_test_buildfarm($$$$)
 {
-	my ($name, $cmd, $i, $total) = @_;
+	my ($name, $cmd, $i, $suitestotal) = @_;
 	print "--==--==--==--==--==--==--==--==--==--==--\n";
 	print "Running test $name (level 0 stdout)\n";
 	print "--==--==--==--==--==--==--==--==--==--==--\n";
 	system("date");
 	print "Testing $name";
 
-	system($cmd);
+	my $ret = system($cmd);
 
 #	print "SMBD is down! Skipping: $cmd\n";
 #	print "==========================================\n";
@@ -197,28 +199,51 @@
 	print "TEST PASSED: $name\n";
 	print "==========================================\n";
 
-	my $ret = 0;
-	if ($ret != 0) {
-		$totalfailed++;
-	}
+	push(@$suitesfailed, $name) if ($ret != 0);
 }
 
+my $test_output = {};
 sub run_test_plain($$$$)
 {
-	my ($name, $cmd, $i, $total) = @_;
+	my ($name, $cmd, $i, $totalsuites) = @_;
 	my $err = "";
-	if ($totalfailed > 0) { $err = ", $totalfailed errors"; }
-	printf "[$i/$total in " . (time() - $start)."s$err] $name\n";
+	if ($#$suitesfailed+1 > 0) { $err = ", ".($#$suitesfailed+1)." errors"; }
+	printf "[$i/$totalsuites in " . (time() - $start)."s$err] $name\n";
 	open(RESULT, "$cmd 2>/dev/null|");
-	while (<RESULT>) { }
-	close(RESULT);
-	my $ret = 0;
-	if ($ret != 0) {
-		$totalfailed++;
+	my $open_tests = {};
+	$test_output->{$name} = "";
+	while (<RESULT>) { 
+		if (/^test: ([^\n]+)/) {
+			$open_tests->{$1} = 1;
+		} elsif (/^success: ([^\[\n]+)/) {
+			delete $open_tests->{$1};
+			$total++;
+		} elsif (/^failure: ([^\[\n]+)/) {
+			delete $open_tests->{$1};
+			$totalfailed++;
+		}
+		$test_output->{$_}.=$_;
+	}
+	$test_output->{$name}.="COMMAND IS: $cmd\n";
+	foreach (keys %$open_tests) {
+		print "$_ was started but never finished!\n";		
+	}
+	my $ret = close(RESULT);
+	if (not $ret) {
+		push(@$suitesfailed, $name);
 		exit(1) if ($opt_one);
 	}
 }
 
+sub prepare_socket_wrapper($)
+{
+	my ($prefix) = @_;
+	my $socket_wrapper_dir = undef;
+	$socket_wrapper_dir = "$prefix/w";
+	$ENV{SOCKET_WRAPPER_DIR} = $socket_wrapper_dir;
+	return $socket_wrapper_dir;
+}
+
 sub ShowHelp()
 {
 	print "Samba test runner
@@ -239,7 +264,7 @@
 
 my $result = GetOptions (
 	    'help|h|?' => \$opt_help,
-		'target' => \$opt_target,
+		'target=s' => \$opt_target,
 		'socket-wrapper' => \$opt_socket_wrapper,
 		'quick' => \$opt_quick,
 		'one' => \$opt_one
@@ -297,6 +322,8 @@
 $ENV{PKG_CONFIG_PATH} = "$old_pwd/bin/pkgconfig:$ENV{PKG_CONFIG_PATH}";
 $ENV{PATH} = "$old_pwd/bin:$ENV{PATH}";
 
+my @torture_options = ();
+
 if ($opt_target eq "samba4") {
 	print "PROVISIONING...";
 	open(IN, "$RealBin/mktestsetup.sh $prefix|") or die("Unable to setup");
@@ -320,17 +347,16 @@
 	die ("$ENV{WINTESTCONF} could not be read.") if (! -r $ENV{WINTESTCONF});
 
 	$ENV{WINTEST_DIR}="$ENV{SRCDIR}/script/tests/win";
+} elsif ($opt_target eq "none") {
 } else {
 	die("unknown target `$opt_target'");
 }
 
-my $socket_wrapper_dir = undef;
-
+my $socket_wrapper_dir;
 if ( $opt_socket_wrapper) 
 {
-	$socket_wrapper_dir = "$prefix/w";
-	$ENV{SOCKET_WRAPPER_DIR} = $socket_wrapper_dir;
-	print "SOCKET_WRAPPER_DIR=$ENV{SOCKET_WRAPPER_DIR}\n";
+	$socket_wrapper_dir = prepare_socket_wrapper($prefix);
+	print "SOCKET_WRAPPER_DIR=$socket_wrapper_dir\n";
 } else {
 	print "NOT USING SOCKET_WRAPPER\n";
 }
@@ -361,13 +387,14 @@
 $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 = ();
 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 ($from_build_farm);
+push (@torture_options, "--format=subunit");
+push (@torture_options, "--option=torture:quick=yes") if ($opt_quick);
 
 $ENV{TORTURE_OPTIONS} = join(' ', @torture_options);
 print "OPTIONS $ENV{TORTURE_OPTIONS}\n";
@@ -410,10 +437,10 @@
 			print;
 		}
 	}
-	close(IN);
+	close(IN) or die("Error creating recipe");
 }
 
-my $total = $#todo + 1;
+my $suitestotal = $#todo + 1;
 my $i = 0;
 $| = 1;
 
@@ -423,9 +450,9 @@
 	$cmd =~ s/([\(\)])/\\$1/g;
 	my $name = $$_[0];
 	if ($from_build_farm) {
-		run_test_buildfarm($name, $cmd, $i, $total);
+		run_test_buildfarm($name, $cmd, $i, $suitestotal);
 	} else {
-		run_test_plain($name, $cmd, $i, $total);
+		run_test_plain($name, $cmd, $i, $suitestotal);
 	}
 }
 
@@ -450,8 +477,24 @@
 }
 
 my $end = time();
-print "DURATION: " . ($end-$start). " seconds\n";
-print "$totalfailed failures\n";
+my $duration = ($end-$start);
+print "DURATION: $duration seconds\n";
+my $numfailed = $#$suitesfailed+1;
+if ($numfailed == 0) {
+	print "ALL OK ($total tests in $suitestotal testsuites)\n";
+} else {
+
+	unless ($from_build_farm) {
+		foreach (@$suitesfailed) {
+			print "================================================\n";
+			print "FAIL: $_\n";
+			print $test_output->{$_};
+			print "\n";
+		}
+	}
+
+	print "$totalfailed failed tests in $numfailed testsuites\n";
+}
 
 # if there were any valgrind failures, show them
 foreach (<$prefix/valgrind.log*>) {
@@ -464,6 +507,6 @@
 	}
 }
 
-teststatus($Script, $failed);
+teststatus($Script, $numfailed);
 
-exit $failed;
+exit $numfailed;

=== modified file 'source/script/tests/test_nbt.sh'
--- a/source/script/tests/test_nbt.sh	2006-10-16 13:06:41 +0000
+++ b/source/script/tests/test_nbt.sh	2007-01-25 11:37:20 +0000
@@ -23,9 +23,7 @@
 
 NBT_TESTS="NBT-REGISTER NBT-WINS"
 NBT_TESTS="$NBT_TESTS NBT-WINSREPLICATION"
-# if [ "$TORTURE_QUICK"x != "yes"x ]; then
-# 	NBT_TESTS="$NBT_TESTS NBT-WINSREPLICATION-OWNED"
-# fi
+# NBT_TESTS="$NBT_TESTS NBT-WINSREPLICATION-OWNED"
 NBT_TESTS="$NBT_TESTS NET-API-LOOKUP NET-API-LOOKUPHOST NET-API-LOOKUPPDC"
 
 for f in $NBT_TESTS; do

=== modified file 'source/script/tests/tests_quick.sh'
--- a/source/script/tests/tests_quick.sh	2007-01-14 03:18:04 +0000
+++ b/source/script/tests/tests_quick.sh	2007-01-25 11:37:20 +0000
@@ -1,6 +1,4 @@
 #!/bin/sh
-TORTURE_OPTIONS="$TORTURE_OPTIONS --option=torture:quick=yes"
-export TORTURE_OPTIONS
 TORTURE_QUICK="yes"
 export TORTURE_QUICK
 



More information about the samba-cvs mailing list