From d45a6828957db3fa8ecd012a71878b11adb5943b Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 25 Aug 2005 16:25:54 +0200 Subject: [PATCH] mtr_process.pl: Call mtr_timer_stop_all() at exit mtr_report.pl, mysql-test-run.pl: Added default/ps-protocol/embedded to abort and summary line mtr_timer.pl: Added function mtr_timer_stop_all() mysql-test/mysql-test-run.pl: Added default/ps-protocol/embedded to abort and summary line mysql-test/lib/mtr_timer.pl: Added function mtr_timer_stop_all() mysql-test/lib/mtr_report.pl: Added default/ps-protocol/embedded to abort and summary line mysql-test/lib/mtr_process.pl: Call mtr_timer_stop_all() at exit --- mysql-test/lib/mtr_process.pl | 1 + mysql-test/lib/mtr_report.pl | 3 ++- mysql-test/lib/mtr_timer.pl | 24 ++++++++++++++++++++++++ mysql-test/mysql-test-run.pl | 12 ++++++++++-- 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index c9ae92305c2..1216238a9dc 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -841,6 +841,7 @@ sub sleep_until_file_created ($$$) { sub mtr_exit ($) { my $code= shift; # cluck("Called mtr_exit()"); + mtr_timer_stop_all($::glob_timers); local $SIG{HUP} = 'IGNORE'; kill('HUP', -$$); sleep 2; diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl index 5e1a8308505..39bc8f95b98 100644 --- a/mysql-test/lib/mtr_report.pl +++ b/mysql-test/lib/mtr_report.pl @@ -223,7 +223,8 @@ sub mtr_report_stats ($) { if ( $tot_failed != 0 ) { - print "mysql-test-run: *** Failing the test(s):"; + my $test_mode= join(" ", @::glob_test_mode) || "default"; + print "mysql-test-run in $test_mode mode: *** Failing the test(s):"; foreach my $tinfo (@$tests) { diff --git a/mysql-test/lib/mtr_timer.pl b/mysql-test/lib/mtr_timer.pl index aab57d1bc52..f0c75d2e13e 100644 --- a/mysql-test/lib/mtr_timer.pl +++ b/mysql-test/lib/mtr_timer.pl @@ -15,6 +15,7 @@ use POSIX 'WNOHANG'; sub mtr_init_timers (); sub mtr_timer_start($$$); sub mtr_timer_stop($$); +sub mtr_timer_stop_all($); sub mtr_timer_waitpid($$$); ############################################################################## @@ -113,6 +114,29 @@ sub mtr_timer_stop ($$) { } +sub mtr_timer_stop_all ($) { + my $timers= shift; + + foreach my $name ( keys %{$timers->{'timers'}} ) + { + my $tpid= $timers->{'timers'}->{$name}->{'pid'}; + + # FIXME as Cygwin reuses pids fast, maybe check that is + # the expected process somehow?! + kill(9, $tpid); + + # As the timers are so simple programs, we trust them to terminate, + # and use blocking wait for it. We wait just to avoid a zombie. + waitpid($tpid,0); + + delete $timers->{'timers'}->{$name}; # Remove the timer information + delete $timers->{'pids'}->{$tpid}; # and PID reference + + return 1; + } +} + + sub mtr_timer_timeout ($$) { my ($timers,$pid)= @_; diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 25bc63a57eb..a59cce4b0eb 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -142,6 +142,7 @@ our $glob_timers= undef; our $glob_use_running_server= 0; our $glob_use_running_ndbcluster= 0; our $glob_use_embedded_server= 0; +our @glob_test_mode; our $glob_basedir; @@ -606,6 +607,7 @@ sub command_line_setup () { if ( $opt_embedded_server ) { $glob_use_embedded_server= 1; + push(@glob_test_mode, "embedded"); $opt_skip_rpl= 1; # We never run replication with embedded if ( $opt_extern ) @@ -614,6 +616,11 @@ sub command_line_setup () { } } + if ( $opt_ps_protocol ) + { + push(@glob_test_mode, "ps-protocol"); + } + # FIXME don't understand what this is # if ( $opt_local_master ) # { @@ -1562,8 +1569,9 @@ sub report_failure_and_restart ($) { print "\n"; if ( ! $opt_force ) { - print "Aborting: $tinfo->{'name'} failed. To continue, re-run with '--force'."; - print "\n"; + my $test_mode= join(" ", @::glob_test_mode) || "default"; + print "Aborting: $tinfo->{'name'} failed in $test_mode mode. "; + print "To continue, re-run with '--force'.\n"; if ( ! $opt_gdb and ! $glob_use_running_server and ! $opt_ddd and ! $glob_use_embedded_server ) {