mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
bzr merge from guilhem's maria tree to our local 5.1
configure.in: Manually merged mysql-test/lib/My/ConfigFactory.pm: Manually merged mysql-test/mysql-test-run.pl: Manually merged mysql-test/t/information_schema.test: Manually merged sql/handler.cc: Manually merged support-files/mysql.spec.sh: Manually merged
This commit is contained in:
184
mysql-test/mysql-test-run.pl
Executable file → Normal file
184
mysql-test/mysql-test-run.pl
Executable file → Normal file
@ -45,8 +45,8 @@ BEGIN {
|
||||
print "=======================================================\n";
|
||||
print " WARNING: Using mysql-test-run.pl version 1! \n";
|
||||
print "=======================================================\n";
|
||||
require "lib/v1/mysql-test-run.pl";
|
||||
exit(1);
|
||||
# Should use exec() here on *nix but this appears not to work on Windows
|
||||
exit(system($^X, "lib/v1/mysql-test-run.pl", @ARGV) >> 8);
|
||||
}
|
||||
elsif ( $version == 2 )
|
||||
{
|
||||
@ -107,6 +107,17 @@ our $default_vardir;
|
||||
our $opt_vardir; # Path to use for var/ dir
|
||||
my $path_vardir_trace; # unix formatted opt_vardir for trace files
|
||||
my $opt_tmpdir; # Path to use for tmp/ dir
|
||||
my $opt_tmpdir_pid;
|
||||
|
||||
END {
|
||||
if ( defined $opt_tmpdir_pid and $opt_tmpdir_pid == $$ )
|
||||
{
|
||||
# Remove the tempdir this process has created
|
||||
mtr_verbose("Removing tmpdir '$opt_tmpdir");
|
||||
rmtree($opt_tmpdir);
|
||||
}
|
||||
}
|
||||
|
||||
my $path_config_file; # The generated config file, var/my.cnf
|
||||
|
||||
# Visual Studio produces executables in different sub-directories based on the
|
||||
@ -137,7 +148,7 @@ our @opt_extra_mysqltest_opt;
|
||||
|
||||
my $opt_compress;
|
||||
my $opt_ssl;
|
||||
my $opt_skip_ssl = 1; # Until bug#42366 has been fixed
|
||||
my $opt_skip_ssl;
|
||||
my $opt_ssl_supported;
|
||||
my $opt_ps_protocol;
|
||||
my $opt_sp_protocol;
|
||||
@ -157,8 +168,9 @@ our $opt_force;
|
||||
our $opt_mem= $ENV{'MTR_MEM'};
|
||||
|
||||
our $opt_gcov;
|
||||
our $opt_gcov_err;
|
||||
our $opt_gcov_msg;
|
||||
our $opt_gcov_exe= "gcov";
|
||||
our $opt_gcov_err= "mysql-test-gcov.msg";
|
||||
our $opt_gcov_msg= "mysql-test-gcov.err";
|
||||
|
||||
our $glob_debugger= 0;
|
||||
our $opt_gdb;
|
||||
@ -174,12 +186,18 @@ our $opt_client_debugger;
|
||||
my $config; # The currently running config
|
||||
my $current_config_name; # The currently running config file template
|
||||
|
||||
our $opt_experimental;
|
||||
our $experimental_test_cases;
|
||||
|
||||
my $baseport;
|
||||
my $opt_build_thread= $ENV{'MTR_BUILD_THREAD'} || "auto";
|
||||
my $build_thread= 0;
|
||||
|
||||
my $opt_record;
|
||||
my $opt_report_features;
|
||||
|
||||
my $opt_skip_core;
|
||||
|
||||
our $opt_check_testcases= 1;
|
||||
my $opt_mark_progress;
|
||||
|
||||
@ -397,7 +415,7 @@ sub main {
|
||||
mtr_print_line();
|
||||
|
||||
if ( $opt_gcov ) {
|
||||
gcov_collect($basedir, $opt_gcov,
|
||||
gcov_collect($basedir, $opt_gcov_exe,
|
||||
$opt_gcov_msg, $opt_gcov_err);
|
||||
}
|
||||
|
||||
@ -692,14 +710,9 @@ sub run_worker ($) {
|
||||
report_option('name',"worker[$thread_num]");
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Use auto build thread in all but first worker
|
||||
# Set different ports per thread
|
||||
# --------------------------------------------------------------------------
|
||||
set_build_thread_ports($thread_num > 1 ? 'auto' : $opt_build_thread);
|
||||
|
||||
if (check_ports_free()){
|
||||
# Some port was not free(which one has already been printed)
|
||||
mtr_error("Some port(s) was not free")
|
||||
}
|
||||
set_build_thread_ports($thread_num);
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Turn off verbosity in workers, unless explicitly specified
|
||||
@ -829,7 +842,7 @@ sub command_line_setup {
|
||||
'big-test' => \$opt_big_test,
|
||||
'combination=s' => \@opt_combinations,
|
||||
'skip-combinations' => \&collect_option,
|
||||
|
||||
'experimental=s' => \$opt_experimental,
|
||||
'skip-im' => \&ignore_option,
|
||||
|
||||
# Specify ports
|
||||
@ -976,11 +989,11 @@ sub command_line_setup {
|
||||
}
|
||||
|
||||
# Look for language files and charsetsdir, use same share
|
||||
my $path_share= mtr_path_exists("$basedir/share/mysql",
|
||||
"$basedir/sql/share",
|
||||
"$basedir/share");
|
||||
$path_language= mtr_path_exists("$basedir/share/mysql/english",
|
||||
"$basedir/sql/share/english",
|
||||
"$basedir/share/english");
|
||||
|
||||
$path_language= mtr_path_exists("$path_share/english");
|
||||
my $path_share= dirname($path_language);
|
||||
$path_charsetsdir= mtr_path_exists("$path_share/charsets");
|
||||
|
||||
if (using_extern())
|
||||
@ -1002,6 +1015,33 @@ sub command_line_setup {
|
||||
mtr_print_thick_line('#');
|
||||
}
|
||||
|
||||
if ( $opt_experimental )
|
||||
{
|
||||
# read the list of experimental test cases from the file specified on
|
||||
# the command line
|
||||
open(FILE, "<", $opt_experimental) or mtr_error("Can't read experimental file: $opt_experimental");
|
||||
mtr_report("Using experimental file: $opt_experimental");
|
||||
$experimental_test_cases = [];
|
||||
while(<FILE>) {
|
||||
chomp;
|
||||
# remove comments (# foo) at the beginning of the line, or after a
|
||||
# blank at the end of the line
|
||||
s/( +|^)#.*$//;
|
||||
# remove whitespace
|
||||
s/^ +//;
|
||||
s/ +$//;
|
||||
# if nothing left, don't need to remember this line
|
||||
if ( $_ eq "" ) {
|
||||
next;
|
||||
}
|
||||
# remember what is left as the name of another test case that should be
|
||||
# treated as experimental
|
||||
print " - $_\n";
|
||||
push @$experimental_test_cases, $_;
|
||||
}
|
||||
close FILE;
|
||||
}
|
||||
|
||||
foreach my $arg ( @ARGV )
|
||||
{
|
||||
if ( $arg =~ /^--skip-/ )
|
||||
@ -1115,8 +1155,11 @@ sub command_line_setup {
|
||||
" creating a shorter one...");
|
||||
|
||||
# Create temporary directory in standard location for temporary files
|
||||
$opt_tmpdir= tempdir( TMPDIR => 1, CLEANUP => 1 );
|
||||
$opt_tmpdir= tempdir( TMPDIR => 1, CLEANUP => 0 );
|
||||
mtr_report(" - using tmpdir: '$opt_tmpdir'\n");
|
||||
|
||||
# Remember pid that created dir so it's removed by correct process
|
||||
$opt_tmpdir_pid= $$;
|
||||
}
|
||||
}
|
||||
$opt_tmpdir =~ s,/+$,,; # Remove ending slash if any
|
||||
@ -1128,6 +1171,14 @@ sub command_line_setup {
|
||||
$opt_shutdown_timeout= 0; # Kill processes instead of nice shutdown
|
||||
}
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Check parallel value
|
||||
# --------------------------------------------------------------------------
|
||||
if ($opt_parallel < 1)
|
||||
{
|
||||
mtr_error("0 or negative parallel value makes no sense, use positive number");
|
||||
}
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Record flag
|
||||
# --------------------------------------------------------------------------
|
||||
@ -1329,18 +1380,32 @@ sub command_line_setup {
|
||||
# But a fairly safe range seems to be 5001 - 32767
|
||||
#
|
||||
sub set_build_thread_ports($) {
|
||||
my $build_thread= shift || 0;
|
||||
my $thread= shift || 0;
|
||||
|
||||
if ( lc($build_thread) eq 'auto' ) {
|
||||
#mtr_report("Requesting build thread... ");
|
||||
$build_thread= mtr_get_unique_id(250, 299);
|
||||
if ( !defined $build_thread ) {
|
||||
mtr_error("Could not get a unique build thread id");
|
||||
if ( lc($opt_build_thread) eq 'auto' ) {
|
||||
my $found_free = 0;
|
||||
$build_thread = 250; # Start attempts from here
|
||||
while (! $found_free)
|
||||
{
|
||||
$build_thread= mtr_get_unique_id($build_thread, 299);
|
||||
if ( !defined $build_thread ) {
|
||||
mtr_error("Could not get a unique build thread id");
|
||||
}
|
||||
$found_free= check_ports_free($build_thread);
|
||||
# If not free, release and try from next number
|
||||
mtr_release_unique_id($build_thread++) unless $found_free;
|
||||
}
|
||||
#mtr_report(" - got $build_thread");
|
||||
}
|
||||
else
|
||||
{
|
||||
$build_thread = $opt_build_thread + $thread - 1;
|
||||
}
|
||||
$ENV{MTR_BUILD_THREAD}= $build_thread;
|
||||
$opt_build_thread= $build_thread;
|
||||
|
||||
if (! check_ports_free($build_thread)) {
|
||||
# Some port was not free(which one has already been printed)
|
||||
mtr_error("Some port(s) was not free")
|
||||
}
|
||||
|
||||
# Calculate baseport
|
||||
$baseport= $build_thread * 10 + 10000;
|
||||
@ -1589,8 +1654,8 @@ sub mysql_fix_arguments () {
|
||||
mtr_init_args(\$args);
|
||||
mtr_add_arg($args, "--defaults-file=%s", $path_config_file);
|
||||
|
||||
mtr_add_arg($args, "--basedir=", $basedir);
|
||||
mtr_add_arg($args, "--bindir=", $path_client_bindir);
|
||||
mtr_add_arg($args, "--basedir=%s", $basedir);
|
||||
mtr_add_arg($args, "--bindir=%s", $path_client_bindir);
|
||||
mtr_add_arg($args, "--verbose");
|
||||
return mtr_args2str($exe, @$args);
|
||||
}
|
||||
@ -2524,22 +2589,18 @@ sub kill_leftovers ($) {
|
||||
# Check that all the ports that are going to
|
||||
# be used are free
|
||||
#
|
||||
sub check_ports_free
|
||||
sub check_ports_free ($)
|
||||
{
|
||||
my @ports_to_check;
|
||||
for ($baseport..$baseport+9){
|
||||
push(@ports_to_check, $_);
|
||||
}
|
||||
#mtr_report("Checking ports...");
|
||||
# print "@ports_to_check\n";
|
||||
foreach my $port (@ports_to_check){
|
||||
if (mtr_ping_port($port)){
|
||||
mtr_report(" - 'localhost:$port' was not free");
|
||||
return 1; # One port was not free
|
||||
my $bthread= shift;
|
||||
my $portbase = $bthread * 10 + 10000;
|
||||
for ($portbase..$portbase+9){
|
||||
if (mtr_ping_port($_)){
|
||||
mtr_report(" - 'localhost:$_' was not free");
|
||||
return 0; # One port was not free
|
||||
}
|
||||
}
|
||||
|
||||
return 0; # All ports free
|
||||
return 1; # All ports free
|
||||
}
|
||||
|
||||
|
||||
@ -3689,7 +3750,10 @@ sub start_check_warnings ($$) {
|
||||
|
||||
my $name= "warnings-".$mysqld->name();
|
||||
|
||||
extract_warning_lines($mysqld->value('log-error'));
|
||||
my $log_error= $mysqld->value('#log-error');
|
||||
# To be communicated to the test
|
||||
$ENV{MTR_LOG_ERROR}= $log_error;
|
||||
extract_warning_lines($log_error);
|
||||
|
||||
my $args;
|
||||
mtr_init_args(\$args);
|
||||
@ -3699,6 +3763,7 @@ sub start_check_warnings ($$) {
|
||||
|
||||
mtr_add_arg($args, "--skip-safemalloc");
|
||||
mtr_add_arg($args, "--test-file=%s", "include/check-warnings.test");
|
||||
mtr_add_arg($args, "--verbose");
|
||||
|
||||
if ( $opt_embedded_server )
|
||||
{
|
||||
@ -3788,10 +3853,9 @@ sub check_warnings ($) {
|
||||
|
||||
if ( $res == 62 ) {
|
||||
# Test case was ok and called "skip"
|
||||
;
|
||||
# Remove the .err file the check generated
|
||||
unlink($err_file);
|
||||
}
|
||||
# Remove the .err file the check generated
|
||||
unlink($err_file);
|
||||
|
||||
if ( keys(%started) == 0){
|
||||
# All checks completed
|
||||
@ -3813,8 +3877,6 @@ sub check_warnings ($) {
|
||||
|
||||
$result= 2;
|
||||
}
|
||||
# Remove the .err file the check generated
|
||||
unlink($err_file);
|
||||
}
|
||||
elsif ( $proc eq $timeout_proc ) {
|
||||
$tinfo->{comment}.= "Timeout $timeout_proc for ".
|
||||
@ -4185,6 +4247,7 @@ sub mysqld_arguments ($$$) {
|
||||
mtr_add_arg($args, "%s", $arg);
|
||||
}
|
||||
}
|
||||
$opt_skip_core = $found_skip_core;
|
||||
if ( !$found_skip_core )
|
||||
{
|
||||
mtr_add_arg($args, "%s", "--core-file");
|
||||
@ -4229,6 +4292,12 @@ sub mysqld_start ($$) {
|
||||
$path_vardir_trace, $mysqld->name());
|
||||
}
|
||||
|
||||
if (IS_WINDOWS)
|
||||
{
|
||||
# Trick the server to send output to stderr, with --console
|
||||
mtr_add_arg($args, "--console");
|
||||
}
|
||||
|
||||
if ( $opt_gdb || $opt_manual_gdb )
|
||||
{
|
||||
gdb_arguments(\$args, \$exe, $mysqld->name());
|
||||
@ -4261,7 +4330,7 @@ sub mysqld_start ($$) {
|
||||
# Remove the old pidfile if any
|
||||
unlink($mysqld->value('pid-file'));
|
||||
|
||||
my $output= $mysqld->value('log-error');
|
||||
my $output= $mysqld->value('#log-error');
|
||||
if ( $opt_valgrind and $opt_debug )
|
||||
{
|
||||
# When both --valgrind and --debug is selected, send
|
||||
@ -4292,6 +4361,7 @@ sub mysqld_start ($$) {
|
||||
error => $output,
|
||||
append => 1,
|
||||
verbose => $opt_verbose,
|
||||
nocore => $opt_skip_core,
|
||||
host => undef,
|
||||
shutdown => sub { mysqld_stop($mysqld) },
|
||||
);
|
||||
@ -4344,12 +4414,6 @@ sub server_need_restart {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ( $opt_embedded_server )
|
||||
{
|
||||
mtr_verbose_restart($server, "no start or restart for embedded server");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ( $tinfo->{'force_restart'} ) {
|
||||
mtr_verbose_restart($server, "forced in .opt file");
|
||||
return 1;
|
||||
@ -4576,7 +4640,7 @@ sub start_servers($) {
|
||||
# Already started
|
||||
|
||||
# Write start of testcase to log file
|
||||
mark_log($mysqld->value('log-error'), $tinfo);
|
||||
mark_log($mysqld->value('#log-error'), $tinfo);
|
||||
|
||||
next;
|
||||
}
|
||||
@ -4637,7 +4701,7 @@ sub start_servers($) {
|
||||
mkpath($tmpdir) unless -d $tmpdir;
|
||||
|
||||
# Write start of testcase to log file
|
||||
mark_log($mysqld->value('log-error'), $tinfo);
|
||||
mark_log($mysqld->value('#log-error'), $tinfo);
|
||||
|
||||
# Run <tname>-master.sh
|
||||
if ($mysqld->option('#!run-master-sh') and
|
||||
@ -4688,7 +4752,7 @@ sub start_servers($) {
|
||||
$tinfo->{comment}=
|
||||
"Failed to start ".$mysqld->name();
|
||||
|
||||
my $logfile= $mysqld->value('log-error');
|
||||
my $logfile= $mysqld->value('#log-error');
|
||||
if ( defined $logfile and -f $logfile )
|
||||
{
|
||||
$tinfo->{logfile}= mtr_fromfile($logfile);
|
||||
@ -4732,6 +4796,7 @@ sub start_check_testcase ($$$) {
|
||||
|
||||
mtr_add_arg($args, "--result-file=%s", "$opt_vardir/tmp/$name.result");
|
||||
mtr_add_arg($args, "--test-file=%s", "include/check-testcase.test");
|
||||
mtr_add_arg($args, "--verbose");
|
||||
|
||||
if ( $mode eq "before" )
|
||||
{
|
||||
@ -4911,8 +4976,7 @@ sub start_mysqltest ($) {
|
||||
elsif ( $opt_client_debugger )
|
||||
{
|
||||
debugger_arguments(\$args, \$exe, "client");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
my $proc= My::SafeProcess->new
|
||||
(
|
||||
@ -5314,6 +5378,8 @@ Misc options
|
||||
sleep=SECONDS Passed to mysqltest, will be used as fixed sleep time
|
||||
debug-sync-timeout=NUM Set default timeout for WAIT_FOR debug sync
|
||||
actions. Disable facility with NUM=0.
|
||||
gcov Collect coverage information after the test.
|
||||
The result is a gcov file per source and header file.
|
||||
|
||||
HERE
|
||||
exit(1);
|
||||
|
Reference in New Issue
Block a user