summaryrefslogtreecommitdiff
path: root/mysql-test/mysql-test-run.pl
diff options
context:
space:
mode:
authorBjorn Munch <Bjorn.Munch@sun.com>2010-01-06 09:57:44 +0100
committerBjorn Munch <Bjorn.Munch@sun.com>2010-01-06 09:57:44 +0100
commitafdaf6d9dfa9fa5812efac6e8e808b200502b559 (patch)
treef23b88735d8570a52e1f9952c621f3859160b1d9 /mysql-test/mysql-test-run.pl
parent028720080eca214e0f280606a6448bb15c1f2874 (diff)
parentfcb43b2956236b42a7f2bb177a8bcadcd6b63274 (diff)
downloadmariadb-git-afdaf6d9dfa9fa5812efac6e8e808b200502b559.tar.gz
merge 48863,49269,49345,49672,49761
Diffstat (limited to 'mysql-test/mysql-test-run.pl')
-rwxr-xr-xmysql-test/mysql-test-run.pl28
1 files changed, 26 insertions, 2 deletions
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index 43aa3595dc1..5b439fbc91e 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -87,6 +87,7 @@ use IO::Select;
require "lib/mtr_process.pl";
require "lib/mtr_io.pl";
require "lib/mtr_gcov.pl";
+require "lib/mtr_gprof.pl";
require "lib/mtr_misc.pl";
$SIG{INT}= sub { mtr_error("Got ^C signal"); };
@@ -167,6 +168,9 @@ our $opt_gcov_exe= "gcov";
our $opt_gcov_err= "mysql-test-gcov.msg";
our $opt_gcov_msg= "mysql-test-gcov.err";
+our $opt_gprof;
+our %gprof_dirs;
+
our $glob_debugger= 0;
our $opt_gdb;
our $opt_client_gdb;
@@ -745,6 +749,9 @@ sub run_worker ($) {
if ($opt_valgrind_mysqld) {
valgrind_exit_reports();
}
+ if ( $opt_gprof ) {
+ gprof_collect (find_mysqld($basedir), keys %gprof_dirs);
+ }
exit(0);
}
else {
@@ -857,6 +864,7 @@ sub command_line_setup {
# Coverage, profiling etc
'gcov' => \$opt_gcov,
+ 'gprof' => \$opt_gprof,
'valgrind|valgrind-all' => \$opt_valgrind,
'valgrind-mysqltest' => \$opt_valgrind_mysqltest,
'valgrind-mysqld' => \$opt_valgrind_mysqld,
@@ -1249,7 +1257,7 @@ sub command_line_setup {
# --------------------------------------------------------------------------
# Gcov flag
# --------------------------------------------------------------------------
- if ( $opt_gcov and ! $source_dist )
+ if ( ($opt_gcov or $opt_gprof) and ! $source_dist )
{
mtr_error("Coverage test needs the source - please use source dist");
}
@@ -3549,7 +3557,7 @@ sub run_testcase ($) {
{
# mysqltest failed, probably crashed
$tinfo->{comment}=
- "mysqltest failed with unexpected return code $res";
+ "mysqltest failed with unexpected return code $res\n";
report_failure_and_restart($tinfo);
}
@@ -4140,6 +4148,20 @@ sub report_failure_and_restart ($) {
# about what failed has been saved to file. Save the report
# in tinfo
$tinfo->{logfile}= mtr_fromfile($logfile);
+ # If no newlines in the test log:
+ # (it will contain the CURRENT_TEST written by mtr, so is not empty)
+ if ($tinfo->{logfile} !~ /\n/)
+ {
+ # Show how far it got before suddenly failing
+ $tinfo->{comment}.= "mysqltest failed but provided no output\n";
+ my $log_file_name= $opt_vardir."/log/".$tinfo->{shortname}.".log";
+ if (-e $log_file_name) {
+ $tinfo->{comment}.=
+ "The result from queries just before the failure was:".
+ "\n< snip >\n".
+ mtr_lastlinesfromfile($log_file_name, 20)."\n";
+ }
+ }
}
else
{
@@ -4351,6 +4373,8 @@ sub mysqld_start ($$) {
}
# Remember this log file for valgrind error report search
$mysqld_logs{$output}= 1 if $opt_valgrind;
+ # Remember data dir for gmon.out files if using gprof
+ $gprof_dirs{$mysqld->value('datadir')}= 1 if $opt_gprof;
if ( defined $exe )
{