Commit 275e7ac4 authored by kent@mysql.com's avatar kent@mysql.com

Merge

parents 0903941d e32054e4
...@@ -155,11 +155,24 @@ sub collect_test_cases ($) { ...@@ -155,11 +155,24 @@ sub collect_test_cases ($) {
if ( $::opt_reorder ) if ( $::opt_reorder )
{ {
@$cases = sort { @$cases = sort {
if ( $a->{'master_restart'} and $b->{'master_restart'} or if ( ! $a->{'master_restart'} and ! $b->{'master_restart'} )
! $a->{'master_restart'} and ! $b->{'master_restart'} )
{ {
return $a->{'name'} cmp $b->{'name'}; return $a->{'name'} cmp $b->{'name'};
} }
if ( $a->{'master_restart'} and $b->{'master_restart'} )
{
my $cmp= mtr_cmp_opts($a->{'master_opt'}, $b->{'master_opt'});
if ( $cmp == 0 )
{
return $a->{'name'} cmp $b->{'name'};
}
else
{
return $cmp;
}
}
if ( $a->{'master_restart'} ) if ( $a->{'master_restart'} )
{ {
return 1; # Is greater return 1; # Is greater
......
...@@ -13,6 +13,9 @@ sub mtr_add_arg ($$@); ...@@ -13,6 +13,9 @@ sub mtr_add_arg ($$@);
sub mtr_path_exists(@); sub mtr_path_exists(@);
sub mtr_script_exists(@); sub mtr_script_exists(@);
sub mtr_exe_exists(@); sub mtr_exe_exists(@);
sub mtr_copy_dir($$);
sub mtr_same_opts($$);
sub mtr_cmp_opts($$);
############################################################################## ##############################################################################
# #
...@@ -108,5 +111,44 @@ sub mtr_exe_exists (@) { ...@@ -108,5 +111,44 @@ sub mtr_exe_exists (@) {
} }
} }
sub mtr_copy_dir($$) {
my $srcdir= shift;
my $dstdir= shift;
# Create destination directory
mkpath($dstdir);
find(\&mtr_copy_one_file, $dstdir);
}
sub mtr_copy_one_file {
print $File::Find::name, "\n";
}
sub mtr_same_opts ($$) {
my $l1= shift;
my $l2= shift;
return mtr_cmp_opts($l1,$l2) == 0;
}
sub mtr_cmp_opts ($$) {
my $l1= shift;
my $l2= shift;
my @l1= @$l1;
my @l2= @$l2;
return -1 if @l1 < @l2;
return 1 if @l1 > @l2;
while ( @l1 ) # Same length
{
my $e1= shift @l1;
my $e2= shift @l2;
my $cmp= ($e1 cmp $e2);
return $cmp if $cmp != 0;
}
return 0; # They are the same
}
1; 1;
...@@ -464,9 +464,9 @@ sub initial_setup () { ...@@ -464,9 +464,9 @@ sub initial_setup () {
if ( $glob_cygwin_perl ) if ( $glob_cygwin_perl )
{ {
# Windows programs like 'mysqld' needs Windows paths # Windows programs like 'mysqld' needs Windows paths
$glob_mysql_test_dir= `cygpath -m $glob_mysql_test_dir`; $glob_mysql_test_dir= `cygpath -m "$glob_mysql_test_dir"`;
my $shell= $ENV{'SHELL'} || "/bin/bash"; my $shell= $ENV{'SHELL'} || "/bin/bash";
$glob_cygwin_shell= `cygpath -w $shell`; # The Windows path c:\... $glob_cygwin_shell= `cygpath -w "$shell"`; # The Windows path c:\...
chomp($glob_mysql_test_dir); chomp($glob_mysql_test_dir);
chomp($glob_cygwin_shell); chomp($glob_cygwin_shell);
} }
...@@ -973,7 +973,8 @@ sub executable_setup () { ...@@ -973,7 +973,8 @@ sub executable_setup () {
$exe_mysqld= mtr_exe_exists ("$path_client_bindir/mysqld-max", $exe_mysqld= mtr_exe_exists ("$path_client_bindir/mysqld-max",
"$path_client_bindir/mysqld-nt", "$path_client_bindir/mysqld-nt",
"$path_client_bindir/mysqld", "$path_client_bindir/mysqld",
"$path_client_bindir/mysqld-debug",); "$path_client_bindir/mysqld-debug",
"$path_client_bindir/mysqld-max");
$path_language= mtr_path_exists("$glob_basedir/share/english/"); $path_language= mtr_path_exists("$glob_basedir/share/english/");
$path_charsetsdir= mtr_path_exists("$glob_basedir/share/charsets"); $path_charsetsdir= mtr_path_exists("$glob_basedir/share/charsets");
$exe_my_print_defaults= $exe_my_print_defaults=
...@@ -1837,13 +1838,37 @@ sub run_testcase ($) { ...@@ -1837,13 +1838,37 @@ sub run_testcase ($) {
if ( ! $glob_use_running_server and ! $glob_use_embedded_server ) if ( ! $glob_use_running_server and ! $glob_use_embedded_server )
{ {
if ( $tinfo->{'master_restart'} or # We try to find out if we are to restart the server
$master->[0]->{'running_master_is_special'} or my $do_restart= 0; # Assumes we don't have to
# Stop if cluster is started but test cases does not need cluster
( $opt_with_ndbcluster && $tinfo->{'ndb_test'} != $using_ndbcluster_master ) ) if ( $tinfo->{'master_sh'} )
{
$do_restart= 1; # Always restart if script to run
}
elsif ( $opt_with_ndbcluster and $tinfo->{'ndb_test'} != $using_ndbcluster_master )
{
$do_restart= 1; # Restart without cluster
}
elsif ( $master->[0]->{'running_master_is_special'} and
$master->[0]->{'running_master_is_special'}->{'timezone'} eq
$tinfo->{'timezone'} and
mtr_same_opts($master->[0]->{'running_master_is_special'}->{'master_opt'},
$tinfo->{'master_opt'}) )
{
# If running master was started with special settings, but
# the current test requuires the same ones, we *don't* restart.
$do_restart= 0;
}
elsif ( $tinfo->{'master_restart'} or
$master->[0]->{'running_master_is_special'} )
{
$do_restart= 1;
}
if ( $do_restart )
{ {
stop_masters(); stop_masters();
$master->[0]->{'running_master_is_special'}= 0; # Forget why we stopped delete $master->[0]->{'running_master_is_special'}; # Forget history
} }
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
...@@ -1930,7 +1955,8 @@ sub run_testcase ($) { ...@@ -1930,7 +1955,8 @@ sub run_testcase ($) {
if ( $tinfo->{'master_restart'} ) if ( $tinfo->{'master_restart'} )
{ {
$master->[0]->{'running_master_is_special'}= 1; # Save this test case information, so next can examine it
$master->[0]->{'running_master_is_special'}= $tinfo;
} }
} }
elsif ( ! $opt_skip_im and $tinfo->{'component_id'} eq 'im' ) elsif ( ! $opt_skip_im and $tinfo->{'component_id'} eq 'im' )
......
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