Commit d54f42c1 authored by unknown's avatar unknown

Merge ramayana.hindu.god:/home/tsmith/m/bk/50

into  ramayana.hindu.god:/home/tsmith/m/bk/maint/50


sql/sql_show.cc:
  Auto merged
parents 7388ea3c 6fdcb4c7
...@@ -342,12 +342,6 @@ static my_bool get_full_path_to_executable(char* path) ...@@ -342,12 +342,6 @@ static my_bool get_full_path_to_executable(char* path)
/* /*
Look for the tool in the same directory as mysql_upgrade. Look for the tool in the same directory as mysql_upgrade.
When running in a not yet installed build the the program
will exist but it need to be invoked via it's libtool wrapper.
Check if the found tool can executed and if not look in the
directory one step higher up where the libtool wrapper normally
is found
*/ */
static void find_tool(char *tool_path, const char *tool_name) static void find_tool(char *tool_path, const char *tool_name)
...@@ -385,37 +379,52 @@ static void find_tool(char *tool_path, const char *tool_name) ...@@ -385,37 +379,52 @@ static void find_tool(char *tool_path, const char *tool_name)
path[0]= 0; path[0]= 0;
} }
} }
do
{
DBUG_PRINT("enter", ("path: %s", path));
/* Chop off last char(since it might be a /) */ DBUG_PRINT("info", ("path: '%s'", path));
path[max((strlen(path)-1), 0)]= 0;
/* Chop off binary name (i.e mysql-upgrade) from path */
dirname_part(path, path);
/*
When running in a not yet installed build and using libtool,
the program(mysql_upgrade) will be in .libs/ and executed
through a libtool wrapper in order to use the dynamic libraries
from this build. The same must be done for the tools(mysql and
mysqlcheck). Thus if path ends in .libs/, step up one directory
and execute the tools from there
*/
path[max((strlen(path)-1), 0)]= 0; /* Chop off last / */
if (strncmp(path + dirname_length(path), ".libs", 5) == 0)
{
DBUG_PRINT("info", ("Chopping off .libs from '%s'", path));
/* Chop off last dir part */ /* Chop off .libs */
dirname_part(path, path); dirname_part(path, path);
}
/* Format name of the tool to search for */
fn_format(tool_path, tool_name,
path, "", MYF(MY_REPLACE_DIR));
verbose("Looking for '%s' in: %s", tool_name, tool_path); DBUG_PRINT("info", ("path: '%s'", path));
/* Make sure the tool exists */ /* Format name of the tool to search for */
if (my_access(tool_path, F_OK) != 0) fn_format(tool_path, tool_name,
die("Can't find '%s'", tool_path); path, "", MYF(MY_REPLACE_DIR));
/* verbose("Looking for '%s' in: %s", tool_name, tool_path);
Make sure it can be executed, otherwise try again
in higher level directory /* Make sure the tool exists */
*/ if (my_access(tool_path, F_OK) != 0)
} die("Can't find '%s'", tool_path);
while(run_tool(tool_path,
&ds_tmp, /* Get output from command, discard*/ /*
"--help", Make sure it can be executed
"2>&1", */
IF_WIN("> NUL", "> /dev/null"), if (run_tool(tool_path,
NULL)); &ds_tmp, /* Get output from command, discard*/
"--help",
"2>&1",
IF_WIN("> NUL", "> /dev/null"),
NULL))
die("Can't execute '%s'", tool_path);
dynstr_free(&ds_tmp); dynstr_free(&ds_tmp);
...@@ -446,6 +455,7 @@ static int run_query(const char *query, DYNAMIC_STRING *ds_res, ...@@ -446,6 +455,7 @@ static int run_query(const char *query, DYNAMIC_STRING *ds_res,
ret= run_tool(mysql_path, ret= run_tool(mysql_path,
ds_res, ds_res,
"--no-defaults",
ds_args.str, ds_args.str,
"--database=mysql", "--database=mysql",
"--batch", /* Turns off pager etc. */ "--batch", /* Turns off pager etc. */
...@@ -457,6 +467,7 @@ static int run_query(const char *query, DYNAMIC_STRING *ds_res, ...@@ -457,6 +467,7 @@ static int run_query(const char *query, DYNAMIC_STRING *ds_res,
NULL); NULL);
my_close(fd, MYF(0)); my_close(fd, MYF(0));
my_delete(query_file_path, MYF(0));
DBUG_RETURN(ret); DBUG_RETURN(ret);
} }
...@@ -607,6 +618,7 @@ static int run_mysqlcheck_upgrade(void) ...@@ -607,6 +618,7 @@ static int run_mysqlcheck_upgrade(void)
verbose("Running 'mysqlcheck'..."); verbose("Running 'mysqlcheck'...");
return run_tool(mysqlcheck_path, return run_tool(mysqlcheck_path,
NULL, /* Send output from mysqlcheck directly to screen */ NULL, /* Send output from mysqlcheck directly to screen */
"--no-defaults",
ds_args.str, ds_args.str,
"--check-upgrade", "--check-upgrade",
"--all-databases", "--all-databases",
......
This diff is collapsed.
...@@ -20,8 +20,6 @@ ...@@ -20,8 +20,6 @@
use strict; use strict;
sub mtr_full_hostname ();
sub mtr_short_hostname ();
sub mtr_native_path($); sub mtr_native_path($);
sub mtr_init_args ($); sub mtr_init_args ($);
sub mtr_add_arg ($$@); sub mtr_add_arg ($$@);
...@@ -40,30 +38,6 @@ sub mtr_cmp_opts($$); ...@@ -40,30 +38,6 @@ sub mtr_cmp_opts($$);
# #
############################################################################## ##############################################################################
# We want the fully qualified host name and hostname() may have returned
# only the short name. So we use the resolver to find out.
# Note that this might fail on some platforms
sub mtr_full_hostname () {
my $hostname= hostname();
if ( $hostname !~ /\./ )
{
my $address= gethostbyname($hostname)
or mtr_error("Couldn't resolve $hostname : $!");
my $fullname= gethostbyaddr($address, AF_INET);
$hostname= $fullname if $fullname;
}
return $hostname;
}
sub mtr_short_hostname () {
my $hostname= hostname();
$hostname =~ s/\..+$//;
return $hostname;
}
# Convert path to OS native format # Convert path to OS native format
sub mtr_native_path($) sub mtr_native_path($)
{ {
......
...@@ -99,25 +99,26 @@ sub spawn_impl ($$$$$$$) { ...@@ -99,25 +99,26 @@ sub spawn_impl ($$$$$$$) {
if ( $::opt_script_debug ) if ( $::opt_script_debug )
{ {
print STDERR "\n"; mtr_report("");
print STDERR "#### ", "-" x 78, "\n"; mtr_debug("-" x 73);
print STDERR "#### ", "STDIN $input\n" if $input; mtr_debug("STDIN $input") if $input;
print STDERR "#### ", "STDOUT $output\n" if $output; mtr_debug("STDOUT $output") if $output;
print STDERR "#### ", "STDERR $error\n" if $error; mtr_debug("STDERR $error") if $error;
print STDERR "#### ", "$mode : $path ", join(" ",@$arg_list_t), "\n"; mtr_debug("$mode: $path ", join(" ",@$arg_list_t));
print STDERR "#### ", "spawn options:\n"; mtr_debug("spawn options:");
if ($spawn_opts) if ($spawn_opts)
{ {
foreach my $key (sort keys %{$spawn_opts}) foreach my $key (sort keys %{$spawn_opts})
{ {
print STDERR "#### ", " - $key: $spawn_opts->{$key}\n"; mtr_debug(" - $key: $spawn_opts->{$key}");
} }
} }
else else
{ {
print STDERR "#### ", " none\n"; mtr_debug(" none");
} }
print STDERR "#### ", "-" x 78, "\n"; mtr_debug("-" x 73);
mtr_report("");
} }
mtr_error("Can't spawn with empty \"path\"") unless defined $path; mtr_error("Can't spawn with empty \"path\"") unless defined $path;
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
# same name. # same name.
use strict; use strict;
use warnings;
sub mtr_report_test_name($); sub mtr_report_test_name($);
sub mtr_report_test_passed($); sub mtr_report_test_passed($);
...@@ -26,7 +27,6 @@ sub mtr_report_test_failed($); ...@@ -26,7 +27,6 @@ sub mtr_report_test_failed($);
sub mtr_report_test_skipped($); sub mtr_report_test_skipped($);
sub mtr_report_test_not_skipped_though_disabled($); sub mtr_report_test_not_skipped_though_disabled($);
sub mtr_show_failed_diff ($);
sub mtr_report_stats ($); sub mtr_report_stats ($);
sub mtr_print_line (); sub mtr_print_line ();
sub mtr_print_thick_line (); sub mtr_print_thick_line ();
...@@ -38,6 +38,9 @@ sub mtr_child_error (@); ...@@ -38,6 +38,9 @@ sub mtr_child_error (@);
sub mtr_debug (@); sub mtr_debug (@);
sub mtr_verbose (@); sub mtr_verbose (@);
my $tot_real_time= 0;
############################################################################## ##############################################################################
# #
...@@ -45,58 +48,10 @@ sub mtr_verbose (@); ...@@ -45,58 +48,10 @@ sub mtr_verbose (@);
# #
############################################################################## ##############################################################################
# We can't use diff -u or diff -a as these are not portable
sub mtr_show_failed_diff ($) {
my $result_file_name= shift;
# The reject and log files have been dumped to
# to filenames based on the result_file's name
my $tname= basename($result_file_name);
$tname=~ s/\..*$//;
my $reject_file= "r/$tname.reject";
my $result_file= "r/$tname.result";
my $log_file= "r/$tname.log";
my $eval_file= "r/$tname.eval";
if ( $::opt_suite ne "main" )
{
$reject_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$reject_file";
$result_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$result_file";
$eval_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$eval_file";
$log_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$log_file";
}
if ( -f $eval_file )
{
$result_file= $eval_file;
}
my $diffopts= $::opt_udiff ? "-u" : "-c";
if ( -f $reject_file )
{
print "Below are the diffs between actual and expected results:\n";
print "-------------------------------------------------------\n";
# FIXME check result code?!
mtr_run("diff",[$diffopts,$result_file,$reject_file], "", "", "", "");
print "-------------------------------------------------------\n";
print "Please follow the instructions outlined at\n";
print "http://www.mysql.com/doc/en/Reporting_mysqltest_bugs.html\n";
print "to find the reason to this problem and how to report this.\n\n";
}
if ( -f $log_file )
{
print "Result from queries before failure can be found in $log_file\n";
# FIXME Maybe a tail -f -n 10 $log_file here
}
}
sub mtr_report_test_name ($) { sub mtr_report_test_name ($) {
my $tinfo= shift; my $tinfo= shift;
_mtr_log("$tinfo->{name}");
printf "%-30s ", $tinfo->{'name'}; printf "%-30s ", $tinfo->{'name'};
} }
...@@ -106,15 +61,15 @@ sub mtr_report_test_skipped ($) { ...@@ -106,15 +61,15 @@ sub mtr_report_test_skipped ($) {
$tinfo->{'result'}= 'MTR_RES_SKIPPED'; $tinfo->{'result'}= 'MTR_RES_SKIPPED';
if ( $tinfo->{'disable'} ) if ( $tinfo->{'disable'} )
{ {
print "[ disabled ] $tinfo->{'comment'}\n"; mtr_report("[ disabled ] $tinfo->{'comment'}");
} }
elsif ( $tinfo->{'comment'} ) elsif ( $tinfo->{'comment'} )
{ {
print "[ skipped ] $tinfo->{'comment'}\n"; mtr_report("[ skipped ] $tinfo->{'comment'}");
} }
else else
{ {
print "[ skipped ]\n"; mtr_report("[ skipped ]");
} }
} }
...@@ -142,11 +97,11 @@ sub mtr_report_test_passed ($) { ...@@ -142,11 +97,11 @@ sub mtr_report_test_passed ($) {
if ( $::opt_timer and -f "$::opt_vardir/log/timer" ) if ( $::opt_timer and -f "$::opt_vardir/log/timer" )
{ {
$timer= mtr_fromfile("$::opt_vardir/log/timer"); $timer= mtr_fromfile("$::opt_vardir/log/timer");
$::glob_tot_real_time += ($timer/1000); $tot_real_time += ($timer/1000);
$timer= sprintf "%12s", $timer; $timer= sprintf "%12s", $timer;
} }
$tinfo->{'result'}= 'MTR_RES_PASSED'; $tinfo->{'result'}= 'MTR_RES_PASSED';
print "[ pass ] $timer\n"; mtr_report("[ pass ] $timer");
} }
sub mtr_report_test_failed ($) { sub mtr_report_test_failed ($) {
...@@ -155,27 +110,34 @@ sub mtr_report_test_failed ($) { ...@@ -155,27 +110,34 @@ sub mtr_report_test_failed ($) {
$tinfo->{'result'}= 'MTR_RES_FAILED'; $tinfo->{'result'}= 'MTR_RES_FAILED';
if ( defined $tinfo->{'timeout'} ) if ( defined $tinfo->{'timeout'} )
{ {
print "[ fail ] timeout\n"; mtr_report("[ fail ] timeout");
return; return;
} }
else else
{ {
print "[ fail ]\n"; mtr_report("[ fail ]");
} }
if ( $tinfo->{'comment'} ) if ( $tinfo->{'comment'} )
{ {
print "\nERROR: $tinfo->{'comment'}\n"; # The test failure has been detected by mysql-test-run.pl
# when starting the servers or due to other error, the reason for
# failing the test is saved in "comment"
mtr_report("\nERROR: $tinfo->{'comment'}");
} }
elsif ( -f $::path_timefile ) elsif ( -f $::path_timefile )
{ {
print "\nErrors are (from $::path_timefile) :\n"; # Test failure was detected by test tool and it's report
# about what failed has been saved to file. Display the report.
print "\n";
print mtr_fromfile($::path_timefile); # FIXME print_file() instead print mtr_fromfile($::path_timefile); # FIXME print_file() instead
print "\n(the last lines may be the most important ones)\n"; print "\n";
} }
else else
{ {
print "\nUnexpected termination, probably when starting mysqld\n"; # Neither this script or the test tool has recorded info
# about why the test has failed. Should be debugged.
mtr_report("\nUnexpected termination, probably when starting mysqld");;
} }
} }
...@@ -243,8 +205,10 @@ sub mtr_report_stats ($) { ...@@ -243,8 +205,10 @@ sub mtr_report_stats ($) {
if ( $::opt_timer ) if ( $::opt_timer )
{ {
print use English;
"Spent $::glob_tot_real_time seconds actually executing testcases\n"
mtr_report("Spent", sprintf("%.3f", $tot_real_time),"of",
time - $BASETIME, "seconds executing testcases");
} }
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
...@@ -397,35 +361,66 @@ sub mtr_print_header () { ...@@ -397,35 +361,66 @@ sub mtr_print_header () {
############################################################################## ##############################################################################
# #
# Misc # Log and reporting functions
# #
############################################################################## ##############################################################################
use IO::File;
my $log_file_ref= undef;
sub mtr_log_init ($) {
my ($filename)= @_;
mtr_error("Log is already open") if defined $log_file_ref;
$log_file_ref= IO::File->new($filename, "a") or
mtr_warning("Could not create logfile $filename: $!");
}
sub _mtr_log (@) {
print $log_file_ref join(" ", @_),"\n"
if defined $log_file_ref;
}
sub mtr_report (@) { sub mtr_report (@) {
# Print message to screen and log
_mtr_log(@_);
print join(" ", @_),"\n"; print join(" ", @_),"\n";
} }
sub mtr_warning (@) { sub mtr_warning (@) {
# Print message to screen and log
_mtr_log("WARNING: ", @_);
print STDERR "mysql-test-run: WARNING: ",join(" ", @_),"\n"; print STDERR "mysql-test-run: WARNING: ",join(" ", @_),"\n";
} }
sub mtr_error (@) { sub mtr_error (@) {
# Print message to screen and log
_mtr_log("ERROR: ", @_);
print STDERR "mysql-test-run: *** ERROR: ",join(" ", @_),"\n"; print STDERR "mysql-test-run: *** ERROR: ",join(" ", @_),"\n";
mtr_exit(1); mtr_exit(1);
} }
sub mtr_child_error (@) { sub mtr_child_error (@) {
# Print message to screen and log
_mtr_log("ERROR(child): ", @_);
print STDERR "mysql-test-run: *** ERROR(child): ",join(" ", @_),"\n"; print STDERR "mysql-test-run: *** ERROR(child): ",join(" ", @_),"\n";
exit(1); exit(1);
} }
sub mtr_debug (@) { sub mtr_debug (@) {
# Only print if --script-debug is used
if ( $::opt_script_debug ) if ( $::opt_script_debug )
{ {
_mtr_log("###: ", @_);
print STDERR "####: ",join(" ", @_),"\n"; print STDERR "####: ",join(" ", @_),"\n";
} }
} }
sub mtr_verbose (@) { sub mtr_verbose (@) {
# Always print to log, print to screen only when --verbose is used
_mtr_log("> ",@_);
if ( $::opt_verbose ) if ( $::opt_verbose )
{ {
print STDERR "> ",join(" ", @_),"\n"; print STDERR "> ",join(" ", @_),"\n";
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
# and is part of the translation of the Bourne shell script with the # and is part of the translation of the Bourne shell script with the
# same name. # same name.
use Socket;
use Errno; use Errno;
use strict; use strict;
...@@ -52,12 +51,10 @@ sub mtr_init_timers () { ...@@ -52,12 +51,10 @@ sub mtr_init_timers () {
sub mtr_timer_start($$$) { sub mtr_timer_start($$$) {
my ($timers,$name,$duration)= @_; my ($timers,$name,$duration)= @_;
mtr_verbose("mtr_timer_start: $name, $duration");
if ( exists $timers->{'timers'}->{$name} ) if ( exists $timers->{'timers'}->{$name} )
{ {
# We have an old running timer, kill it # We have an old running timer, kill it
mtr_verbose("There is an old timer running"); mtr_warning("There is an old timer running");
mtr_timer_stop($timers,$name); mtr_timer_stop($timers,$name);
} }
...@@ -75,22 +72,22 @@ sub mtr_timer_start($$$) { ...@@ -75,22 +72,22 @@ sub mtr_timer_start($$$) {
} }
else else
{ {
mtr_error("can't fork"); mtr_error("can't fork timer, error: $!");
} }
} }
if ( $tpid ) if ( $tpid )
{ {
# Parent, record the information # Parent, record the information
mtr_verbose("timer parent, record info($name, $tpid, $duration)"); mtr_verbose("Starting timer for '$name',",
"duration: $duration, pid: $tpid");
$timers->{'timers'}->{$name}->{'pid'}= $tpid; $timers->{'timers'}->{$name}->{'pid'}= $tpid;
$timers->{'timers'}->{$name}->{'duration'}= $duration; $timers->{'timers'}->{$name}->{'duration'}= $duration;
$timers->{'pids'}->{$tpid}= $name; $timers->{'pids'}->{$tpid}= $name;
} }
else else
{ {
# Child, redirect output and exec # Child, install signal handlers and sleep for "duration"
# FIXME do we need to redirect streams?
# Don't do the ^C cleanup in the timeout child processes! # Don't do the ^C cleanup in the timeout child processes!
# There is actually a race here, if we get ^C after fork(), but before # There is actually a race here, if we get ^C after fork(), but before
...@@ -98,13 +95,13 @@ sub mtr_timer_start($$$) { ...@@ -98,13 +95,13 @@ sub mtr_timer_start($$$) {
$SIG{INT}= 'DEFAULT'; $SIG{INT}= 'DEFAULT';
$SIG{TERM}= sub { $SIG{TERM}= sub {
mtr_verbose("timer woke up, exiting!"); mtr_verbose("timer $$ woke up, exiting!");
exit(0); exit(0);
}; };
$0= "mtr_timer(timers,$name,$duration)"; $0= "mtr_timer(timers,$name,$duration)";
sleep($duration); sleep($duration);
mtr_verbose("timer expired after $duration seconds"); mtr_verbose("timer $$ expired after $duration seconds");
exit(0); exit(0);
} }
} }
...@@ -114,12 +111,10 @@ sub mtr_timer_start($$$) { ...@@ -114,12 +111,10 @@ sub mtr_timer_start($$$) {
sub mtr_timer_stop ($$) { sub mtr_timer_stop ($$) {
my ($timers,$name)= @_; my ($timers,$name)= @_;
mtr_verbose("mtr_timer_stop: $name");
if ( exists $timers->{'timers'}->{$name} ) if ( exists $timers->{'timers'}->{$name} )
{ {
my $tpid= $timers->{'timers'}->{$name}->{'pid'}; my $tpid= $timers->{'timers'}->{$name}->{'pid'};
mtr_verbose("Stopping timer with pid $tpid"); mtr_verbose("Stopping timer for '$name' with pid $tpid");
# FIXME as Cygwin reuses pids fast, maybe check that is # FIXME as Cygwin reuses pids fast, maybe check that is
# the expected process somehow?! # the expected process somehow?!
...@@ -134,11 +129,8 @@ sub mtr_timer_stop ($$) { ...@@ -134,11 +129,8 @@ sub mtr_timer_stop ($$) {
return 1; return 1;
} }
else
{ mtr_error("Asked to stop timer '$name' not started");
mtr_error("Asked to stop timer \"$name\" not started");
return 0;
}
} }
...@@ -158,7 +150,8 @@ sub mtr_timer_timeout ($$) { ...@@ -158,7 +150,8 @@ sub mtr_timer_timeout ($$) {
return "" unless exists $timers->{'pids'}->{$pid}; return "" unless exists $timers->{'pids'}->{$pid};
# We got a timeout, return the name ot the timer # Got a timeout(the process with $pid is recorded as being a timer)
# return the name of the timer
return $timers->{'pids'}->{$pid}; return $timers->{'pids'}->{$pid};
} }
......
...@@ -61,7 +61,6 @@ use File::Copy; ...@@ -61,7 +61,6 @@ use File::Copy;
use File::Temp qw / tempdir /; use File::Temp qw / tempdir /;
use Cwd; use Cwd;
use Getopt::Long; use Getopt::Long;
use Sys::Hostname;
use IO::Socket; use IO::Socket;
use IO::Socket::INET; use IO::Socket::INET;
use strict; use strict;
...@@ -83,7 +82,6 @@ require "lib/mtr_io.pl"; ...@@ -83,7 +82,6 @@ require "lib/mtr_io.pl";
require "lib/mtr_gcov.pl"; require "lib/mtr_gcov.pl";
require "lib/mtr_gprof.pl"; require "lib/mtr_gprof.pl";
require "lib/mtr_report.pl"; require "lib/mtr_report.pl";
require "lib/mtr_diff.pl";
require "lib/mtr_match.pl"; require "lib/mtr_match.pl";
require "lib/mtr_misc.pl"; require "lib/mtr_misc.pl";
require "lib/mtr_stress.pl"; require "lib/mtr_stress.pl";
...@@ -101,7 +99,6 @@ $Devel::Trace::TRACE= 1; ...@@ -101,7 +99,6 @@ $Devel::Trace::TRACE= 1;
our $mysql_version_id; our $mysql_version_id;
our $glob_mysql_test_dir= undef; our $glob_mysql_test_dir= undef;
our $glob_mysql_bench_dir= undef; our $glob_mysql_bench_dir= undef;
our $glob_hostname= undef;
our $glob_scriptname= undef; our $glob_scriptname= undef;
our $glob_timers= undef; our $glob_timers= undef;
our $glob_use_running_ndbcluster= 0; our $glob_use_running_ndbcluster= 0;
...@@ -234,7 +231,6 @@ my $opt_report_features; ...@@ -234,7 +231,6 @@ my $opt_report_features;
our $opt_check_testcases; our $opt_check_testcases;
our $opt_mark_progress; our $opt_mark_progress;
our $opt_skip;
our $opt_skip_rpl; our $opt_skip_rpl;
our $max_slave_num= 0; our $max_slave_num= 0;
our $max_master_num= 1; our $max_master_num= 1;
...@@ -277,13 +273,8 @@ our $opt_stress_test_duration= 0; ...@@ -277,13 +273,8 @@ our $opt_stress_test_duration= 0;
our $opt_stress_init_file= ""; our $opt_stress_init_file= "";
our $opt_stress_test_file= ""; our $opt_stress_test_file= "";
our $opt_wait_for_master;
our $opt_wait_for_slave;
our $opt_warnings; our $opt_warnings;
our $opt_udiff;
our $opt_skip_ndbcluster= 0; our $opt_skip_ndbcluster= 0;
our $opt_skip_ndbcluster_slave= 0; our $opt_skip_ndbcluster_slave= 0;
our $opt_with_ndbcluster= 0; our $opt_with_ndbcluster= 0;
...@@ -307,7 +298,6 @@ our @data_dir_lst; ...@@ -307,7 +298,6 @@ our @data_dir_lst;
our $used_binlog_format; our $used_binlog_format;
our $used_default_engine; our $used_default_engine;
our $debug_compiled_binaries; our $debug_compiled_binaries;
our $glob_tot_real_time= 0;
our %mysqld_variables; our %mysqld_variables;
...@@ -620,7 +610,6 @@ sub command_line_setup () { ...@@ -620,7 +610,6 @@ sub command_line_setup () {
'start-dirty' => \$opt_start_dirty, 'start-dirty' => \$opt_start_dirty,
'start-and-exit' => \$opt_start_and_exit, 'start-and-exit' => \$opt_start_and_exit,
'timer!' => \$opt_timer, 'timer!' => \$opt_timer,
'unified-diff|udiff' => \$opt_udiff,
'user=s' => \$opt_user, 'user=s' => \$opt_user,
'testcase-timeout=i' => \$opt_testcase_timeout, 'testcase-timeout=i' => \$opt_testcase_timeout,
'suite-timeout=i' => \$opt_suite_timeout, 'suite-timeout=i' => \$opt_suite_timeout,
...@@ -656,8 +645,6 @@ sub command_line_setup () { ...@@ -656,8 +645,6 @@ sub command_line_setup () {
$source_dist= 1; $source_dist= 1;
} }
$glob_hostname= mtr_short_hostname();
# Find the absolute path to the test directory # Find the absolute path to the test directory
$glob_mysql_test_dir= cwd(); $glob_mysql_test_dir= cwd();
if ( $glob_cygwin_perl ) if ( $glob_cygwin_perl )
...@@ -2905,13 +2892,16 @@ sub initialize_servers () { ...@@ -2905,13 +2892,16 @@ sub initialize_servers () {
} }
} }
check_running_as_root(); check_running_as_root();
mtr_log_init("$opt_vardir/log/mysql-test-run.log");
} }
sub mysql_install_db () { sub mysql_install_db () {
install_db('master', $master->[0]->{'path_myddir'}); install_db('master', $master->[0]->{'path_myddir'});
if ($max_master_num) if ($max_master_num > 1)
{ {
copy_install_db('master', $master->[1]->{'path_myddir'}); copy_install_db('master', $master->[1]->{'path_myddir'});
} }
...@@ -3069,11 +3059,15 @@ sub install_db ($$) { ...@@ -3069,11 +3059,15 @@ sub install_db ($$) {
mtr_appendfile_to_file("$path_sql_dir/fill_help_tables.sql", mtr_appendfile_to_file("$path_sql_dir/fill_help_tables.sql",
$bootstrap_sql_file); $bootstrap_sql_file);
mtr_tofile($bootstrap_sql_file,
"DELETE FROM mysql.user where user= '';");
# Log bootstrap command # Log bootstrap command
my $path_bootstrap_log= "$opt_vardir/log/bootstrap.log"; my $path_bootstrap_log= "$opt_vardir/log/bootstrap.log";
mtr_tofile($path_bootstrap_log, mtr_tofile($path_bootstrap_log,
"$exe_mysqld_bootstrap " . join(" ", @$args) . "\n"); "$exe_mysqld_bootstrap " . join(" ", @$args) . "\n");
if ( mtr_run($exe_mysqld_bootstrap, $args, $bootstrap_sql_file, if ( mtr_run($exe_mysqld_bootstrap, $args, $bootstrap_sql_file,
$path_bootstrap_log, $path_bootstrap_log, $path_bootstrap_log, $path_bootstrap_log,
"", { append_log_file => 1 }) != 0 ) "", { append_log_file => 1 }) != 0 )
...@@ -3617,7 +3611,6 @@ sub report_failure_and_restart ($) { ...@@ -3617,7 +3611,6 @@ sub report_failure_and_restart ($) {
my $tinfo= shift; my $tinfo= shift;
mtr_report_test_failed($tinfo); mtr_report_test_failed($tinfo);
mtr_show_failed_diff($tinfo->{'result_file'});
print "\n"; print "\n";
if ( $opt_force ) if ( $opt_force )
{ {
...@@ -3626,13 +3619,13 @@ sub report_failure_and_restart ($) { ...@@ -3626,13 +3619,13 @@ sub report_failure_and_restart ($) {
# Restore the snapshot of the installed test db # Restore the snapshot of the installed test db
restore_installed_db($tinfo->{'name'}); restore_installed_db($tinfo->{'name'});
print "Resuming Tests\n\n"; mtr_report("Resuming Tests\n");
return; return;
} }
my $test_mode= join(" ", @::glob_test_mode) || "default"; my $test_mode= join(" ", @::glob_test_mode) || "default";
print "Aborting: $tinfo->{'name'} failed in $test_mode mode. "; mtr_report("Aborting: $tinfo->{'name'} failed in $test_mode mode. ");
print "To continue, re-run with '--force'.\n"; mtr_report("To continue, re-run with '--force'.");
if ( ! $glob_debugger and if ( ! $glob_debugger and
! $opt_extern and ! $opt_extern and
! $glob_use_embedded_server ) ! $glob_use_embedded_server )
...@@ -4090,11 +4083,11 @@ sub mysqld_start ($$$) { ...@@ -4090,11 +4083,11 @@ sub mysqld_start ($$$) {
sub stop_all_servers () { sub stop_all_servers () {
print "Stopping All Servers\n"; mtr_report("Stopping All Servers");
if ( ! $opt_skip_im ) if ( ! $opt_skip_im )
{ {
print "Shutting-down Instance Manager\n"; mtr_report("Shutting-down Instance Manager");
unless (mtr_im_stop($instance_manager, "stop_all_servers")) unless (mtr_im_stop($instance_manager, "stop_all_servers"))
{ {
mtr_error("Failed to stop Instance Manager.") mtr_error("Failed to stop Instance Manager.")
...@@ -4680,6 +4673,7 @@ sub run_mysqltest ($) { ...@@ -4680,6 +4673,7 @@ sub run_mysqltest ($) {
mtr_add_arg($args, "--skip-safemalloc"); mtr_add_arg($args, "--skip-safemalloc");
mtr_add_arg($args, "--tmpdir=%s", $opt_tmpdir); mtr_add_arg($args, "--tmpdir=%s", $opt_tmpdir);
mtr_add_arg($args, "--character-sets-dir=%s", $path_charsetsdir); mtr_add_arg($args, "--character-sets-dir=%s", $path_charsetsdir);
mtr_add_arg($args, "--logdir=%s/log", $opt_vardir);
# Log line number and time for each line in .test file # Log line number and time for each line in .test file
mtr_add_arg($args, "--mark-progress") mtr_add_arg($args, "--mark-progress")
...@@ -4802,6 +4796,9 @@ sub run_mysqltest ($) { ...@@ -4802,6 +4796,9 @@ sub run_mysqltest ($) {
mtr_add_arg($args, "--test-file=%s", $tinfo->{'path'}); mtr_add_arg($args, "--test-file=%s", $tinfo->{'path'});
# Number of lines of resut to include in failure report
mtr_add_arg($args, "--tail-lines=20");
if ( defined $tinfo->{'result_file'} ) { if ( defined $tinfo->{'result_file'} ) {
mtr_add_arg($args, "--result-file=%s", $tinfo->{'result_file'}); mtr_add_arg($args, "--result-file=%s", $tinfo->{'result_file'});
} }
...@@ -5213,7 +5210,6 @@ Misc options ...@@ -5213,7 +5210,6 @@ Misc options
fast Don't try to clean up from earlier runs fast Don't try to clean up from earlier runs
reorder Reorder tests to get fewer server restarts reorder Reorder tests to get fewer server restarts
help Get this help text help Get this help text
unified-diff | udiff When presenting differences, use unified diff
testcase-timeout=MINUTES Max test case run time (default $default_testcase_timeout) testcase-timeout=MINUTES Max test case run time (default $default_testcase_timeout)
suite-timeout=MINUTES Max test suite run time (default $default_suite_timeout) suite-timeout=MINUTES Max test suite run time (default $default_suite_timeout)
......
...@@ -280,8 +280,20 @@ let $B = changed value of B; ...@@ -280,8 +280,20 @@ let $B = changed value of B;
var2: content of variable 1 var2: content of variable 1
var3: content of variable 1 content of variable 1 var3: content of variable 1 content of variable 1
length of var3 is longer than 0 length of var3 is longer than 0
var1
hi 1 hi there
var2
2
var2 again
2
var3 two columns with same name
1 2 3
var4 from query that returns NULL
var5 from query that returns no row
failing query in let
mysqltest: At line 1: Error running query 'failing query': 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'failing query' at line 1
mysqltest: At line 1: Missing required argument 'filename' to command 'source' mysqltest: At line 1: Missing required argument 'filename' to command 'source'
mysqltest: At line 1: Could not open file ./non_existingFile mysqltest: At line 1: Could not open file './non_existingFile'
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/recursive.sql": At line 1: Source directives are nesting too deep mysqltest: In included file "MYSQLTEST_VARDIR/tmp/recursive.sql": At line 1: Source directives are nesting too deep
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/error.sql": At line 1: query 'garbage ' failed: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'garbage' at line 1 mysqltest: In included file "MYSQLTEST_VARDIR/tmp/error.sql": At line 1: query 'garbage ' failed: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'garbage' at line 1
...@@ -340,6 +352,8 @@ here is the sourced script ...@@ -340,6 +352,8 @@ here is the sourced script
In loop In loop
here is the sourced script here is the sourced script
here is the sourced script here is the sourced script
"hello"
"hello"
mysqltest: At line 1: Missing argument to sleep mysqltest: At line 1: Missing argument to sleep
mysqltest: At line 1: Missing argument to real_sleep mysqltest: At line 1: Missing argument to real_sleep
mysqltest: At line 1: Invalid argument to sleep "abc" mysqltest: At line 1: Invalid argument to sleep "abc"
...@@ -461,7 +475,6 @@ root@localhost ...@@ -461,7 +475,6 @@ root@localhost
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
this will be executed this will be executed
this will be executed this will be executed
mysqltest: Result length mismatch
mysqltest: The test didn't produce any output mysqltest: The test didn't produce any output
Failing multi statement query Failing multi statement query
mysqltest: At line 3: query 'create table t1 (a int primary key); mysqltest: At line 3: query 'create table t1 (a int primary key);
...@@ -473,6 +486,8 @@ mysqltest: At line 3: query 'create table t1 (a int primary key); ...@@ -473,6 +486,8 @@ mysqltest: At line 3: query 'create table t1 (a int primary key);
insert into t1 values (1); insert into t1 values (1);
select 'select-me'; select 'select-me';
insertz 'error query'' failed: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insertz 'error query'' at line 1 insertz 'error query'' failed: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insertz 'error query'' at line 1
More results from queries before failure can be found in MYSQLTEST_VARDIR/log/bug11731.log
drop table t1; drop table t1;
Multi statement using expected error Multi statement using expected error
create table t1 (a int primary key); create table t1 (a int primary key);
...@@ -520,17 +535,19 @@ drop table t1; ...@@ -520,17 +535,19 @@ drop table t1;
mysqltest: At line 1: Missing required argument 'filename' to command 'remove_file' mysqltest: At line 1: Missing required argument 'filename' to command 'remove_file'
mysqltest: At line 1: Missing required argument 'filename' to command 'write_file' mysqltest: At line 1: Missing required argument 'filename' to command 'write_file'
mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found mysqltest: At line 1: End of file encountered before 'EOF' delimiter was found
Content for test_file1
mysqltest: At line 1: File already exist: 'MYSQLTEST_VARDIR/tmp/test_file1.tmp'
Some data Some data
for cat_file command for cat_file command
of mysqltest of mysqltest
mysqltest: At line 1: Failed to open file non_existing_file mysqltest: At line 1: Failed to open file 'non_existing_file'
mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists' mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists'
mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file' mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file'
mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file' mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file'
mysqltest: At line 1: Missing required argument 'mode' to command 'chmod' mysqltest: At line 1: Missing required argument 'mode' to command 'chmod'
mysqltest: At line 1: You must write a 4 digit octal number for mode mysqltest: At line 1: You must write a 4 digit octal number for mode
mysqltest: At line 1: You must write a 4 digit octal number for mode mysqltest: At line 1: You must write a 4 digit octal number for mode
mysqltest: At line 1: Missing required argument 'file' to command 'chmod' mysqltest: At line 1: Missing required argument 'filename' to command 'chmod'
mysqltest: At line 1: You must write a 4 digit octal number for mode mysqltest: At line 1: You must write a 4 digit octal number for mode
mysqltest: At line 1: You must write a 4 digit octal number for mode mysqltest: At line 1: You must write a 4 digit octal number for mode
hello hello
......
...@@ -5748,6 +5748,7 @@ bug23760_rc_test(ROW_COUNT()) ...@@ -5748,6 +5748,7 @@ bug23760_rc_test(ROW_COUNT())
DROP TABLE bug23760, bug23760_log| DROP TABLE bug23760, bug23760_log|
DROP PROCEDURE bug23760_update_log| DROP PROCEDURE bug23760_update_log|
DROP PROCEDURE bug23760_test_row_count| DROP PROCEDURE bug23760_test_row_count|
DROP PROCEDURE bug23760_test_row_count2|
DROP FUNCTION bug23760_rc_test| DROP FUNCTION bug23760_rc_test|
DROP PROCEDURE IF EXISTS bug24117| DROP PROCEDURE IF EXISTS bug24117|
DROP TABLE IF EXISTS t3| DROP TABLE IF EXISTS t3|
......
...@@ -9,12 +9,13 @@ drop table if exists t1; ...@@ -9,12 +9,13 @@ drop table if exists t1;
# #
# Check that --bootstrap reads from stdin # Check that --bootstrap reads from stdin
# #
--write_file $MYSQLTEST_VARDIR/tmp/bootstrap.sql --write_file $MYSQLTEST_VARDIR/tmp/bootstrap_test.sql
use test; use test;
CREATE TABLE t1(a int); CREATE TABLE t1(a int);
EOF EOF
--exec $MYSQLD_BOOTSTRAP_CMD < $MYSQLTEST_VARDIR/tmp/bootstrap.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1 --exec $MYSQLD_BOOTSTRAP_CMD < $MYSQLTEST_VARDIR/tmp/bootstrap_test.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
drop table t1; drop table t1;
remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_test.sql;
# #
# Check that --bootstrap of file with SQL error returns error # Check that --bootstrap of file with SQL error returns error
...@@ -28,6 +29,7 @@ EOF ...@@ -28,6 +29,7 @@ EOF
# Table t1 should not exists # Table t1 should not exists
--error 1051 --error 1051
drop table t1; drop table t1;
remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_error.sql;
# #
# Bootstrap with a query larger than 2*thd->net.max_packet # Bootstrap with a query larger than 2*thd->net.max_packet
...@@ -40,6 +42,7 @@ eval select * into outfile '$MYSQLTEST_VARDIR/tmp/long_query.sql' from t1; ...@@ -40,6 +42,7 @@ eval select * into outfile '$MYSQLTEST_VARDIR/tmp/long_query.sql' from t1;
--enable_query_log --enable_query_log
--error 1 --error 1
--exec $MYSQLD_BOOTSTRAP_CMD < $MYSQLTEST_VARDIR/tmp/long_query.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1 --exec $MYSQLD_BOOTSTRAP_CMD < $MYSQLTEST_VARDIR/tmp/long_query.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
remove_file $MYSQLTEST_VARDIR/tmp/long_query.sql;
set global max_allowed_packet=@my_max_allowed_packet; set global max_allowed_packet=@my_max_allowed_packet;
drop table t1; drop table t1;
......
...@@ -241,18 +241,21 @@ DELIMITER / ...@@ -241,18 +241,21 @@ DELIMITER /
SELECT 1/ SELECT 1/
EOF EOF
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1 --exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1
remove_file $MYSQLTEST_VARDIR/tmp/bug21412.sql;
# This should give an error... # This should give an error...
--write_file $MYSQLTEST_VARDIR/tmp/bug21412.sql --write_file $MYSQLTEST_VARDIR/tmp/bug21412.sql
DELIMITER \ DELIMITER \
EOF EOF
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1 --exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1
remove_file $MYSQLTEST_VARDIR/tmp/bug21412.sql;
# As should this... # As should this...
--write_file $MYSQLTEST_VARDIR/tmp/bug21412.sql --write_file $MYSQLTEST_VARDIR/tmp/bug21412.sql
DELIMITER \\ DELIMITER \\
EOF EOF
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1 --exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21412.sql 2>&1
remove_file $MYSQLTEST_VARDIR/tmp/bug21412.sql;
# #
# Some coverage of not normally used parts # Some coverage of not normally used parts
......
...@@ -20,7 +20,7 @@ EOF ...@@ -20,7 +20,7 @@ EOF
--replace_regex /.*mysqladmin.*: unknown/mysqladmin: unknown/ --replace_regex /.*mysqladmin.*: unknown/mysqladmin: unknown/
--error 7 --error 7
--exec $MYSQLADMIN --defaults-file=$MYSQLTEST_VARDIR/tmp/bug10608.cnf -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= ping 2>&1 --exec $MYSQLADMIN --defaults-file=$MYSQLTEST_VARDIR/tmp/bug10608.cnf -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= ping 2>&1
remove_file $MYSQLTEST_VARDIR/tmp/bug10608.cnf;
# When mysqladmin finds "loose-database" in .cnf file it shall print # When mysqladmin finds "loose-database" in .cnf file it shall print
# a warning and continue # a warning and continue
...@@ -32,3 +32,4 @@ EOF ...@@ -32,3 +32,4 @@ EOF
--replace_regex /Warning: .*mysqladmin.*: unknown/Warning: mysqladmin: unknown/ --replace_regex /Warning: .*mysqladmin.*: unknown/Warning: mysqladmin: unknown/
--exec $MYSQLADMIN --defaults-file=$MYSQLTEST_VARDIR/tmp/bug10608.cnf -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= ping 2>&1 --exec $MYSQLADMIN --defaults-file=$MYSQLTEST_VARDIR/tmp/bug10608.cnf -S $MASTER_MYSOCK -P $MASTER_MYPORT -u root --password= ping 2>&1
remove_file $MYSQLTEST_VARDIR/tmp/bug10608.cnf;
This diff is collapsed.
...@@ -42,6 +42,7 @@ insert into t1 values (0); ...@@ -42,6 +42,7 @@ insert into t1 values (0);
flush table mysql.proc; flush table mysql.proc;
# Thrashing the .frm file # Thrashing the .frm file
--remove_file $MYSQLTEST_VARDIR/master-data/mysql/proc.frm
--write_file $MYSQLTEST_VARDIR/master-data/mysql/proc.frm --write_file $MYSQLTEST_VARDIR/master-data/mysql/proc.frm
saljdfa saljdfa
EOF EOF
......
...@@ -6715,6 +6715,7 @@ SELECT bug23760_rc_test(ROW_COUNT())| ...@@ -6715,6 +6715,7 @@ SELECT bug23760_rc_test(ROW_COUNT())|
DROP TABLE bug23760, bug23760_log| DROP TABLE bug23760, bug23760_log|
DROP PROCEDURE bug23760_update_log| DROP PROCEDURE bug23760_update_log|
DROP PROCEDURE bug23760_test_row_count| DROP PROCEDURE bug23760_test_row_count|
DROP PROCEDURE bug23760_test_row_count2|
DROP FUNCTION bug23760_rc_test| DROP FUNCTION bug23760_rc_test|
# #
......
...@@ -1739,12 +1739,13 @@ static bool show_status_array(THD *thd, const char *wild, ...@@ -1739,12 +1739,13 @@ static bool show_status_array(THD *thd, const char *wild,
if (thd->net.vio->ssl_arg) if (thd->net.vio->ssl_arg)
{ {
char *to= buff; char *to= buff;
for (int i=0 ; i++ ;) char *buff_end= buff + sizeof(buff);
for (int i= 0; to < buff_end; i++)
{ {
const char *p= SSL_get_cipher_list((SSL*) thd->net.vio->ssl_arg,i); const char *p= SSL_get_cipher_list((SSL*) thd->net.vio->ssl_arg,i);
if (p == NULL) if (p == NULL)
break; break;
to= strmov(to, p); to= strnmov(to, p, buff_end-to-1);
*to++= ':'; *to++= ':';
} }
if (to != buff) if (to != buff)
......
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