As both ndb and im are components that may be disabled as well as the binaries...

As both ndb and im are components that may be disabled as well as the binaries may not exist. Look for 
their binaries in a separate function and produce test casea failures for the test thet needs these components
parent 2459dd55
...@@ -1295,6 +1295,54 @@ sub collect_mysqld_features () { ...@@ -1295,6 +1295,54 @@ sub collect_mysqld_features () {
} }
sub executable_setup_im () {
# Look for instance manager binary - mysqlmanager
$exe_im=
mtr_exe_maybe_exists(
"$glob_basedir/server-tools/instance-manager/mysqlmanager",
"$glob_basedir/libexec/mysqlmanager");
return ($exe_im eq "");
}
sub executable_setup_ndb () {
# Look for ndb tols and binaries
my $ndb_path= mtr_file_exists("$glob_basedir/ndb",
"$glob_basedir/storage/ndb",
"$glob_basedir/bin");
$exe_ndbd=
mtr_exe_maybe_exists("$ndb_path/src/kernel/ndbd",
"$ndb_path/ndbd");
$exe_ndb_mgm=
mtr_exe_maybe_exists("$ndb_path/src/mgmclient/ndb_mgm",
"$ndb_path/ndb_mgm");
$exe_ndb_mgmd=
mtr_exe_maybe_exists("$ndb_path/src/mgmsrv/ndb_mgmd",
"$ndb_path/ndb_mgmd");
$exe_ndb_waiter=
mtr_exe_maybe_exists("$ndb_path/tools/ndb_waiter",
"$ndb_path/ndb_waiter");
# May not exist
$path_ndb_tools_dir= mtr_file_exists("$ndb_path/tools",
"$ndb_path");
# May not exist
$path_ndb_examples_dir=
mtr_file_exists("$ndb_path/ndbapi-examples",
"$ndb_path/examples");
# May not exist
$exe_ndb_example=
mtr_file_exists("$path_ndb_examples_dir/ndbapi_simple/ndbapi_simple");
return ( $exe_ndbd eq "" or
$exe_ndb_mgm eq "" or
$exe_ndb_mgmd eq "" or
$exe_ndb_waiter eq "");
}
sub executable_setup () { sub executable_setup () {
# #
...@@ -1333,20 +1381,6 @@ sub executable_setup () { ...@@ -1333,20 +1381,6 @@ sub executable_setup () {
"$glob_basedir/extra/release/perror", "$glob_basedir/extra/release/perror",
"$glob_basedir/extra/debug/perror"); "$glob_basedir/extra/debug/perror");
if ( ! $opt_skip_im )
{
# Look for instance manager binary - mysqlmanager
$exe_im=
mtr_exe_exists(
"$glob_basedir/server-tools/instance-manager/mysqlmanager",
"$glob_basedir/libexec/mysqlmanager");
}
else
{
$exe_im= "not_available";
}
# Look for the client binaries # Look for the client binaries
$exe_mysqlcheck= mtr_exe_exists("$path_client_bindir/mysqlcheck"); $exe_mysqlcheck= mtr_exe_exists("$path_client_bindir/mysqlcheck");
$exe_mysqldump= mtr_exe_exists("$path_client_bindir/mysqldump"); $exe_mysqldump= mtr_exe_exists("$path_client_bindir/mysqldump");
...@@ -1368,35 +1402,25 @@ sub executable_setup () { ...@@ -1368,35 +1402,25 @@ sub executable_setup () {
"$path_client_bindir/mysql_fix_privilege_tables"); "$path_client_bindir/mysql_fix_privilege_tables");
} }
if ( ! $opt_skip_ndbcluster)
{ if ( ! $opt_skip_ndbcluster and executable_setup_ndb())
# Look for ndb tols and binaries {
my $ndb_path= mtr_path_exists("$glob_basedir/ndb", mtr_warning("Could not find all required ndb binaries, " .
"$glob_basedir/storage/ndb", "all ndb tests will fail, use --skip-ndbcluster to " .
"$glob_basedir/bin"); "skip testing it.");
$path_ndb_tools_dir= mtr_path_exists("$ndb_path/tools", foreach my $cluster (@{$clusters})
"$ndb_path"); {
$exe_ndb_mgm= $cluster->{"executable_setup_failed"}= 1;
mtr_exe_exists("$ndb_path/src/mgmclient/ndb_mgm", }
"$ndb_path/ndb_mgm"); }
$exe_ndb_mgmd=
mtr_exe_exists("$ndb_path/src/mgmsrv/ndb_mgmd", if ( ! $opt_skip_im and executable_setup_im())
"$ndb_path/ndb_mgmd"); {
$exe_ndb_waiter= mtr_warning("Could not find all required instance manager binaries, " .
mtr_exe_exists("$ndb_path/tools/ndb_waiter", "all im tests will fail, use --skip-im to " .
"$ndb_path/ndb_waiter"); "continue without instance manager");
$exe_ndbd= $instance_manager->{"executable_setup_failed"}= 1;
mtr_exe_exists("$ndb_path/src/kernel/ndbd",
"$ndb_path/ndbd");
# May not exist
$path_ndb_examples_dir=
mtr_file_exists("$ndb_path/ndbapi-examples",
"$ndb_path/examples");
# May not exist
$exe_ndb_example=
mtr_file_exists("$path_ndb_examples_dir/ndbapi_simple/ndbapi_simple");
} }
# Look for the udf_example library # Look for the udf_example library
...@@ -1424,7 +1448,8 @@ sub executable_setup () { ...@@ -1424,7 +1448,8 @@ sub executable_setup () {
if ( $glob_use_embedded_server ) if ( $glob_use_embedded_server )
{ {
$exe_mysql_client_test= $exe_mysql_client_test=
mtr_exe_maybe_exists("$glob_basedir/libmysqld/examples/mysql_client_test_embedded"); mtr_exe_maybe_exists(
"$glob_basedir/libmysqld/examples/mysql_client_test_embedded");
} }
else else
{ {
...@@ -1567,19 +1592,28 @@ sub environment_setup () { ...@@ -1567,19 +1592,28 @@ sub environment_setup () {
# ---------------------------------------------------- # ----------------------------------------------------
# Setup env for IM # Setup env for IM
# ---------------------------------------------------- # ----------------------------------------------------
$ENV{'IM_EXE'}= $exe_im; if ( ! $opt_skip_im )
$ENV{'IM_PATH_PID'}= $instance_manager->{path_pid}; {
$ENV{'IM_PATH_ANGEL_PID'}= $instance_manager->{path_angel_pid}; $ENV{'IM_EXE'}= $exe_im;
$ENV{'IM_PORT'}= $instance_manager->{port}; $ENV{'IM_PATH_PID'}= $instance_manager->{path_pid};
$ENV{'IM_DEFAULTS_PATH'}= $instance_manager->{defaults_file}; $ENV{'IM_PATH_ANGEL_PID'}= $instance_manager->{path_angel_pid};
$ENV{'IM_PASSWORD_PATH'}= $instance_manager->{password_file}; $ENV{'IM_PORT'}= $instance_manager->{port};
$ENV{'IM_DEFAULTS_PATH'}= $instance_manager->{defaults_file};
$ENV{'IM_MYSQLD1_SOCK'}= $instance_manager->{instances}->[0]->{path_sock}; $ENV{'IM_PASSWORD_PATH'}= $instance_manager->{password_file};
$ENV{'IM_MYSQLD1_PORT'}= $instance_manager->{instances}->[0]->{port};
$ENV{'IM_MYSQLD1_PATH_PID'}=$instance_manager->{instances}->[0]->{path_pid}; $ENV{'IM_MYSQLD1_SOCK'}=
$ENV{'IM_MYSQLD2_SOCK'}= $instance_manager->{instances}->[1]->{path_sock}; $instance_manager->{instances}->[0]->{path_sock};
$ENV{'IM_MYSQLD2_PORT'}= $instance_manager->{instances}->[1]->{port}; $ENV{'IM_MYSQLD1_PORT'}=
$ENV{'IM_MYSQLD2_PATH_PID'}=$instance_manager->{instances}->[1]->{path_pid}; $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};
}
# ---------------------------------------------------- # ----------------------------------------------------
# Setup env so childs can execute mysqlcheck # Setup env so childs can execute mysqlcheck
...@@ -2037,14 +2071,6 @@ sub check_ndbcluster_support ($) { ...@@ -2037,14 +2071,6 @@ sub check_ndbcluster_support ($) {
$opt_skip_ndbcluster_slave= 1; $opt_skip_ndbcluster_slave= 1;
return; return;
} }
elsif ( -e "$glob_basedir/bin" && ! -f "$glob_basedir/bin/ndbd")
{
# Binary dist with a mysqld that supports ndb, but no ndbd found
mtr_report("Skipping ndbcluster, can't fint binaries");
$opt_skip_ndbcluster= 1;
$opt_skip_ndbcluster_slave= 1;
return;
}
$glob_ndbcluster_supported= 1; $glob_ndbcluster_supported= 1;
mtr_report("Using ndbcluster when necessary, mysqld supports it"); mtr_report("Using ndbcluster when necessary, mysqld supports it");
...@@ -2475,7 +2501,8 @@ sub mysql_install_db () { ...@@ -2475,7 +2501,8 @@ sub mysql_install_db () {
my $cluster_started_ok= 1; # Assume it can be started my $cluster_started_ok= 1; # Assume it can be started
if ($opt_skip_ndbcluster || $glob_use_running_ndbcluster) if ($opt_skip_ndbcluster || $glob_use_running_ndbcluster ||
$clusters->[0]->{executable_setup_failed})
{ {
# Don't install master cluster # Don't install master cluster
} }
...@@ -2486,7 +2513,8 @@ sub mysql_install_db () { ...@@ -2486,7 +2513,8 @@ sub mysql_install_db () {
} }
if ($max_slave_num == 0 || if ($max_slave_num == 0 ||
$opt_skip_ndbcluster_slave || $glob_use_running_ndbcluster_slave) $opt_skip_ndbcluster_slave || $glob_use_running_ndbcluster_slave ||
$clusters->[1]->{executable_setup_failed})
{ {
# Don't install slave cluster # Don't install slave cluster
} }
...@@ -2760,6 +2788,16 @@ sub run_testcase_check_skip_test($) ...@@ -2760,6 +2788,16 @@ sub run_testcase_check_skip_test($)
last if ($opt_skip_ndbcluster_slave and last if ($opt_skip_ndbcluster_slave and
$cluster->{'name'} eq 'Slave'); $cluster->{'name'} eq 'Slave');
# If test needs this cluster, check binaries was found ok
if ( $cluster->{'executable_setup_failed'} )
{
mtr_report_test_name($tinfo);
$tinfo->{comment}=
"Failed to find cluster binaries";
mtr_report_test_failed($tinfo);
return 1;
}
# If test needs this cluster, check it was installed ok # If test needs this cluster, check it was installed ok
if ( !$cluster->{'installed_ok'} ) if ( !$cluster->{'installed_ok'} )
{ {
...@@ -2769,6 +2807,20 @@ sub run_testcase_check_skip_test($) ...@@ -2769,6 +2807,20 @@ sub run_testcase_check_skip_test($)
mtr_report_test_failed($tinfo); mtr_report_test_failed($tinfo);
return 1; return 1;
} }
}
}
if ( $tinfo->{'component_id'} eq 'im' )
{
# If test needs im, check binaries was found ok
if ( $instance_manager->{'executable_setup_failed'} )
{
mtr_report_test_name($tinfo);
$tinfo->{comment}=
"Failed to find MySQL manager binaries";
mtr_report_test_failed($tinfo);
return 1;
} }
} }
......
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