Commit cad53ac7 authored by Bjorn Munch's avatar Bjorn Munch

upmerge 58424 and 43418 follow-up

parents 5da7193a dffe3ad3
...@@ -604,7 +604,10 @@ sub run_test_server ($$$) { ...@@ -604,7 +604,10 @@ sub run_test_server ($$$) {
if ( !$opt_force ) { if ( !$opt_force ) {
# Test has failed, force is off # Test has failed, force is off
push(@$completed, $result); push(@$completed, $result);
return $completed; return $completed unless $result->{'dont_kill_server'};
# Prevent kill of server, to get valgrind report
print $sock "BYE\n";
next;
} }
elsif ($opt_max_test_fail > 0 and elsif ($opt_max_test_fail > 0 and
$num_failed_test >= $opt_max_test_fail) { $num_failed_test >= $opt_max_test_fail) {
...@@ -851,15 +854,16 @@ sub run_worker ($) { ...@@ -851,15 +854,16 @@ sub run_worker ($) {
mtr_report("Server said BYE"); mtr_report("Server said BYE");
stop_all_servers($opt_shutdown_timeout); stop_all_servers($opt_shutdown_timeout);
mark_time_used('restart'); mark_time_used('restart');
my $valgrind_reports= 0;
if ($opt_valgrind_mysqld) { if ($opt_valgrind_mysqld) {
valgrind_exit_reports(); $valgrind_reports= valgrind_exit_reports();
} }
if ( $opt_gprof ) { if ( $opt_gprof ) {
gprof_collect (find_mysqld($basedir), keys %gprof_dirs); gprof_collect (find_mysqld($basedir), keys %gprof_dirs);
} }
mark_time_used('init'); mark_time_used('init');
print_times_used($server, $thread_num); print_times_used($server, $thread_num);
exit(0); exit($valgrind_reports);
} }
else { else {
mtr_error("Could not understand server, '$line'"); mtr_error("Could not understand server, '$line'");
...@@ -3831,7 +3835,6 @@ sub run_testcase ($) { ...@@ -3831,7 +3835,6 @@ sub run_testcase ($) {
# ---------------------------------------------------- # ----------------------------------------------------
# Check if it was an expected crash # Check if it was an expected crash
# ---------------------------------------------------- # ----------------------------------------------------
SRVDIED:
my $check_crash = check_expected_crash_and_restart($proc); my $check_crash = check_expected_crash_and_restart($proc);
if ($check_crash) if ($check_crash)
{ {
...@@ -3841,6 +3844,7 @@ sub run_testcase ($) { ...@@ -3841,6 +3844,7 @@ sub run_testcase ($) {
next; next;
} }
SRVDIED:
# ---------------------------------------------------- # ----------------------------------------------------
# Stop the test case timer # Stop the test case timer
# ---------------------------------------------------- # ----------------------------------------------------
...@@ -4371,7 +4375,12 @@ sub after_failure ($) { ...@@ -4371,7 +4375,12 @@ sub after_failure ($) {
sub report_failure_and_restart ($) { sub report_failure_and_restart ($) {
my $tinfo= shift; my $tinfo= shift;
stop_all_servers(); if ($opt_valgrind_mysqld && ($tinfo->{'warnings'} || $tinfo->{'timeout'})) {
# In these cases we may want valgrind report from normal termination
$tinfo->{'dont_kill_server'}= 1;
}
# Shotdown properly if not to be killed (for valgrind)
stop_all_servers($tinfo->{'dont_kill_server'} ? $opt_shutdown_timeout : 0);
$tinfo->{'result'}= 'MTR_RES_FAILED'; $tinfo->{'result'}= 'MTR_RES_FAILED';
...@@ -5503,6 +5512,8 @@ sub valgrind_arguments { ...@@ -5503,6 +5512,8 @@ sub valgrind_arguments {
# #
sub valgrind_exit_reports() { sub valgrind_exit_reports() {
my $found_err= 0;
foreach my $log_file (keys %mysqld_logs) foreach my $log_file (keys %mysqld_logs)
{ {
my @culprits= (); my @culprits= ();
...@@ -5538,7 +5549,7 @@ sub valgrind_exit_reports() { ...@@ -5538,7 +5549,7 @@ sub valgrind_exit_reports() {
next; next;
} }
# This line marks the start of a valgrind report # This line marks the start of a valgrind report
$found_report= 1 if $line =~ /ERROR SUMMARY:/; $found_report= 1 if $line =~ /^==\d+== .* SUMMARY:/;
if ($found_report) { if ($found_report) {
$line=~ s/^==\d+== //; $line=~ s/^==\d+== //;
...@@ -5555,8 +5566,11 @@ sub valgrind_exit_reports() { ...@@ -5555,8 +5566,11 @@ sub valgrind_exit_reports() {
mtr_print ("Valgrind report from $log_file after tests:\n", @culprits); mtr_print ("Valgrind report from $log_file after tests:\n", @culprits);
mtr_print_line(); mtr_print_line();
print ("$valgrind_rep\n"); print ("$valgrind_rep\n");
$found_err= 1;
} }
} }
return $found_err;
} }
# #
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment