mirror of
https://github.com/MariaDB/server.git
synced 2025-07-02 14:22:51 +03:00
mysql-test-run.pl:
Added --skip-im option handling Don't terminate script if IM fails to create PID file mtr_cases.pl: Added --skip-im option handling mtr_process.pl: Kill left over 'mysqld' processes started by IM mysql-test/lib/mtr_process.pl: Kill left over 'mysqld' processes started by IM mysql-test/lib/mtr_cases.pl: Added --skip-im option handling mysql-test/mysql-test-run.pl: Added --skip-im option handling Don't terminate script if IM fails to create PID file
This commit is contained in:
@ -68,7 +68,7 @@ sub collect_test_cases ($) {
|
|||||||
#
|
#
|
||||||
# Otherwise, try to guess the target component.
|
# Otherwise, try to guess the target component.
|
||||||
|
|
||||||
if ( defined $component_id )
|
if ( $component_id )
|
||||||
{
|
{
|
||||||
if ( ! -f "$testdir/$elem")
|
if ( ! -f "$testdir/$elem")
|
||||||
{
|
{
|
||||||
@ -80,11 +80,11 @@ sub collect_test_cases ($) {
|
|||||||
my $mysqld_test_exists = -f "$testdir/$tname.test";
|
my $mysqld_test_exists = -f "$testdir/$tname.test";
|
||||||
my $im_test_exists = -f "$testdir/$tname.imtest";
|
my $im_test_exists = -f "$testdir/$tname.imtest";
|
||||||
|
|
||||||
if ( $mysqld_test_exists && $im_test_exists )
|
if ( $mysqld_test_exists and $im_test_exists )
|
||||||
{
|
{
|
||||||
mtr_error("Ambiguos test case name ($tname)");
|
mtr_error("Ambiguos test case name ($tname)");
|
||||||
}
|
}
|
||||||
elsif ( ! $mysqld_test_exists && !$im_test_exists )
|
elsif ( ! $mysqld_test_exists and ! $im_test_exists )
|
||||||
{
|
{
|
||||||
mtr_error("Test case $tname is not found");
|
mtr_error("Test case $tname is not found");
|
||||||
}
|
}
|
||||||
@ -405,7 +405,7 @@ sub collect_one_test_case($$$$$$$) {
|
|||||||
"Instance Manager tests are not run with --ps-protocol. " .
|
"Instance Manager tests are not run with --ps-protocol. " .
|
||||||
"Test case '$tname' is skipped.");
|
"Test case '$tname' is skipped.");
|
||||||
}
|
}
|
||||||
elsif ( !$::exe_im )
|
elsif ( $::opt_skip_im )
|
||||||
{
|
{
|
||||||
$tinfo->{'skip'}= 1;
|
$tinfo->{'skip'}= 1;
|
||||||
|
|
||||||
|
@ -360,9 +360,20 @@ sub mtr_kill_leftovers () {
|
|||||||
|
|
||||||
# First, kill all masters and slaves that would conflict with
|
# First, kill all masters and slaves that would conflict with
|
||||||
# this run. Make sure to remove the PID file, if any.
|
# this run. Make sure to remove the PID file, if any.
|
||||||
|
# FIXME kill IM manager first, else it will restart the servers, how?!
|
||||||
|
|
||||||
my @args;
|
my @args;
|
||||||
|
|
||||||
|
for ( my $idx; $idx < 2; $idx++ )
|
||||||
|
{
|
||||||
|
push(@args,{
|
||||||
|
pid => 0, # We don't know the PID
|
||||||
|
pidfile => $::instance_manager->{'instances'}->[$idx]->{'path_pid'},
|
||||||
|
sockfile => $::instance_manager->{'instances'}->[$idx]->{'path_sock'},
|
||||||
|
port => $::instance_manager->{'instances'}->[$idx]->{'port'},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
for ( my $idx; $idx < 2; $idx++ )
|
for ( my $idx; $idx < 2; $idx++ )
|
||||||
{
|
{
|
||||||
push(@args,{
|
push(@args,{
|
||||||
|
@ -233,6 +233,7 @@ our $opt_result_ext;
|
|||||||
our $opt_skip;
|
our $opt_skip;
|
||||||
our $opt_skip_rpl;
|
our $opt_skip_rpl;
|
||||||
our $opt_skip_test;
|
our $opt_skip_test;
|
||||||
|
our $opt_skip_im;
|
||||||
|
|
||||||
our $opt_sleep;
|
our $opt_sleep;
|
||||||
our $opt_ps_protocol;
|
our $opt_ps_protocol;
|
||||||
@ -490,6 +491,7 @@ sub command_line_setup () {
|
|||||||
'do-test=s' => \$opt_do_test,
|
'do-test=s' => \$opt_do_test,
|
||||||
'suite=s' => \$opt_suite,
|
'suite=s' => \$opt_suite,
|
||||||
'skip-rpl' => \$opt_skip_rpl,
|
'skip-rpl' => \$opt_skip_rpl,
|
||||||
|
'skip-im' => \$opt_skip_im,
|
||||||
'skip-test=s' => \$opt_skip_test,
|
'skip-test=s' => \$opt_skip_test,
|
||||||
|
|
||||||
# Specify ports
|
# Specify ports
|
||||||
@ -1118,7 +1120,7 @@ sub kill_and_cleanup () {
|
|||||||
|
|
||||||
foreach my $instance (@{$instance_manager->{'instances'}})
|
foreach my $instance (@{$instance_manager->{'instances'}})
|
||||||
{
|
{
|
||||||
push (@data_dir_lst, $instance->{'path_datadir'});
|
push(@data_dir_lst, $instance->{'path_datadir'});
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach my $data_dir (@data_dir_lst)
|
foreach my $data_dir (@data_dir_lst)
|
||||||
@ -1364,7 +1366,7 @@ sub mysql_install_db () {
|
|||||||
install_db('slave', $slave->[1]->{'path_myddir'});
|
install_db('slave', $slave->[1]->{'path_myddir'});
|
||||||
install_db('slave', $slave->[2]->{'path_myddir'});
|
install_db('slave', $slave->[2]->{'path_myddir'});
|
||||||
|
|
||||||
if ( defined $exe_im)
|
if ( ! $opt_skip_im )
|
||||||
{
|
{
|
||||||
im_prepare_env($instance_manager);
|
im_prepare_env($instance_manager);
|
||||||
}
|
}
|
||||||
@ -1513,12 +1515,7 @@ skip-ndbcluster
|
|||||||
EOF
|
EOF
|
||||||
;
|
;
|
||||||
|
|
||||||
if ( exists $instance->{nonguarded} and
|
print OUT "nonguarded\n" if $instance->{'nonguarded'};
|
||||||
defined $instance->{nonguarded} )
|
|
||||||
{
|
|
||||||
print OUT "nonguarded\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
print OUT "\n";
|
print OUT "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1678,7 +1675,7 @@ sub run_testcase ($) {
|
|||||||
$master->[0]->{'running_master_is_special'}= 1;
|
$master->[0]->{'running_master_is_special'}= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ( $tinfo->{'component_id'} eq 'im')
|
elsif ( ! $opt_skip_im and $tinfo->{'component_id'} eq 'im' )
|
||||||
{
|
{
|
||||||
# We have to create defaults file every time, in order to ensure that it
|
# We have to create defaults file every time, in order to ensure that it
|
||||||
# will be the same for each test. The problem is that test can change the
|
# will be the same for each test. The problem is that test can change the
|
||||||
@ -1776,7 +1773,8 @@ sub run_testcase ($) {
|
|||||||
# Stop Instance Manager if we are processing an IM-test case.
|
# Stop Instance Manager if we are processing an IM-test case.
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
if ( ! $glob_use_running_server and $tinfo->{'component_id'} eq 'im' )
|
if ( ! $glob_use_running_server and $tinfo->{'component_id'} eq 'im' and
|
||||||
|
$instance_manager->{'pid'} )
|
||||||
{
|
{
|
||||||
im_stop($instance_manager);
|
im_stop($instance_manager);
|
||||||
}
|
}
|
||||||
@ -2195,7 +2193,7 @@ sub stop_masters_slaves () {
|
|||||||
|
|
||||||
print "Ending Tests\n";
|
print "Ending Tests\n";
|
||||||
|
|
||||||
if (defined $instance_manager->{'pid'})
|
if ( $instance_manager->{'pid'} )
|
||||||
{
|
{
|
||||||
print "Shutting-down Instance Manager\n";
|
print "Shutting-down Instance Manager\n";
|
||||||
im_stop($instance_manager);
|
im_stop($instance_manager);
|
||||||
@ -2269,14 +2267,10 @@ sub im_start($$) {
|
|||||||
my $instance_manager = shift;
|
my $instance_manager = shift;
|
||||||
my $opts = shift;
|
my $opts = shift;
|
||||||
|
|
||||||
if ( ! defined $exe_im)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $args;
|
my $args;
|
||||||
mtr_init_args(\$args);
|
mtr_init_args(\$args);
|
||||||
mtr_add_arg($args, "--defaults-file=" . $instance_manager->{'defaults_file'});
|
mtr_add_arg($args, "--defaults-file=%s",
|
||||||
|
$instance_manager->{'defaults_file'});
|
||||||
|
|
||||||
foreach my $opt (@{$opts})
|
foreach my $opt (@{$opts})
|
||||||
{
|
{
|
||||||
@ -2294,7 +2288,7 @@ sub im_start($$) {
|
|||||||
{ append_log_file => 1 } # append log files
|
{ append_log_file => 1 } # append log files
|
||||||
);
|
);
|
||||||
|
|
||||||
if ( ! defined $instance_manager->{'pid'} )
|
if ( ! $instance_manager->{'pid'} )
|
||||||
{
|
{
|
||||||
mtr_report('Could not start Instance Manager');
|
mtr_report('Could not start Instance Manager');
|
||||||
return;
|
return;
|
||||||
@ -2304,10 +2298,14 @@ sub im_start($$) {
|
|||||||
# several processes and the parent process, created by mtr_spawn(), exits just
|
# several processes and the parent process, created by mtr_spawn(), exits just
|
||||||
# after start. So, we have to obtain Instance Manager PID from the PID file.
|
# after start. So, we have to obtain Instance Manager PID from the PID file.
|
||||||
|
|
||||||
sleep_until_file_created(
|
if ( ! sleep_until_file_created(
|
||||||
$instance_manager->{'path_pid'},
|
$instance_manager->{'path_pid'},
|
||||||
$instance_manager->{'start_timeout'},
|
$instance_manager->{'start_timeout'},
|
||||||
-1); # real PID is still unknown
|
-1)) # real PID is still unknown
|
||||||
|
{
|
||||||
|
mtr_report("Instance Manager PID file is missing");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$instance_manager->{'pid'} =
|
$instance_manager->{'pid'} =
|
||||||
mtr_get_pid_from_file($instance_manager->{'path_pid'});
|
mtr_get_pid_from_file($instance_manager->{'path_pid'});
|
||||||
@ -2316,16 +2314,12 @@ sub im_start($$) {
|
|||||||
sub im_stop($) {
|
sub im_stop($) {
|
||||||
my $instance_manager = shift;
|
my $instance_manager = shift;
|
||||||
|
|
||||||
if (! defined $instance_manager->{'pid'})
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Re-read pid from the file, since during tests Instance Manager could have
|
# Re-read pid from the file, since during tests Instance Manager could have
|
||||||
# been restarted, so its pid could have been changed.
|
# been restarted, so its pid could have been changed.
|
||||||
|
|
||||||
$instance_manager->{'pid'} =
|
$instance_manager->{'pid'} =
|
||||||
mtr_get_pid_from_file($instance_manager->{'path_pid'});
|
mtr_get_pid_from_file($instance_manager->{'path_pid'})
|
||||||
|
if -f $instance_manager->{'path_pid'};
|
||||||
|
|
||||||
# Inspired from mtr_stop_mysqld_servers().
|
# Inspired from mtr_stop_mysqld_servers().
|
||||||
|
|
||||||
@ -2340,12 +2334,12 @@ sub im_stop($) {
|
|||||||
|
|
||||||
if ( -r $instances->[0]->{'path_pid'} )
|
if ( -r $instances->[0]->{'path_pid'} )
|
||||||
{
|
{
|
||||||
push @pids, mtr_get_pid_from_file($instances->[0]->{'path_pid'});
|
push(@pids, mtr_get_pid_from_file($instances->[0]->{'path_pid'}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( -r $instances->[1]->{'path_pid'} )
|
if ( -r $instances->[1]->{'path_pid'} )
|
||||||
{
|
{
|
||||||
push @pids, mtr_get_pid_from_file($instances->[1]->{'path_pid'});
|
push(@pids, mtr_get_pid_from_file($instances->[1]->{'path_pid'}));
|
||||||
}
|
}
|
||||||
|
|
||||||
# Kill processes.
|
# Kill processes.
|
||||||
@ -2601,6 +2595,7 @@ Options to control what test suites or cases to run
|
|||||||
start-from=PREFIX Run test cases starting from test prefixed with PREFIX
|
start-from=PREFIX Run test cases starting from test prefixed with PREFIX
|
||||||
suite=NAME Run the test suite named NAME. The default is "main"
|
suite=NAME Run the test suite named NAME. The default is "main"
|
||||||
skip-rpl Skip the replication test cases.
|
skip-rpl Skip the replication test cases.
|
||||||
|
skip-im Don't start IM, and skip the IM test cases
|
||||||
skip-test=PREFIX Skip test cases which name are prefixed with PREFIX
|
skip-test=PREFIX Skip test cases which name are prefixed with PREFIX
|
||||||
|
|
||||||
Options that specify ports
|
Options that specify ports
|
||||||
|
Reference in New Issue
Block a user