← Back to team overview

maria-developers team mailing list archive

[patch 01/11] Fix error report summary at end of mysql-test-run

 

My previous fix for not ignoring warnings during server shutdown would
terminate the test suite completely in case of extra warnings,
omitting the error summary at the end.

This patch provides a much nicer summary report which includes all
test sequences that had warnings during shutdown.

Also add a $fail flag to make 100% sure mysql-test-run.pl will return
failure for any kind of problem occured during the test suite.

Also revert wrong "internal error" message from earlier patch.

---
 mysql-test/lib/mtr_report.pm |   21 ++++++++++++++++++++-
 mysql-test/mysql-test-run.pl |   27 ++++++++++++++-------------
 2 files changed, 34 insertions(+), 14 deletions(-)

Index: work-5.1-buildbot/mysql-test/lib/mtr_report.pm
===================================================================
--- work-5.1-buildbot.orig/mysql-test/lib/mtr_report.pm	2009-04-07 13:40:41.000000000 +0200
+++ work-5.1-buildbot/mysql-test/lib/mtr_report.pm	2009-04-07 13:40:56.000000000 +0200
@@ -187,8 +187,10 @@ sub mtr_report_test ($) {
 }
 
 
-sub mtr_report_stats ($) {
+sub mtr_report_stats ($$$) {
+  my $fail= shift;
   my $tests= shift;
+  my $extra_warnings= shift;
 
   # ----------------------------------------------------------------------
   # Find out how we where doing
@@ -325,10 +327,27 @@ sub mtr_report_stats ($) {
     print "All $tot_tests tests were successful.\n\n";
   }
 
+  if (@$extra_warnings)
+  {
+    print <<MSG;
+Errors/warnings were found in logfiles during server shutdown after running the
+following sequence(s) of tests:
+MSG
+    print "    $_\n" for @$extra_warnings;
+  }
+
   if ( $tot_failed != 0 || $found_problems)
   {
     mtr_error("there were failing test cases");
   }
+  elsif (@$extra_warnings)
+  {
+    mtr_error("There were errors/warnings in server logs after running test cases.");
+  }
+  elsif ($fail)
+  {
+    mtr_error("Test suite failure, see messages above for possible cause(s).");
+  }
 }
 
 
Index: work-5.1-buildbot/mysql-test/mysql-test-run.pl
===================================================================
--- work-5.1-buildbot.orig/mysql-test/mysql-test-run.pl	2009-04-07 13:40:41.000000000 +0200
+++ work-5.1-buildbot/mysql-test/mysql-test-run.pl	2009-04-07 13:41:53.000000000 +0200
@@ -357,7 +357,8 @@ sub main {
   mtr_print_thick_line();
   mtr_print_header();
 
-  my ($completed, $fail)= run_test_server($server, $tests, $opt_parallel);
+  my ($fail, $completed, $extra_warnings)=
+    run_test_server($server, $tests, $opt_parallel);
 
   # Send Ctrl-C to any children still running
   kill("INT", keys(%children));
@@ -393,10 +394,6 @@ sub main {
     mtr_error("Not all tests completed");
   }
 
-  if ($fail) {
-    mtr_error("Test suite failure.");
-  }
-
   mtr_print_line();
 
   if ( $opt_gcov ) {
@@ -404,7 +401,7 @@ sub main {
 		 $opt_gcov_msg, $opt_gcov_err);
   }
 
-  mtr_report_stats($completed);
+  mtr_report_stats($fail, $completed, $extra_warnings);
 
   exit(0);
 }
@@ -416,7 +413,8 @@ sub run_test_server ($$$) {
   my $num_saved_cores= 0;  # Number of core files saved in vardir/log/ so far.
   my $num_saved_datadir= 0;  # Number of datadirs saved in vardir/log/ so far.
   my $num_failed_test= 0; # Number of tests failed so far
-  my $test_failure= 0;
+  my $test_failure= 0;    # Set true if test suite failed
+  my $extra_warnings= []; # Warnings found during server shutdowns
 
   # Scheduler variables
   my $max_ndb= $childs / 2;
@@ -450,7 +448,7 @@ sub run_test_server ($$$) {
 	  $s->remove($sock);
 	  if (--$childs == 0){
 	    $suite_timeout_proc->kill();
-	    return ($completed, $test_failure);
+	    return ($test_failure, $completed, $extra_warnings);
 	  }
 	  next;
 	}
@@ -519,14 +517,14 @@ sub run_test_server ($$$) {
 	      # Test has failed, force is off
 	      $suite_timeout_proc->kill();
 	      push(@$completed, $result);
-	      return ($completed, 1);
+	      return (1, $completed, $extra_warnings);
 	    }
 	    elsif ($opt_max_test_fail > 0 and
 		   $num_failed_test >= $opt_max_test_fail) {
 	      $suite_timeout_proc->kill();
 	      mtr_report("Too many tests($num_failed_test) failed!",
 			 "Terminating...");
-	      return (undef, 1);
+	      return (1, $completed, $extra_warnings);
 	    }
 	    $num_failed_test++;
 	  }
@@ -580,13 +578,14 @@ sub run_test_server ($$$) {
 	elsif ($line eq 'WARNINGS'){
           my $fake_test= My::Test::read_test($sock);
           my $test_list= join (" ", @{$fake_test->{testnames}});
+          push @$extra_warnings, $test_list;
           mtr_report("***Warnings generated in error logs during shutdown ".
                      "after running tests: $test_list");
           $test_failure= 1;
           if ( !$opt_force ) {
             # Test failure due to warnings, force is off
             $suite_timeout_proc->kill();
-            return ($completed, 1);
+            return (1, $completed, $extra_warnings);
           }
         } else {
 	  mtr_error("Unknown response: '$line' from client");
@@ -666,7 +665,7 @@ sub run_test_server ($$$) {
     if ( ! $suite_timeout_proc->wait_one(0) )
     {
       mtr_report("Test suite timeout! Terminating...");
-      return (undef, 1);
+      return (1, $completed, $extra_warnings);
     }
   }
 }
@@ -758,7 +757,9 @@ sub run_worker ($) {
     }
   }
 
-  die "Internal error: should not reach this place.";
+  stop_all_servers();
+
+  exit(1);
 }
 
 

-- 



Follow ups

References