summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorunknown <kent@mysql.com>2005-09-17 01:09:32 +0200
committerunknown <kent@mysql.com>2005-09-17 01:09:32 +0200
commitd6afdcb77c3e7959705259f33ed1ab2b73ec6ad7 (patch)
tree89eb16c02914d1eb244d50275a9d1e6246c7fc5f /mysql-test
parent2a5505c7f6e0e41dfe0d85c2d9dd2f5e6eebf222 (diff)
downloadmariadb-git-d6afdcb77c3e7959705259f33ed1ab2b73ec6ad7.tar.gz
mysql-test-run.pl:
Enabled --valgrind to work (bug#13280) mysql-test/mysql-test-run.pl: Enabled --valgrind to work (bug#13280)
Diffstat (limited to 'mysql-test')
-rwxr-xr-xmysql-test/mysql-test-run.pl122
1 files changed, 73 insertions, 49 deletions
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index 013b8d49967..cfb67dcae7c 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -237,8 +237,10 @@ our $opt_ps_protocol;
our $opt_sleep_time_after_restart= 1;
our $opt_sleep_time_for_delete= 10;
-our $opt_testcase_timeout= 5; # 5 min max
-our $opt_suite_timeout= 120; # 2 hours max
+our $opt_testcase_timeout;
+our $opt_suite_timeout;
+my $default_testcase_timeout= 10; # 10 min max
+my $default_suite_timeout= 120; # 2 hours max
our $opt_socket;
@@ -509,8 +511,8 @@ sub command_line_setup () {
# Coverage, profiling etc
'gcov' => \$opt_gcov,
'gprof' => \$opt_gprof,
- 'valgrind' => \$opt_valgrind,
- 'valgrind-all' => \$opt_valgrind_all,
+ 'valgrind:s' => \$opt_valgrind,
+ 'valgrind-all:s' => \$opt_valgrind_all,
'valgrind-options=s' => \$opt_valgrind_options,
# Misc
@@ -688,29 +690,36 @@ sub command_line_setup () {
$opt_with_ndbcluster= 0;
}
- # FIXME
+ # The ":s" in the argument spec, means we have three different cases
+ #
+ # undefined option not set
+ # "" option set with no argument
+ # "somestring" option is name/path of valgrind executable
+
+ if ( defined $opt_valgrind_all and ! $opt_valgrind )
+ {
+ $opt_valgrind= $opt_valgrind_all;
+ }
+
+ if ( ! $opt_testcase_timeout )
+ {
+ $opt_testcase_timeout= $default_testcase_timeout;
+ $opt_testcase_timeout*= 10 if defined $opt_valgrind;
+ }
+
+ if ( ! $opt_suite_timeout )
+ {
+ $opt_suite_timeout= $default_suite_timeout;
+ $opt_suite_timeout*= 4 if defined $opt_valgrind;
+ }
- #if ( $opt_valgrind or $opt_valgrind_all )
- #{
- # VALGRIND=`which valgrind` # this will print an error if not found FIXME
- # Give good warning to the user and stop
- # if ( ! $VALGRIND )
- # {
- # print "You need to have the 'valgrind' program in your PATH to run mysql-test-run with option --valgrind. Valgrind's home page is http://valgrind.kde.org.\n"
- # exit 1
- # }
+ if ( defined $opt_valgrind )
+ {
+ $opt_sleep_time_after_restart= 10;
+ $opt_sleep_time_for_delete= 60;
# >=2.1.2 requires the --tool option, some versions write to stdout, some to stderr
- # valgrind --help 2>&1 | grep "\-\-tool" > /dev/null && VALGRIND="$VALGRIND --tool=memcheck"
- # VALGRIND="$VALGRIND --alignment=8 --leak-check=yes --num-callers=16"
- # $opt_extra_mysqld_opt.= " --skip-safemalloc --skip-bdb";
- # SLEEP_TIME_AFTER_RESTART=10
- # $opt_sleep_time_for_delete= 60
- # $glob_use_running_server= ""
- # if ( "$1"= "--valgrind-all" )
- # {
- # VALGRIND="$VALGRIND -v --show-reachable=yes"
- # }
- #}
+ # valgrind --help 2>&1 | grep "\-\-tool" > /dev/null && VALGRIND="$VALGRIND --tool=memcheck"
+ }
if ( ! $opt_user )
{
@@ -1703,7 +1712,7 @@ sub mysqld_arguments ($$$$$) {
mtr_add_arg($args, "%s--language=%s", $prefix, $path_language);
mtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix);
- if ( $opt_valgrind )
+ if ( defined $opt_valgrind )
{
mtr_add_arg($args, "%s--skip-safemalloc", $prefix);
mtr_add_arg($args, "%s--skip-bdb", $prefix);
@@ -1928,29 +1937,9 @@ sub mysqld_start ($$$$) {
mtr_init_args(\$args);
- if ( $opt_valgrind )
+ if ( defined $opt_valgrind )
{
-
- mtr_add_arg($args, "--tool=memcheck");
- mtr_add_arg($args, "--alignment=8");
- mtr_add_arg($args, "--leak-check=yes");
- mtr_add_arg($args, "--num-callers=16");
-
- if ( $opt_valgrind_all )
- {
- mtr_add_arg($args, "-v");
- mtr_add_arg($args, "--show-reachable=yes");
- }
-
- if ( $opt_valgrind_options )
- {
- # FIXME split earlier and put into @glob_valgrind_*
- mtr_add_arg($args, split(' ', $opt_valgrind_options));
- }
-
- mtr_add_arg($args, $exe);
-
- $exe= $opt_valgrind;
+ valgrind_arguments($args, \$exe);
}
mysqld_arguments($args,$type,$idx,$extra_opt,$slave_master_info);
@@ -2121,6 +2110,11 @@ sub run_mysqltest ($) {
mtr_init_args(\$args);
+ if ( defined $opt_valgrind )
+ {
+ valgrind_arguments($args, \$exe);
+ }
+
mtr_add_arg($args, "--no-defaults");
mtr_add_arg($args, "--socket=%s", $master->[0]->{'path_mysock'});
mtr_add_arg($args, "--database=test");
@@ -2205,6 +2199,34 @@ sub run_mysqltest ($) {
return mtr_run_test($exe,$args,$tinfo->{'path'},"",$path_timefile,"");
}
+
+sub valgrind_arguments {
+ my $args= shift;
+ my $exe= shift;
+
+ mtr_add_arg($args, "--tool=memcheck"); # From >= 2.1.2 needs this option
+ mtr_add_arg($args, "--alignment=8");
+ mtr_add_arg($args, "--leak-check=yes");
+ mtr_add_arg($args, "--num-callers=16");
+
+ if ( defined $opt_valgrind_all )
+ {
+ mtr_add_arg($args, "-v");
+ mtr_add_arg($args, "--show-reachable=yes");
+ }
+
+ if ( $opt_valgrind_options )
+ {
+ # FIXME split earlier and put into @glob_valgrind_*
+ mtr_add_arg($args, split(' ', $opt_valgrind_options));
+ }
+
+ mtr_add_arg($args, $$exe);
+
+ $$exe= $opt_valgrind || "valgrind";
+}
+
+
##############################################################################
#
# Usage
@@ -2271,7 +2293,9 @@ Options for coverage, profiling etc
gcov FIXME
gprof FIXME
- valgrind FIXME
+ valgrind[=exe] Run the "mysqltest" executable as well as the "mysqld"
+ server using valgrind, optionally specifying the
+ executable path/name
valgrind-all FIXME
valgrind-options=ARGS Extra options to give valgrind