Commit 9bf7a9ce authored by unknown's avatar unknown
Browse files

Made it easier to valgrind mysqltest


mysql-test/mysql-test-run.pl:
  Append mysqltest-time to mysqltest.log at the end of each test case, thus making it possibel to run the whole testsuite with --valgrind-mysqltest and then check the valgrind ouput in mysqltest.log
  Don't valgrind mysqld when only --valgrind-mysqltest is specified
  Fix usage --valgrind, will only valgrind mysqld(that's how it was, I didn't change)
parent d8f7fb14
Loading
Loading
Loading
Loading
+27 −6
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ our $path_client_bindir;
our $path_language;
our $path_timefile;
our $path_manager_log;           # Used by mysqldadmin
our $path_mysqltest_log;
our $path_slave_load_tmpdir;     # What is this?!
our $path_my_basedir;
our $opt_vardir;                 # A path but set directly on cmd line
@@ -270,6 +271,7 @@ our $opt_user;
our $opt_user_test;

our $opt_valgrind;
our $opt_valgrind_mysqld;
our $opt_valgrind_mysqltest;
our $opt_valgrind_all;
our $opt_valgrind_options;
@@ -742,6 +744,7 @@ sub command_line_setup () {
  #   "somestring" option is name/path of valgrind executable

  # Take executable path from any of them, if any
  $opt_valgrind_mysqld= $opt_valgrind;
  $opt_valgrind= $opt_valgrind_mysqltest if $opt_valgrind_mysqltest;
  $opt_valgrind= $opt_valgrind_all       if $opt_valgrind_all;

@@ -885,6 +888,7 @@ sub command_line_setup () {
  }

  $path_timefile=  "$opt_vardir/log/mysqltest-time";
  $path_mysqltest_log=  "$opt_vardir/log/mysqltest.log";
}


@@ -928,8 +932,20 @@ sub executable_setup () {
		       "/usr/bin/false");
    }
    else
    {
      if ( $opt_valgrind_mysqltest )
      {
        # client/mysqltest might be a libtool .sh script, so look for real exe
        # to avoid valgrinding bash ;)
        $exe_mysqltest=
  	  mtr_exe_exists("$path_client_bindir/.libs/lt-mysqltest",
		         "$path_client_bindir/.libs/mysqltest",
		         "$path_client_bindir/mysqltest");
      }
      else
      {
        $exe_mysqltest= mtr_exe_exists("$path_client_bindir/mysqltest");
      }
      $exe_mysql_client_test=
        mtr_exe_exists("$glob_basedir/tests/mysql_client_test",
		       "/usr/bin/false");
@@ -1859,6 +1875,11 @@ sub run_testcase ($) {
      }
      report_failure_and_restart($tinfo);
    }
    # Save info from this testcase run to mysqltest.log
    mtr_tofile($path_mysqltest_log,"CURRENT TEST $tname\n");
    my $testcase_log= mtr_fromfile($path_timefile);
    mtr_tofile($path_mysqltest_log,
	       $testcase_log);
  }

  # ----------------------------------------------------------------------
@@ -2019,7 +2040,7 @@ sub mysqld_arguments ($$$$$) {
  mtr_add_arg($args, "%s--language=%s", $prefix, $path_language);
  mtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix);

  if ( defined $opt_valgrind )
  if ( defined $opt_valgrind_mysqld )
  {
    mtr_add_arg($args, "%s--skip-safemalloc", $prefix);
    mtr_add_arg($args, "%s--skip-bdb", $prefix);
@@ -2245,7 +2266,7 @@ sub mysqld_start ($$$$) {

  mtr_init_args(\$args);

  if ( defined $opt_valgrind )
  if ( defined $opt_valgrind_mysqld )
  {
    valgrind_arguments($args, \$exe);
  }
@@ -2699,6 +2720,7 @@ sub valgrind_arguments {
    mtr_add_arg($args, split(' ', $opt_valgrind_options));
  }


  mtr_add_arg($args, $$exe);

  $$exe= $opt_valgrind || "valgrind";
@@ -2778,9 +2800,8 @@ Options for coverage, profiling etc

  gcov                  FIXME
  gprof                 FIXME
  valgrind[=EXE]        Run the "mysqltest" executable as well as the "mysqld"
                        server using valgrind, optionally specifying the
                        executable path/name
  valgrind[=EXE]        Run the "mysqld" server using valgrind, optionally
                        specifying the executable path/name
  valgrind-mysqltest[=EXE] In addition, run the "mysqltest" executable with valgrind
  valgrind-all[=EXE]    Adds verbose flag, and --show-reachable to valgrind
  valgrind-options=ARGS Extra options to give valgrind