Commit e6a64e8f authored by Daniel Black's avatar Daniel Black Committed by elenst

MDEV-10294: MTR using --valgrind-option to specify a tool / fixing callgrind [10.1] (#200)

* MDEV-10294: Put testname into environment as MTR_TEST_NAME during MTR

* MDEV-10294: restructure mtr to allow --valgrind-option=--tool=XXX

* MDEV-10294: mtr valgrind - supressions all tools + feedback
parent f0386598
...@@ -317,7 +317,6 @@ our $opt_user = "root"; ...@@ -317,7 +317,6 @@ our $opt_user = "root";
our $opt_valgrind= 0; our $opt_valgrind= 0;
my $opt_valgrind_mysqld= 0; my $opt_valgrind_mysqld= 0;
my $opt_valgrind_mysqltest= 0; my $opt_valgrind_mysqltest= 0;
my @default_valgrind_args= ("--show-reachable=yes");
my @valgrind_args; my @valgrind_args;
my $opt_strace= 0; my $opt_strace= 0;
my $opt_strace_client; my $opt_strace_client;
...@@ -1722,17 +1721,27 @@ sub command_line_setup { ...@@ -1722,17 +1721,27 @@ sub command_line_setup {
# Set special valgrind options unless options passed on command line # Set special valgrind options unless options passed on command line
push(@valgrind_args, "--trace-children=yes") push(@valgrind_args, "--trace-children=yes")
unless @valgrind_args; unless @valgrind_args;
unshift(@valgrind_args, "--tool=callgrind");
} }
if ( $opt_valgrind ) # default to --tool=memcheck
if ($opt_valgrind && ! grep(/^--tool=/i, @valgrind_args))
{ {
# Set valgrind_options to default unless already defined # Set valgrind_option unless already defined
push(@valgrind_args, @default_valgrind_args) push(@valgrind_args, ("--show-reachable=yes", "--leak-check=yes",
"--num-callers=16"))
unless @valgrind_args; unless @valgrind_args;
unshift(@valgrind_args, "--tool=memcheck");
}
if ( $opt_valgrind )
{
# Make valgrind run in quiet mode so it only print errors # Make valgrind run in quiet mode so it only print errors
push(@valgrind_args, "--quiet" ); push(@valgrind_args, "--quiet" );
push(@valgrind_args, "--suppressions=${glob_mysql_test_dir}/valgrind.supp")
if -f "$glob_mysql_test_dir/valgrind.supp";
mtr_report("Running valgrind with options \"", mtr_report("Running valgrind with options \"",
join(" ", @valgrind_args), "\""); join(" ", @valgrind_args), "\"");
} }
...@@ -3764,6 +3773,7 @@ sub run_testcase ($$) { ...@@ -3764,6 +3773,7 @@ sub run_testcase ($$) {
my $print_freq=20; my $print_freq=20;
mtr_verbose("Running test:", $tinfo->{name}); mtr_verbose("Running test:", $tinfo->{name});
$ENV{'MTR_TEST_NAME'} = $tinfo->{name};
resfile_report_test($tinfo) if $opt_resfile; resfile_report_test($tinfo) if $opt_resfile;
# Allow only alpanumerics pluss _ - + . in combination names, # Allow only alpanumerics pluss _ - + . in combination names,
...@@ -5819,29 +5829,15 @@ sub valgrind_arguments { ...@@ -5819,29 +5829,15 @@ sub valgrind_arguments {
my $args= shift; my $args= shift;
my $exe= shift; my $exe= shift;
if ( $opt_callgrind) # Ensure the jemalloc works with mysqld
if ($$exe =~ /mysqld/)
{ {
mtr_add_arg($args, "--tool=callgrind"); my %somalloc=(
mtr_add_arg($args, "--base=$opt_vardir/log"); 'system jemalloc' => 'libjemalloc*',
} 'bundled jemalloc' => 'NONE'
else );
{ my ($syn) = $somalloc{$mysqld_variables{'version-malloc-library'}};
mtr_add_arg($args, "--tool=memcheck"); # From >= 2.1.2 needs this option mtr_add_arg($args, '--soname-synonyms=somalloc=%s', $syn) if $syn;
mtr_add_arg($args, "--leak-check=yes");
mtr_add_arg($args, "--num-callers=16");
mtr_add_arg($args, "--suppressions=%s/valgrind.supp", $glob_mysql_test_dir)
if -f "$glob_mysql_test_dir/valgrind.supp";
# Ensure the jemalloc works with mysqld
if ($$exe =~ /mysqld/)
{
my %somalloc=(
'system jemalloc' => 'libjemalloc*',
'bundled jemalloc' => 'NONE'
);
my ($syn) = $somalloc{$mysqld_variables{'version-malloc-library'}};
mtr_add_arg($args, '--soname-synonyms=somalloc=%s', $syn) if $syn;
}
} }
# Add valgrind options, can be overriden by user # Add valgrind options, can be overriden by user
......
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