mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Bug#23865 mysql-test-run.pl on Windows only supports debug and release configurations
Visual Studio builds each configuration in a different sub-directory. Only the sub- directories for release and debug are currently searched. mysql-test/lib/mtr_misc.pl: Bug#23865 mysql-test-run.pl on Windows only supports debug and release configurations - Added usage comments. mysql-test/mysql-test-run.pl: Bug#23865 mysql-test-run.pl on Windows only supports debug and release configurations - Moved Initial_Setup function to the command_line_setup function. - Defined new argument vs-config which can be used to inidicate the VS Configuration used to create the test executables. Argument can also be controlled with MTR_VS_CONFIG environment variable.
This commit is contained in:
parent
d2c90fcb8e
commit
8e6b1e3849
2 changed files with 129 additions and 100 deletions
|
@ -66,6 +66,9 @@ sub mtr_add_arg ($$@) {
|
|||
|
||||
##############################################################################
|
||||
|
||||
# Note - More specific paths should be given before less specific. For examle
|
||||
# /client/debug should be listed before /client
|
||||
|
||||
sub mtr_path_exists (@) {
|
||||
foreach my $path ( @_ )
|
||||
{
|
||||
|
@ -81,6 +84,9 @@ sub mtr_path_exists (@) {
|
|||
}
|
||||
}
|
||||
|
||||
# Note - More specific paths should be given before less specific. For examle
|
||||
# /client/debug should be listed before /client
|
||||
|
||||
sub mtr_script_exists (@) {
|
||||
foreach my $path ( @_ )
|
||||
{
|
||||
|
@ -103,6 +109,9 @@ sub mtr_script_exists (@) {
|
|||
}
|
||||
}
|
||||
|
||||
# Note - More specific paths should be given before less specific. For examle
|
||||
# /client/debug should be listed before /client
|
||||
|
||||
sub mtr_file_exists (@) {
|
||||
foreach my $path ( @_ )
|
||||
{
|
||||
|
@ -111,6 +120,9 @@ sub mtr_file_exists (@) {
|
|||
return "";
|
||||
}
|
||||
|
||||
# Note - More specific paths should be given before less specific. For examle
|
||||
# /client/debug should be listed before /client
|
||||
|
||||
sub mtr_exe_maybe_exists (@) {
|
||||
my @path= @_;
|
||||
|
||||
|
@ -129,6 +141,9 @@ sub mtr_exe_maybe_exists (@) {
|
|||
return "";
|
||||
}
|
||||
|
||||
# Note - More specific paths should be given before less specific. For examle
|
||||
# /client/debug should be listed before /client
|
||||
|
||||
sub mtr_exe_exists (@) {
|
||||
my @path= @_;
|
||||
if (my $path= mtr_exe_maybe_exists(@path))
|
||||
|
|
|
@ -68,6 +68,9 @@ use strict;
|
|||
use warnings;
|
||||
use diagnostics;
|
||||
|
||||
select(STDOUT);
|
||||
$| = 1; # Automatically flush STDOUT
|
||||
|
||||
our $glob_win32_perl= ($^O eq "MSWin32"); # ActiveState Win32 Perl
|
||||
our $glob_cygwin_perl= ($^O eq "cygwin"); # Cygwin Perl
|
||||
our $glob_win32= ($glob_win32_perl or $glob_cygwin_perl);
|
||||
|
@ -127,6 +130,12 @@ our $opt_vardir; # A path but set directly on cmd line
|
|||
our $path_vardir_trace; # unix formatted opt_vardir for trace files
|
||||
our $opt_tmpdir; # A path but set directly on cmd line
|
||||
|
||||
# Visual Studio produces executables in different sub-directories based on the
|
||||
# configuration used to build them. To make life easier, an environment
|
||||
# variable or command-line option may be specified to control which set of
|
||||
# executables will be used by the test suite.
|
||||
our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
|
||||
|
||||
our $default_vardir;
|
||||
|
||||
our $opt_usage;
|
||||
|
@ -351,7 +360,6 @@ main();
|
|||
|
||||
sub main () {
|
||||
|
||||
initial_setup();
|
||||
command_line_setup();
|
||||
|
||||
check_ndbcluster_support(\%mysqld_variables);
|
||||
|
@ -433,86 +441,6 @@ sub main () {
|
|||
mtr_exit(0);
|
||||
}
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Initial setup independent on command line arguments
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
sub initial_setup () {
|
||||
|
||||
select(STDOUT);
|
||||
$| = 1; # Make unbuffered
|
||||
|
||||
$glob_scriptname= basename($0);
|
||||
|
||||
# We require that we are in the "mysql-test" directory
|
||||
# to run mysql-test-run
|
||||
if (! -f $glob_scriptname)
|
||||
{
|
||||
mtr_error("Can't find the location for the mysql-test-run script\n" .
|
||||
"Go to to the mysql-test directory and execute the script " .
|
||||
"as follows:\n./$glob_scriptname");
|
||||
}
|
||||
|
||||
if ( -d "../sql" )
|
||||
{
|
||||
$opt_source_dist= 1;
|
||||
}
|
||||
|
||||
$glob_hostname= mtr_short_hostname();
|
||||
|
||||
# 'basedir' is always parent of "mysql-test" directory
|
||||
$glob_mysql_test_dir= cwd();
|
||||
if ( $glob_cygwin_perl )
|
||||
{
|
||||
# Windows programs like 'mysqld' needs Windows paths
|
||||
$glob_mysql_test_dir= `cygpath -m "$glob_mysql_test_dir"`;
|
||||
chomp($glob_mysql_test_dir);
|
||||
}
|
||||
$glob_basedir= dirname($glob_mysql_test_dir);
|
||||
|
||||
# Expect mysql-bench to be located adjacent to the source tree, by default
|
||||
$glob_mysql_bench_dir= "$glob_basedir/../mysql-bench"
|
||||
unless defined $glob_mysql_bench_dir;
|
||||
|
||||
$path_my_basedir=
|
||||
$opt_source_dist ? $glob_mysql_test_dir : $glob_basedir;
|
||||
|
||||
$glob_timers= mtr_init_timers();
|
||||
|
||||
#
|
||||
# Find the mysqld executable to be able to find the mysqld version
|
||||
# number as early as possible
|
||||
#
|
||||
|
||||
# Look for the path where to find the client binaries
|
||||
$path_client_bindir= mtr_path_exists("$glob_basedir/client_release",
|
||||
"$glob_basedir/client_debug",
|
||||
"$glob_basedir/client/release",
|
||||
"$glob_basedir/client/debug",
|
||||
"$glob_basedir/client",
|
||||
"$glob_basedir/bin");
|
||||
|
||||
# Look for the mysqld executable
|
||||
$exe_mysqld= mtr_exe_exists ("$glob_basedir/sql/mysqld",
|
||||
"$path_client_bindir/mysqld-max-nt",
|
||||
"$path_client_bindir/mysqld-max",
|
||||
"$path_client_bindir/mysqld-nt",
|
||||
"$path_client_bindir/mysqld",
|
||||
"$path_client_bindir/mysqld-debug",
|
||||
"$path_client_bindir/mysqld-max",
|
||||
"$glob_basedir/libexec/mysqld",
|
||||
"$glob_basedir/bin/mysqld",
|
||||
"$glob_basedir/sql/release/mysqld",
|
||||
"$glob_basedir/sql/debug/mysqld");
|
||||
|
||||
# Use the mysqld found above to find out what features are available
|
||||
collect_mysqld_features();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
|
@ -590,6 +518,7 @@ sub command_line_setup () {
|
|||
'bench' => \$opt_bench,
|
||||
'small-bench' => \$opt_small_bench,
|
||||
'with-ndbcluster' => \$opt_with_ndbcluster,
|
||||
'vs-config' => \$opt_vs_config,
|
||||
|
||||
# Control what test suites or cases to run
|
||||
'force' => \$opt_force,
|
||||
|
@ -695,6 +624,68 @@ sub command_line_setup () {
|
|||
|
||||
usage("") if $opt_usage;
|
||||
|
||||
$glob_scriptname= basename($0);
|
||||
|
||||
# We require that we are in the "mysql-test" directory
|
||||
# to run mysql-test-run
|
||||
if (! -f $glob_scriptname)
|
||||
{
|
||||
mtr_error("Can't find the location for the mysql-test-run script\n" .
|
||||
"Go to to the mysql-test directory and execute the script " .
|
||||
"as follows:\n./$glob_scriptname");
|
||||
}
|
||||
|
||||
if ( -d "../sql" )
|
||||
{
|
||||
$opt_source_dist= 1;
|
||||
}
|
||||
|
||||
$glob_hostname= mtr_short_hostname();
|
||||
|
||||
# 'basedir' is always parent of "mysql-test" directory
|
||||
$glob_mysql_test_dir= cwd();
|
||||
if ( $glob_cygwin_perl )
|
||||
{
|
||||
# Windows programs like 'mysqld' needs Windows paths
|
||||
$glob_mysql_test_dir= `cygpath -m "$glob_mysql_test_dir"`;
|
||||
chomp($glob_mysql_test_dir);
|
||||
}
|
||||
$glob_basedir= dirname($glob_mysql_test_dir);
|
||||
|
||||
# Expect mysql-bench to be located adjacent to the source tree, by default
|
||||
$glob_mysql_bench_dir= "$glob_basedir/../mysql-bench"
|
||||
unless defined $glob_mysql_bench_dir;
|
||||
|
||||
$path_my_basedir=
|
||||
$opt_source_dist ? $glob_mysql_test_dir : $glob_basedir;
|
||||
|
||||
$glob_timers= mtr_init_timers();
|
||||
|
||||
#
|
||||
# Find the mysqld executable to be able to find the mysqld version
|
||||
# number as early as possible
|
||||
#
|
||||
|
||||
# Look for the client binaries
|
||||
$path_client_bindir= mtr_path_exists(vs_config_dirs('client', ''),
|
||||
"$glob_basedir/client_release",
|
||||
"$glob_basedir/client_debug",
|
||||
"$glob_basedir/client");
|
||||
|
||||
$exe_mysqld= mtr_exe_exists (vs_config_dirs('sql', 'mysqld'),
|
||||
"$glob_basedir/sql/mysqld",
|
||||
"$path_client_bindir/mysqld-max-nt",
|
||||
"$path_client_bindir/mysqld-max",
|
||||
"$path_client_bindir/mysqld-nt",
|
||||
"$path_client_bindir/mysqld",
|
||||
"$path_client_bindir/mysqld-debug",
|
||||
"$path_client_bindir/mysqld-max",
|
||||
"$glob_basedir/libexec/mysqld",
|
||||
"$glob_basedir/bin/mysqld");
|
||||
|
||||
# Use the mysqld found above to find out what features are available
|
||||
collect_mysqld_features();
|
||||
|
||||
if ( $opt_comment )
|
||||
{
|
||||
print "\n";
|
||||
|
@ -1396,16 +1387,14 @@ sub executable_setup () {
|
|||
|
||||
# Look for my_print_defaults
|
||||
$exe_my_print_defaults=
|
||||
mtr_exe_exists("$path_client_bindir/my_print_defaults",
|
||||
"$glob_basedir/extra/my_print_defaults",
|
||||
"$glob_basedir/extra/release/my_print_defaults",
|
||||
"$glob_basedir/extra/debug/my_print_defaults");
|
||||
mtr_exe_exists(vs_config_dirs('extra', 'my_print_defaults'),
|
||||
"$path_client_bindir/my_print_defaults",
|
||||
"$glob_basedir/extra/my_print_defaults");
|
||||
|
||||
# Look for perror
|
||||
$exe_perror= mtr_exe_exists("$glob_basedir/extra/perror",
|
||||
"$path_client_bindir/perror",
|
||||
"$glob_basedir/extra/release/perror",
|
||||
"$glob_basedir/extra/debug/perror");
|
||||
$exe_perror= mtr_exe_exists(vs_config_dirs('extra', 'perror'),
|
||||
"$glob_basedir/extra/perror",
|
||||
"$path_client_bindir/perror");
|
||||
|
||||
# Look for the client binaries
|
||||
$exe_mysqlcheck= mtr_exe_exists("$path_client_bindir/mysqlcheck");
|
||||
|
@ -1451,22 +1440,20 @@ sub executable_setup () {
|
|||
|
||||
# Look for the udf_example library
|
||||
$lib_udf_example=
|
||||
mtr_file_exists("$glob_basedir/sql/.libs/udf_example.so",
|
||||
"$glob_basedir/sql/release/udf_example.dll",
|
||||
"$glob_basedir/sql/debug/udf_example.dll");
|
||||
mtr_file_exists(vs_config_dirs('sql', 'udf_example.dll'),
|
||||
"$glob_basedir/sql/.libs/udf_example.so",);
|
||||
|
||||
# Look for mysqltest executable
|
||||
if ( $glob_use_embedded_server )
|
||||
{
|
||||
$exe_mysqltest=
|
||||
mtr_exe_exists("$glob_basedir/libmysqld/examples/mysqltest_embedded",
|
||||
mtr_exe_exists(vs_config_dirs('libmysqld/examples', 'mysqltest_embedded'),
|
||||
"$glob_basedir/libmysqld/examples/mysqltest_embedded",
|
||||
"$path_client_bindir/mysqltest_embedded");
|
||||
}
|
||||
else
|
||||
{
|
||||
$exe_mysqltest= mtr_exe_exists("$path_client_bindir/mysqltest");
|
||||
|
||||
|
||||
}
|
||||
|
||||
# Look for mysql_client_test executable which may _not_ exist in
|
||||
|
@ -1475,14 +1462,14 @@ sub executable_setup () {
|
|||
{
|
||||
$exe_mysql_client_test=
|
||||
mtr_exe_maybe_exists(
|
||||
vs_config_dirs('libmysqld/examples', 'mysql_client_test_embedded'),
|
||||
"$glob_basedir/libmysqld/examples/mysql_client_test_embedded");
|
||||
}
|
||||
else
|
||||
{
|
||||
$exe_mysql_client_test=
|
||||
mtr_exe_maybe_exists("$glob_basedir/tests/mysql_client_test",
|
||||
"$glob_basedir/tests/release/mysql_client_test",
|
||||
"$glob_basedir/tests/debug/mysql_client_test",
|
||||
mtr_exe_maybe_exists(vs_config_dirs('tests', 'mysql_client_test'),
|
||||
"$glob_basedir/tests/mysql_client_test",
|
||||
"$glob_basedir/bin");
|
||||
}
|
||||
}
|
||||
|
@ -2097,6 +2084,31 @@ sub check_debug_support ($) {
|
|||
$debug_compiled_binaries= 1;
|
||||
}
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Helper function to handle configuration-based subdirectories which Visual
|
||||
# Studio uses for storing binaries. If opt_vs_config is set, this returns
|
||||
# a path based on that setting; if not, it returns paths for the default
|
||||
# /release/ and /debug/ subdirectories.
|
||||
#
|
||||
# $exe can be undefined, if the directory itself will be used
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
sub vs_config_dirs ($$) {
|
||||
my ($path_part, $exe) = @_;
|
||||
|
||||
$exe = "" if not defined $exe;
|
||||
|
||||
if ($opt_vs_config)
|
||||
{
|
||||
return ("$glob_basedir/$path_part/$opt_vs_config/$exe");
|
||||
}
|
||||
|
||||
return ("$glob_basedir/$path_part/release/$exe",
|
||||
"$glob_basedir/$path_part/debug/$exe");
|
||||
}
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Start the ndb cluster
|
||||
|
@ -4616,6 +4628,8 @@ Options to control what engine/variation to run
|
|||
bench Run the benchmark suite
|
||||
small-bench Run the benchmarks with --small-tests --small-tables
|
||||
with-ndbcluster Use cluster as default table type for benchmark
|
||||
vs-config Visual Studio configuration used to create executables
|
||||
(default: MTR_VS_CONFIG environment variable)
|
||||
|
||||
Options to control directories to use
|
||||
benchdir=DIR The directory where the benchmark suite is stored
|
||||
|
|
Loading…
Reference in a new issue