Commit 46d8163b authored by unknown's avatar unknown

WL#2789 "Instance Manager: test using mysql-test-run testing framework"

1) Add support to testing Instance Manager in daemon mode;
2) Don't run Instance Manager tests when running with --ps-protocol option;


mysql-test/lib/mtr_cases.pl:
  WL#2789 "Instance Manager: test using mysql-test-run testing framework"
  Skip/disable Instance Manager tests in the following cases:
    - we are testing embedded server;
    - we are running with --ps-protocol;
    - Instance Manager executable does not exist;
  Report about the reason in the standard way.
mysql-test/lib/mtr_process.pl:
  WL#2789 "Instance Manager: test using mysql-test-run testing framework"
  Make several attempts (i.e. send several signals to process) while trying to kill it.
mysql-test/mysql-test-run.pl:
  WL#2789 "Instance Manager: test using mysql-test-run testing framework"
  Add support for testing Instance Manager in daemon mode.
parent eeae3fc3
......@@ -61,22 +61,6 @@ sub collect_test_cases ($) {
$elem= $tname;
$tname =~ s/\.imtest$//;
$component_id= 'im';
if ( $::glob_use_embedded_server )
{
mtr_report(
"Instance Manager's tests are not available in embedded mode." .
"Test case '$tname' is skipped.");
next;
}
unless ( $::exe_im )
{
mtr_report(
"Instance Manager executable is unavailable. " .
"Test case '$tname' is skipped.");
next;
}
}
# If target component is known, check that the specified test case
......@@ -115,7 +99,7 @@ sub collect_test_cases ($) {
$component_id= 'im';
}
}
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,{},
$component_id);
}
......@@ -403,6 +387,34 @@ sub collect_one_test_case($$$$$$$) {
$tinfo->{'comment'}= mtr_fromfile($disabled_file);
}
if ( $component_id eq 'im' )
{
if ( $::glob_use_embedded_server )
{
$tinfo->{'skip'}= 1;
mtr_report(
"Instance Manager tests are not available in embedded mode. " .
"Test case '$tname' is skipped.");
}
elsif ( $::opt_ps_protocol )
{
$tinfo->{'skip'}= 1;
mtr_report(
"Instance Manager tests are not run with --ps-protocol. " .
"Test case '$tname' is skipped.");
}
elsif ( !$::exe_im )
{
$tinfo->{'skip'}= 1;
mtr_report(
"Instance Manager executable is unavailable." .
"Test case '$tname' is skipped.");
}
}
# We can't restart a running server that may be in use
if ( $::glob_use_running_server and
......
......@@ -848,14 +848,16 @@ sub sleep_until_file_created ($$$) {
sub mtr_kill_processes ($) {
my $pids = shift;
foreach my $sig (15,9)
foreach my $sig (15, 9)
{
my $retries= 20; # FIXME 20 seconds, this is silly!
kill($sig, @{$pids});
while ( $retries-- and kill(0, @{$pids}) )
my $retries= 10;
while (1)
{
mtr_debug("Sleep 1 second waiting for processes to die");
sleep(1) # Wait one second
kill($sig, @{$pids});
last unless kill (0, @{$pids}) and $retries--;
mtr_debug("Sleep 2 second waiting for processes to die");
sleep(2);
}
}
}
......
......@@ -1017,10 +1017,14 @@ sub environment_setup () {
# $ENV{'MYSQL_TCP_PORT'}= '@MYSQL_TCP_PORT@'; # FIXME
$ENV{'MYSQL_TCP_PORT'}= 3306;
$ENV{'IM_PATH_PID'}= $instance_manager->{path_pid};
$ENV{'IM_MYSQLD1_SOCK'}= $instance_manager->{instances}->[0]->{path_sock};
$ENV{'IM_MYSQLD1_PORT'}= $instance_manager->{instances}->[0]->{port};
$ENV{'IM_MYSQLD1_PATH_PID'}=$instance_manager->{instances}->[0]->{path_pid};
$ENV{'IM_MYSQLD2_SOCK'}= $instance_manager->{instances}->[1]->{path_sock};
$ENV{'IM_MYSQLD2_PORT'}= $instance_manager->{instances}->[1]->{port};
$ENV{'IM_MYSQLD2_PATH_PID'}=$instance_manager->{instances}->[1]->{path_pid};
if ( $glob_cygwin_perl )
{
......@@ -2317,6 +2321,12 @@ sub im_stop($) {
return;
}
# Re-read pid from the file, since during tests Instance Manager could have
# been restarted, so its pid could have been changed.
$instance_manager->{'pid'} =
mtr_get_pid_from_file($instance_manager->{'path_pid'});
# Inspired from mtr_stop_mysqld_servers().
start_reap_all();
......
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