summaryrefslogtreecommitdiff
path: root/mysql-test/mysql-test-run.pl
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/mysql-test-run.pl')
-rwxr-xr-xmysql-test/mysql-test-run.pl161
1 files changed, 95 insertions, 66 deletions
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index f76cb008c3c..9a9fa85aa79 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -94,6 +94,7 @@ $SIG{INT}= sub { mtr_error("Got ^C signal"); };
our $mysql_version_id;
our $glob_mysql_test_dir;
our $basedir;
+our $bindir;
our $path_charsetsdir;
our $path_client_bindir;
@@ -943,7 +944,11 @@ sub command_line_setup {
{
$basedir= dirname($basedir);
}
-
+
+ # Respect MTR_BINDIR variable, which is typically set in to the
+ # build directory in out-of-source builds.
+ $bindir=$ENV{MTR_BINDIR}||$basedir;
+
# Look for the client binaries directory
if ($path_client_bindir)
{
@@ -952,21 +957,21 @@ sub command_line_setup {
}
else
{
- $path_client_bindir= mtr_path_exists("$basedir/client_release",
- "$basedir/client_debug",
+ $path_client_bindir= mtr_path_exists("$bindir/client_release",
+ "$bindir/client_debug",
vs_config_dirs('client', ''),
- "$basedir/client",
- "$basedir/bin");
+ "$bindir/client",
+ "$bindir/bin");
}
# Look for language files and charsetsdir, use same share
- $path_language= mtr_path_exists("$basedir/share/mysql",
- "$basedir/sql/share",
- "$basedir/share");
-
-
+ $path_language= mtr_path_exists("$bindir/share/mysql",
+ "$bindir/sql/share",
+ "$bindir/share");
my $path_share= $path_language;
- $path_charsetsdir= mtr_path_exists("$path_share/charsets");
+ $path_charsetsdir = mtr_path_exists("$basedir/share/mysql/charsets",
+ "$basedir/sql/share/charsets",
+ "$basedir/share/charsets");
if (using_extern())
{
@@ -1104,7 +1109,14 @@ sub command_line_setup {
# --------------------------------------------------------------------------
# Set the "var/" directory, the base for everything else
# --------------------------------------------------------------------------
- $default_vardir= "$glob_mysql_test_dir/var";
+ if(defined $ENV{MTR_BINDIR})
+ {
+ $default_vardir= "$ENV{MTR_BINDIR}/mysql-test/var";
+ }
+ else
+ {
+ $default_vardir= "$glob_mysql_test_dir/var";
+ }
if ( ! $opt_vardir )
{
$opt_vardir= $default_vardir;
@@ -1558,7 +1570,8 @@ sub collect_mysqld_features_from_running_server ()
}
sub find_mysqld {
- my ($mysqld_basedir)= @_;
+
+ my ($mysqld_basedir)= $ENV{MTR_BINDIR}|| @_;
my @mysqld_names= ("mysqld", "mysqld-max-nt", "mysqld-max",
"mysqld-nt");
@@ -1644,7 +1657,7 @@ sub client_debug_arg($$) {
sub mysql_fix_arguments () {
- return "" if ( IS_WINDOWS );
+ return "" ;
my $exe=
mtr_script_exists("$basedir/scripts/mysql_fix_privilege_tables",
@@ -1744,6 +1757,30 @@ sub mysql_client_test_arguments(){
# Set environment to be used by childs of this process for
# things that are constant during the whole lifetime of mysql-test-run
#
+
+sub find_plugin($$)
+{
+ my ($plugin, $location) = @_;
+ my $plugin_filename;
+
+ if (IS_WINDOWS)
+ {
+ $plugin_filename = $plugin.".dll";
+ }
+ else
+ {
+ $plugin_filename = $plugin.".so";
+ }
+
+ my $lib_example_plugin=
+ mtr_file_exists(vs_config_dirs($location,$plugin_filename),
+ "$basedir/lib/plugin/".$plugin_filename,
+ "$basedir/$location/.libs/".$plugin_filename,
+ "$basedir/lib/mysql/plugin/".$plugin_filename,
+ );
+ return $lib_example_plugin;
+}
+
sub environment_setup {
umask(022);
@@ -1782,9 +1819,18 @@ sub environment_setup {
# --------------------------------------------------------------------------
# Add the path where mysqld will find udf_example.so
# --------------------------------------------------------------------------
+ my $udf_example_filename;
+ if (IS_WINDOWS)
+ {
+ $udf_example_filename = "udf_example.dll";
+ }
+ else
+ {
+ $udf_example_filename = "udf_example.so";
+ }
my $lib_udf_example=
- mtr_file_exists(vs_config_dirs('sql', 'udf_example.dll'),
- "$basedir/sql/.libs/udf_example.so",);
+ mtr_file_exists(vs_config_dirs('sql', $udf_example_filename),
+ "$basedir/sql/.libs/$udf_example_filename",);
if ( $lib_udf_example )
{
@@ -1800,60 +1846,46 @@ sub environment_setup {
# Add the path where mysqld will find ha_example.so
# --------------------------------------------------------------------------
if ($mysql_version_id >= 50100) {
- my $plugin_filename;
- if (IS_WINDOWS)
- {
- $plugin_filename = "ha_example.dll";
+ my ($lib_example_plugin) = find_plugin("ha_example", "storage/example");
+
+ if($lib_example_plugin)
+ {
+ $ENV{'EXAMPLE_PLUGIN'}=
+ ($lib_example_plugin ? basename($lib_example_plugin) : "");
+ $ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=".
+ ($lib_example_plugin ? dirname($lib_example_plugin) : "");
+
+ $ENV{'HA_EXAMPLE_SO'}="'".basename($lib_example_plugin)."'";
+ $ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=EXAMPLE=".basename($lib_example_plugin);
}
- else
+ else
{
- $plugin_filename = "ha_example.so";
+ # Some ".opt" files use some of these variables, so they must be defined
+ $ENV{'EXAMPLE_PLUGIN'}= "";
+ $ENV{'EXAMPLE_PLUGIN_OPT'}= "";
+ $ENV{'HA_EXAMPLE_SO'}= "";
+ $ENV{'EXAMPLE_PLUGIN_LOAD'}= "";
}
- my $lib_example_plugin=
- mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename),
- "$basedir/storage/example/.libs/".$plugin_filename,
- "$basedir/lib/mysql/plugin/".$plugin_filename);
- $ENV{'EXAMPLE_PLUGIN'}=
- ($lib_example_plugin ? basename($lib_example_plugin) : "");
- $ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=".
- ($lib_example_plugin ? dirname($lib_example_plugin) : "");
-
- $ENV{'HA_EXAMPLE_SO'}="'".$plugin_filename."'";
- $ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=EXAMPLE=".$plugin_filename;
- }
- else
- {
- # Some ".opt" files use some of these variables, so they must be defined
- $ENV{'EXAMPLE_PLUGIN'}= "";
- $ENV{'EXAMPLE_PLUGIN_OPT'}= "";
- $ENV{'HA_EXAMPLE_SO'}= "";
- $ENV{'EXAMPLE_PLUGIN_LOAD'}= "";
}
+
# --------------------------------------------------------------------------
# Add the path where mysqld will find semisync plugins
# --------------------------------------------------------------------------
if (!$opt_embedded_server) {
- my $semisync_master_filename;
- my $semisync_slave_filename;
+ my $semisync_lib_prefix;
if (IS_WINDOWS)
{
- $semisync_master_filename = "semisync_master.dll";
- $semisync_slave_filename = "semisync_slave.dll";
+ $semisync_lib_prefix = "";
}
else
{
- $semisync_master_filename = "libsemisync_master.so";
- $semisync_slave_filename = "libsemisync_slave.so";
+ $semisync_lib_prefix= "lib";
}
- my $lib_semisync_master_plugin=
- mtr_file_exists(vs_config_dirs('plugin/semisync',$semisync_master_filename),
- "$basedir/plugin/semisync/.libs/" . $semisync_master_filename,
- "$basedir/lib/mysql/plugin/" . $semisync_master_filename);
- my $lib_semisync_slave_plugin=
- mtr_file_exists(vs_config_dirs('plugin/semisync',$semisync_slave_filename),
- "$basedir/plugin/semisync/.libs/" . $semisync_slave_filename,
- "$basedir/lib/mysql/plugin/" . $semisync_slave_filename);
+
+ my ($lib_semisync_master_plugin) = find_plugin($semisync_lib_prefix."semisync_master", "plugin/semisync");
+ my ($lib_semisync_slave_plugin) = find_plugin($semisync_lib_prefix."semisync_slave", "plugin/semisync");
+
if ($lib_semisync_master_plugin && $lib_semisync_slave_plugin)
{
$ENV{'SEMISYNC_MASTER_PLUGIN'}= basename($lib_semisync_master_plugin);
@@ -1871,10 +1903,10 @@ sub environment_setup {
# ----------------------------------------------------
# Add the path where mysqld will find mypluglib.so
# ----------------------------------------------------
- my $lib_simple_parser=
- mtr_file_exists(vs_config_dirs('plugin/fulltext', 'mypluglib.dll'),
- "$basedir/plugin/fulltext/.libs/mypluglib.so",);
+ my ($lib_simple_parser) = find_plugin("mypluglib", "plugin/fulltext");
+
+ $ENV{'MYPLUGLIB_SO'}="'".basename($lib_simple_parser)."'";
$ENV{'SIMPLE_PARSER'}=
($lib_simple_parser ? basename($lib_simple_parser) : "");
$ENV{'SIMPLE_PARSER_OPT'}= "--plugin-dir=".
@@ -2303,18 +2335,15 @@ sub vs_config_dirs ($$) {
my ($path_part, $exe) = @_;
$exe = "" if not defined $exe;
-
- # Don't look in these dirs when not on windows
- return () unless IS_WINDOWS;
-
if ($opt_vs_config)
{
- return ("$basedir/$path_part/$opt_vs_config/$exe");
+ return ("$bindir/$path_part/$opt_vs_config/$exe");
}
- return ("$basedir/$path_part/release/$exe",
- "$basedir/$path_part/relwithdebinfo/$exe",
- "$basedir/$path_part/debug/$exe");
+ return ("$bindir/$path_part/Release/$exe",
+ "$bindir/$path_part/RelWithDebinfo/$exe",
+ "$bindir/$path_part/Debug/$exe",
+ "$bindir/$path_part/$exe");
}