mirror of
https://github.com/MariaDB/server.git
synced 2025-09-03 20:43:11 +03:00
Merge shellback.(none):/home/msvensson/mysql/mysql-5.0-maint
into shellback.(none):/home/msvensson/mysql/mysql-5.1-maint
This commit is contained in:
@@ -59,7 +59,9 @@ sub collect_test_cases ($) {
|
||||
|
||||
if ( @::opt_cases )
|
||||
{
|
||||
foreach my $tname ( @::opt_cases ) { # Run in specified order, no sort
|
||||
foreach my $tname ( @::opt_cases )
|
||||
{
|
||||
# Run in specified order, no sort
|
||||
my $elem= undef;
|
||||
my $component_id= undef;
|
||||
|
||||
@@ -85,7 +87,7 @@ sub collect_test_cases ($) {
|
||||
|
||||
# If target component is known, check that the specified test case
|
||||
# exists.
|
||||
#
|
||||
#
|
||||
# Otherwise, try to guess the target component.
|
||||
|
||||
if ( $component_id )
|
||||
@@ -127,7 +129,8 @@ sub collect_test_cases ($) {
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach my $elem ( sort readdir(TESTDIR) ) {
|
||||
foreach my $elem ( sort readdir(TESTDIR) )
|
||||
{
|
||||
my $component_id= undef;
|
||||
my $tname= undef;
|
||||
|
||||
@@ -144,7 +147,9 @@ sub collect_test_cases ($) {
|
||||
next;
|
||||
}
|
||||
|
||||
next if $::opt_do_test and ! defined mtr_match_prefix($elem,$::opt_do_test);
|
||||
# Skip tests that does not match the --do-test= filter
|
||||
next if $::opt_do_test and
|
||||
! defined mtr_match_prefix($elem,$::opt_do_test);
|
||||
|
||||
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled,
|
||||
$component_id);
|
||||
@@ -152,7 +157,7 @@ sub collect_test_cases ($) {
|
||||
closedir TESTDIR;
|
||||
}
|
||||
|
||||
# Reorder the test cases in an order that wil make them faster to run
|
||||
# Reorder the test cases in an order that will make them faster to run
|
||||
if ( $::opt_reorder )
|
||||
{
|
||||
|
||||
@@ -306,40 +311,6 @@ sub collect_one_test_case($$$$$$$) {
|
||||
$tinfo->{'slave_num'}= 1;
|
||||
}
|
||||
|
||||
if ( $::opt_with_ndbcluster or defined mtr_match_substring($tname,"ndb") )
|
||||
{
|
||||
# This is an ndb test or all tests should be run with ndb cluster started
|
||||
$tinfo->{'ndb_test'}= 1;
|
||||
if ( ! $::opt_ndbcluster_supported )
|
||||
{
|
||||
# Ndb is not supported, skip them
|
||||
$tinfo->{'skip'}= 1;
|
||||
$tinfo->{'comment'}= "No ndbcluster support";
|
||||
return;
|
||||
}
|
||||
elsif ( $::opt_skip_ndbcluster )
|
||||
{
|
||||
# All ndb test's should be skipped
|
||||
$tinfo->{'skip'}= 1;
|
||||
$tinfo->{'comment'}= "No ndbcluster tests(--skip-ndbcluster)";
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
# This is not a ndb test
|
||||
$tinfo->{'ndb_test'}= 0;
|
||||
if ( $::opt_with_ndbcluster_only )
|
||||
{
|
||||
# Only the ndb test should be run, all other should be skipped
|
||||
$tinfo->{'skip'}= 1;
|
||||
$tinfo->{'comment'}= "Only ndbcluster tests(--with-ndbcluster-only)";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
# FIXME what about embedded_server + ndbcluster, skip ?!
|
||||
|
||||
my $master_opt_file= "$testdir/$tname-master.opt";
|
||||
my $slave_opt_file= "$testdir/$tname-slave.opt";
|
||||
my $slave_mi_file= "$testdir/$tname.slave-mi";
|
||||
@@ -550,6 +521,37 @@ sub collect_one_test_case($$$$$$$) {
|
||||
$tinfo->{'comment'}= "Test need debug binaries";
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $tinfo->{'ndb_test'} )
|
||||
{
|
||||
# This is a NDB test
|
||||
if ( ! $::glob_ndbcluster_supported )
|
||||
{
|
||||
# Ndb is not supported, skip it
|
||||
$tinfo->{'skip'}= 1;
|
||||
$tinfo->{'comment'}= "No ndbcluster support";
|
||||
return;
|
||||
}
|
||||
elsif ( $::opt_skip_ndbcluster )
|
||||
{
|
||||
# All ndb test's should be skipped
|
||||
$tinfo->{'skip'}= 1;
|
||||
$tinfo->{'comment'}= "No ndbcluster tests(--skip-ndbcluster)";
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
# This is not a ndb test
|
||||
if ( $::opt_with_ndbcluster_only )
|
||||
{
|
||||
# Only the ndb test should be run, all other should be skipped
|
||||
$tinfo->{'skip'}= 1;
|
||||
$tinfo->{'comment'}= "Only ndbcluster tests(--with-ndbcluster-only)";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -563,6 +565,7 @@ our @tags=
|
||||
["include/have_binlog_format_statement.inc", "binlog_format", "stmt"],
|
||||
["include/big_test.inc", "big_test", 1],
|
||||
["include/have_debug.inc", "need_debug", 1],
|
||||
["include/have_ndb.inc", "ndb_test", 1],
|
||||
["include/have_ndb_extra.inc", "ndb_extra", 1],
|
||||
["require_manager", "require_manager", 1],
|
||||
);
|
||||
|
@@ -8,7 +8,6 @@ use Socket;
|
||||
use Errno;
|
||||
use strict;
|
||||
|
||||
#use POSIX ":sys_wait_h";
|
||||
use POSIX 'WNOHANG';
|
||||
|
||||
sub mtr_run ($$$$$$;$);
|
||||
@@ -1088,7 +1087,6 @@ sub mtr_kill_processes ($) {
|
||||
|
||||
sub mtr_exit ($) {
|
||||
my $code= shift;
|
||||
# cluck("Called mtr_exit()");
|
||||
mtr_timer_stop_all($::glob_timers);
|
||||
local $SIG{HUP} = 'IGNORE';
|
||||
# ToDo: Signalling -$$ will only work if we are the process group
|
||||
|
@@ -130,16 +130,11 @@ sub mtr_report_test_failed ($) {
|
||||
my $tinfo= shift;
|
||||
|
||||
$tinfo->{'result'}= 'MTR_RES_FAILED';
|
||||
if ( $tinfo->{'timeout'} )
|
||||
if ( defined $tinfo->{'timeout'} )
|
||||
{
|
||||
print "[ fail ] timeout\n";
|
||||
return;
|
||||
}
|
||||
elsif ( $tinfo->{'ndb_test'} and $::cluster->[0]->{'installed_ok'} eq "NO")
|
||||
{
|
||||
print "[ fail ] ndbcluster start failure\n";
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
print "[ fail ]\n";
|
||||
@@ -208,8 +203,9 @@ sub mtr_report_stats ($) {
|
||||
else
|
||||
{
|
||||
my $ratio= $tot_passed * 100 / $tot_tests;
|
||||
printf "Failed $tot_failed/$tot_tests tests, " .
|
||||
"%.2f\% were successful.\n\n", $ratio;
|
||||
print "Failed $tot_failed/$tot_tests tests, ";
|
||||
printf("%.2f", $ratio);
|
||||
print "\% were successful.\n\n";
|
||||
print
|
||||
"The log files in var/log may give you some hint\n",
|
||||
"of what went wrong.\n",
|
||||
|
@@ -4,23 +4,19 @@
|
||||
# and is part of the translation of the Bourne shell script with the
|
||||
# same name.
|
||||
|
||||
use Carp qw(cluck);
|
||||
use Socket;
|
||||
use Errno;
|
||||
use strict;
|
||||
|
||||
#use POSIX ":sys_wait_h";
|
||||
use POSIX 'WNOHANG';
|
||||
|
||||
sub mtr_init_timers ();
|
||||
sub mtr_timer_start($$$);
|
||||
sub mtr_timer_stop($$);
|
||||
sub mtr_timer_stop_all($);
|
||||
sub mtr_timer_waitpid($$$);
|
||||
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Initiate a structure shared by all timers
|
||||
# Initiate the structure shared by all timers
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
@@ -35,17 +31,19 @@ sub mtr_init_timers () {
|
||||
# Start, stop and poll a timer
|
||||
#
|
||||
# As alarm() isn't portable to Windows, we use separate processes to
|
||||
# implement timers. That is why there is a mtr_timer_waitpid(), as this
|
||||
# is where we catch a timeout.
|
||||
# implement timers.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
sub mtr_timer_start($$$) {
|
||||
my ($timers,$name,$duration)= @_;
|
||||
|
||||
mtr_verbose("mtr_timer_start: $name, $duration");
|
||||
|
||||
if ( exists $timers->{'timers'}->{$name} )
|
||||
{
|
||||
# We have an old running timer, kill it
|
||||
mtr_verbose("There is an old timer running");
|
||||
mtr_timer_stop($timers,$name);
|
||||
}
|
||||
|
||||
@@ -57,7 +55,7 @@ sub mtr_timer_start($$$) {
|
||||
{
|
||||
if ( $! == $!{EAGAIN} ) # See "perldoc Errno"
|
||||
{
|
||||
mtr_debug("Got EAGAIN from fork(), sleep 1 second and redo");
|
||||
mtr_warning("Got EAGAIN from fork(), sleep 1 second and redo");
|
||||
sleep(1);
|
||||
redo FORK;
|
||||
}
|
||||
@@ -70,6 +68,7 @@ sub mtr_timer_start($$$) {
|
||||
if ( $tpid )
|
||||
{
|
||||
# Parent, record the information
|
||||
mtr_verbose("timer parent, record info($name, $tpid, $duration)");
|
||||
$timers->{'timers'}->{$name}->{'pid'}= $tpid;
|
||||
$timers->{'timers'}->{$name}->{'duration'}= $duration;
|
||||
$timers->{'pids'}->{$tpid}= $name;
|
||||
@@ -85,6 +84,7 @@ sub mtr_timer_start($$$) {
|
||||
$SIG{INT}= 'DEFAULT';
|
||||
|
||||
$0= "mtr_timer(timers,$name,$duration)";
|
||||
mtr_verbose("timer child $name, sleep $duration");
|
||||
sleep($duration);
|
||||
exit(0);
|
||||
}
|
||||
@@ -95,9 +95,12 @@ sub mtr_timer_start($$$) {
|
||||
sub mtr_timer_stop ($$) {
|
||||
my ($timers,$name)= @_;
|
||||
|
||||
mtr_verbose("mtr_timer_stop: $name");
|
||||
|
||||
if ( exists $timers->{'timers'}->{$name} )
|
||||
{
|
||||
my $tpid= $timers->{'timers'}->{$name}->{'pid'};
|
||||
mtr_verbose("Stopping timer with pid $tpid");
|
||||
|
||||
# FIXME as Cygwin reuses pids fast, maybe check that is
|
||||
# the expected process somehow?!
|
||||
@@ -114,7 +117,7 @@ sub mtr_timer_stop ($$) {
|
||||
}
|
||||
else
|
||||
{
|
||||
mtr_debug("Asked to stop timer \"$name\" not started");
|
||||
mtr_error("Asked to stop timer \"$name\" not started");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -136,10 +139,8 @@ sub mtr_timer_timeout ($$) {
|
||||
|
||||
return "" unless exists $timers->{'pids'}->{$pid};
|
||||
|
||||
# We got a timeout
|
||||
my $name= $timers->{'pids'}->{$pid};
|
||||
mtr_timer_stop($timers, $timers->{'timers'}->{$name});
|
||||
return $name;
|
||||
# We got a timeout, return the name ot the timer
|
||||
return $timers->{'pids'}->{$pid};
|
||||
}
|
||||
|
||||
1;
|
||||
|
@@ -65,6 +65,7 @@ use IO::Socket;
|
||||
use IO::Socket::INET;
|
||||
use Data::Dumper;
|
||||
use strict;
|
||||
use warnings;
|
||||
use diagnostics;
|
||||
|
||||
our $glob_win32_perl= ($^O eq "MSWin32"); # ActiveState Win32 Perl
|
||||
@@ -277,7 +278,7 @@ our $opt_skip_ndbcluster= 0;
|
||||
our $opt_skip_ndbcluster_slave= 0;
|
||||
our $opt_with_ndbcluster= 0;
|
||||
our $opt_with_ndbcluster_only= 0;
|
||||
our $opt_ndbcluster_supported= 0;
|
||||
our $glob_ndbcluster_supported= 0;
|
||||
our $opt_ndb_extra_test= 0;
|
||||
our $opt_skip_master_binlog= 0;
|
||||
our $opt_skip_slave_binlog= 0;
|
||||
@@ -391,6 +392,8 @@ sub main () {
|
||||
my ($need_ndbcluster,$need_im);
|
||||
foreach my $test (@$tests)
|
||||
{
|
||||
next if $test->{skip};
|
||||
|
||||
$need_ndbcluster||= $test->{ndb_test};
|
||||
$need_im||= $test->{component_id} eq 'im';
|
||||
|
||||
@@ -570,10 +573,10 @@ sub command_line_setup () {
|
||||
'compress' => \$opt_compress,
|
||||
'bench' => \$opt_bench,
|
||||
'small-bench' => \$opt_small_bench,
|
||||
'with-ndbcluster' => \$opt_with_ndbcluster,
|
||||
|
||||
# Control what test suites or cases to run
|
||||
'force' => \$opt_force,
|
||||
'with-ndbcluster' => \$opt_with_ndbcluster,
|
||||
'with-ndbcluster-only' => \$opt_with_ndbcluster_only,
|
||||
'skip-ndbcluster|skip-ndb' => \$opt_skip_ndbcluster,
|
||||
'skip-ndbcluster-slave|skip-ndb-slave'
|
||||
@@ -844,9 +847,9 @@ sub command_line_setup () {
|
||||
# --------------------------------------------------------------------------
|
||||
# Ndb cluster flags
|
||||
# --------------------------------------------------------------------------
|
||||
if ( $opt_with_ndbcluster and $opt_skip_ndbcluster)
|
||||
if ( $opt_with_ndbcluster and !$opt_bench)
|
||||
{
|
||||
mtr_error("Can't specify both --with-ndbcluster and --skip-ndbcluster");
|
||||
mtr_error("Can only use --with-ndbcluster togheter with --bench");
|
||||
}
|
||||
|
||||
if ( $opt_ndbconnectstring )
|
||||
@@ -1483,7 +1486,7 @@ sub environment_setup () {
|
||||
# --------------------------------------------------------------------------
|
||||
# Add the path where libndbclient can be found
|
||||
# --------------------------------------------------------------------------
|
||||
if ( $opt_ndbcluster_supported )
|
||||
if ( $glob_ndbcluster_supported )
|
||||
{
|
||||
push(@ld_library_paths, "$glob_basedir/storage/ndb/src/.libs");
|
||||
}
|
||||
@@ -1868,6 +1871,8 @@ sub cleanup_stale_files () {
|
||||
rmtree(readlink($opt_vardir));
|
||||
# Remove the entire "var" dir
|
||||
rmtree("$opt_vardir/");
|
||||
# Remove the "var" symlink
|
||||
unlink($opt_vardir);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2040,7 +2045,7 @@ sub check_ndbcluster_support ($) {
|
||||
$opt_skip_ndbcluster_slave= 1;
|
||||
return;
|
||||
}
|
||||
$opt_ndbcluster_supported= 1;
|
||||
$glob_ndbcluster_supported= 1;
|
||||
mtr_report("Using ndbcluster when necessary, mysqld supports it");
|
||||
|
||||
if ( $mysql_version_id < 50100 )
|
||||
@@ -2057,11 +2062,6 @@ sub check_ndbcluster_support ($) {
|
||||
sub ndbcluster_start_install ($) {
|
||||
my $cluster= shift;
|
||||
|
||||
if ( $opt_skip_ndbcluster or $glob_use_running_ndbcluster )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
mtr_report("Installing $cluster->{'name'} Cluster");
|
||||
|
||||
mkdir($cluster->{'data_dir'});
|
||||
@@ -2475,11 +2475,24 @@ sub mysql_install_db () {
|
||||
|
||||
my $cluster_started_ok= 1; # Assume it can be started
|
||||
|
||||
if (ndbcluster_start_install($clusters->[0]) ||
|
||||
($max_slave_num && !$opt_skip_ndbcluster_slave &&
|
||||
ndbcluster_start_install($clusters->[1])))
|
||||
if ($opt_skip_ndbcluster || $glob_use_running_ndbcluster)
|
||||
{
|
||||
mtr_warning("Failed to start install of cluster");
|
||||
# Don't install master cluster
|
||||
}
|
||||
elsif (ndbcluster_start_install($clusters->[0]))
|
||||
{
|
||||
mtr_warning("Failed to start install of $clusters->[0]->{name}");
|
||||
$cluster_started_ok= 0;
|
||||
}
|
||||
|
||||
if ($max_slave_num == 0 ||
|
||||
$opt_skip_ndbcluster_slave || $glob_use_running_ndbcluster_slave)
|
||||
{
|
||||
# Don't install slave cluster
|
||||
}
|
||||
elsif (ndbcluster_start_install($clusters->[1]))
|
||||
{
|
||||
mtr_warning("Failed to start install of $clusters->[1]->{name}");
|
||||
$cluster_started_ok= 0;
|
||||
}
|
||||
|
||||
@@ -2512,9 +2525,6 @@ sub mysql_install_db () {
|
||||
}
|
||||
}
|
||||
|
||||
# Stop clusters...
|
||||
stop_all_servers();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2753,10 +2763,9 @@ sub run_testcase_check_skip_test($)
|
||||
# If test needs this cluster, check it was installed ok
|
||||
if ( !$cluster->{'installed_ok'} )
|
||||
{
|
||||
mtr_tofile($path_timefile,
|
||||
"Test marked as failed because $cluster->{'name'} " .
|
||||
"was not installed ok!");
|
||||
mtr_report_test_name($tinfo);
|
||||
$tinfo->{comment}=
|
||||
"Cluster $cluster->{'name'} was not installed ok";
|
||||
mtr_report_test_failed($tinfo);
|
||||
return 1;
|
||||
}
|
||||
@@ -2879,10 +2888,8 @@ sub run_testcase ($) {
|
||||
# Can't restart a running server that may be in use
|
||||
if ( $glob_use_running_server )
|
||||
{
|
||||
$tinfo->{'skip'}= 1;
|
||||
$tinfo->{'comment'}= "Can't restart a running server";
|
||||
|
||||
mtr_report_test_name($tinfo);
|
||||
$tinfo->{comment}= "Can't restart a running server";
|
||||
mtr_report_test_skipped($tinfo);
|
||||
return;
|
||||
}
|
||||
@@ -2906,6 +2913,7 @@ sub run_testcase ($) {
|
||||
# ----------------------------------------------------------------------
|
||||
if ( $opt_start_and_exit or $opt_start_dirty )
|
||||
{
|
||||
mtr_timer_stop_all($glob_timers);
|
||||
mtr_report("\nServers started, exiting");
|
||||
exit(0);
|
||||
}
|
||||
@@ -2932,16 +2940,16 @@ sub run_testcase ($) {
|
||||
$tinfo->{'timeout'}= 1; # Mark as timeout
|
||||
report_failure_and_restart($tinfo);
|
||||
}
|
||||
elsif ( $res == 1 )
|
||||
{
|
||||
# Test case failure reported by mysqltest
|
||||
report_failure_and_restart($tinfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
# Test case failed, if in control mysqltest returns 1
|
||||
if ( $res != 1 )
|
||||
{
|
||||
mtr_tofile($path_timefile,
|
||||
"mysqltest returned unexpected code $res, " .
|
||||
"it has probably crashed");
|
||||
}
|
||||
|
||||
# mysqltest failed, probably crashed
|
||||
$tinfo->{comment}=
|
||||
"mysqltest returned unexpected code $res, it has probably crashed";
|
||||
report_failure_and_restart($tinfo);
|
||||
}
|
||||
|
||||
@@ -3593,14 +3601,14 @@ sub run_testcase_need_master_restart($)
|
||||
mtr_verbose("Restart master: Restart forced with --force-restart");
|
||||
}
|
||||
elsif ( ! $opt_skip_ndbcluster and
|
||||
$tinfo->{'ndb_test'} == 0 and
|
||||
!$tinfo->{'ndb_test'} and
|
||||
$clusters->[0]->{'pid'} != 0 )
|
||||
{
|
||||
$do_restart= 1; # Restart without cluster
|
||||
mtr_verbose("Restart master: Test does not need cluster");
|
||||
}
|
||||
elsif ( ! $opt_skip_ndbcluster and
|
||||
$tinfo->{'ndb_test'} == 1 and
|
||||
$tinfo->{'ndb_test'} and
|
||||
$clusters->[0]->{'pid'} == 0 )
|
||||
{
|
||||
$do_restart= 1; # Restart with cluster
|
||||
@@ -4456,6 +4464,7 @@ Options to control what engine/variation to run
|
||||
skip-ssl Dont start server with support for ssl connections
|
||||
bench Run the benchmark suite
|
||||
small-bench Run the benchmarks with --small-tests --small-tables
|
||||
with-ndbcluster Use cluster as default table type for benchmark
|
||||
|
||||
Options to control directories to use
|
||||
benchdir=DIR The directory where the benchmark suite is stored
|
||||
@@ -4472,7 +4481,6 @@ Options to control directories to use
|
||||
Options to control what test suites or cases to run
|
||||
|
||||
force Continue to run the suite after failure
|
||||
with-ndbcluster Use cluster in all tests
|
||||
with-ndbcluster-only Run only tests that include "ndb" in the filename
|
||||
skip-ndb[cluster] Skip all tests that need cluster
|
||||
skip-ndb[cluster]-slave Skip all tests that need a slave cluster
|
||||
|
Reference in New Issue
Block a user