2012-02-07 16:22:36 +01:00
|
|
|
package My::Suite::Main;
|
2012-02-23 09:24:11 +01:00
|
|
|
use My::Platform;
|
2012-02-07 16:22:36 +01:00
|
|
|
|
|
|
|
@ISA = qw(My::Suite);
|
|
|
|
|
|
|
|
sub skip_combinations {
|
2024-04-29 15:59:13 +02:00
|
|
|
my %skip;
|
2012-02-23 07:50:11 +01:00
|
|
|
|
2018-04-13 22:18:36 +02:00
|
|
|
$skip{'include/innodb_encrypt_log.combinations'} = [ 'crypt' ]
|
|
|
|
unless $ENV{DEBUG_KEY_MANAGEMENT_SO};
|
|
|
|
|
2012-02-23 09:24:11 +01:00
|
|
|
# don't run tests for the wrong platform
|
2021-06-11 09:13:19 +02:00
|
|
|
if (IS_WINDOWS) {
|
|
|
|
$skip{'include/platform.combinations'} = [ 'aix', 'unix' ];
|
|
|
|
} elsif (IS_AIX) {
|
|
|
|
$skip{'include/platform.combinations'} = [ 'win', 'unix' ];
|
|
|
|
} else {
|
|
|
|
$skip{'include/platform.combinations'} = [ 'aix', 'win' ];
|
|
|
|
}
|
2012-02-23 09:24:11 +01:00
|
|
|
|
2024-10-03 08:31:39 +02:00
|
|
|
if ( $::opt_ps_protocol || $::opt_cursor_protocol) {
|
2021-07-15 11:27:31 +02:00
|
|
|
$skip{'include/protocol.combinations'} = [ 'nm' ];
|
|
|
|
} else {
|
|
|
|
$skip{'include/protocol.combinations'} = [ 'ps' ];
|
|
|
|
}
|
|
|
|
|
2018-10-30 12:29:19 +01:00
|
|
|
$skip{'include/maybe_debug.combinations'} =
|
|
|
|
[ defined $::mysqld_variables{'debug-dbug'} ? 'release' : 'debug' ];
|
|
|
|
|
2019-06-17 13:31:11 +02:00
|
|
|
$skip{'include/have_debug.inc'} = 'Requires debug build'
|
|
|
|
unless defined $::mysqld_variables{'debug-dbug'};
|
|
|
|
|
2014-10-09 21:43:48 +02:00
|
|
|
# and for the wrong word size
|
|
|
|
# check for exact values, in case the default changes to be small everywhere
|
|
|
|
my $longsysvar= $::mysqld_variables{'max-binlog-stmt-cache-size'};
|
|
|
|
my %val_map= (
|
|
|
|
'4294963200' => '64bit', # remember, it shows *what configuration to skip*
|
|
|
|
'18446744073709547520' => '32bit'
|
|
|
|
);
|
|
|
|
die "unknown value max-binlog-stmt-cache-size=$longsysvar" unless $val_map{$longsysvar};
|
|
|
|
$skip{'include/word_size.combinations'} = [ $val_map{$longsysvar} ];
|
|
|
|
|
2012-02-23 07:50:11 +01:00
|
|
|
# as a special case, disable certain include files as a whole
|
|
|
|
$skip{'include/not_embedded.inc'} = 'Not run for embedded server'
|
|
|
|
if $::opt_embedded_server;
|
|
|
|
|
2013-01-31 15:51:26 +01:00
|
|
|
$skip{'include/have_example_plugin.inc'} = 'Need example plugin'
|
|
|
|
unless $ENV{HA_EXAMPLE_SO};
|
|
|
|
|
2012-02-23 07:50:11 +01:00
|
|
|
$skip{'include/not_windows.inc'} = 'Requires not Windows' if IS_WINDOWS;
|
2021-07-02 05:00:34 +02:00
|
|
|
$skip{'include/not_aix.inc'} = 'Requires not AIX' if IS_AIX;
|
2012-02-23 07:50:11 +01:00
|
|
|
|
2018-03-09 13:05:35 +01:00
|
|
|
$skip{'main/plugin_loaderr.test'} = 'needs compiled-in innodb'
|
2012-04-17 20:28:21 +02:00
|
|
|
unless $::mysqld_variables{'innodb'} eq "ON";
|
|
|
|
|
2012-02-23 07:50:11 +01:00
|
|
|
# disable tests that use ipv6, if unsupported
|
2014-02-17 11:10:18 +01:00
|
|
|
sub ipv6_ok() {
|
|
|
|
use Socket;
|
|
|
|
return 0 unless socket my $sock, PF_INET6, SOCK_STREAM, getprotobyname('tcp');
|
2016-10-04 16:25:12 +02:00
|
|
|
$!="";
|
2016-08-25 02:21:06 +02:00
|
|
|
# eval{}, if there's no Socket::sockaddr_in6 at all, old Perl installation <5.14
|
2016-10-04 16:25:12 +02:00
|
|
|
eval { bind $sock, sockaddr_in6($::baseport, Socket::IN6ADDR_LOOPBACK) };
|
|
|
|
return $@ eq "" && $! eq ""
|
2014-02-17 11:10:18 +01:00
|
|
|
}
|
|
|
|
$skip{'include/check_ipv6.inc'} = 'No IPv6' unless ipv6_ok();
|
2012-02-23 07:50:11 +01:00
|
|
|
|
2019-06-17 13:31:11 +02:00
|
|
|
# SSL is complicated
|
|
|
|
my $ssl_lib= $::mysqld_variables{'version-ssl-library'};
|
|
|
|
my $openssl_ver= $ssl_lib =~ /OpenSSL (\S+)/ ? $1 : "";
|
2014-11-19 00:19:52 +01:00
|
|
|
|
2019-06-17 13:31:11 +02:00
|
|
|
$skip{'include/have_ssl_communication.inc'} =
|
|
|
|
$skip{'include/have_ssl_crypto_functs.inc'} = 'Requires SSL' unless $ssl_lib;
|
|
|
|
|
|
|
|
$skip{'main/openssl_6975.test'} = 'no or wrong openssl version'
|
|
|
|
unless $openssl_ver ge "1.0.1d" and $openssl_ver lt "1.1.1";
|
2023-06-19 16:20:21 +02:00
|
|
|
$skip{'main/func_kdf.combinations'} = [ $ssl_lib =~ /OpenSSL 1\.0\./ ? 'new' : 'old' ];
|
2024-09-04 02:58:59 +02:00
|
|
|
$skip{'main/tlsv13.test'} = 'does not work with OpenSSL <= 1.1.1'
|
|
|
|
unless $ssl_lib =~ /WolfSSL/ or $openssl_ver ge "3.0.0";
|
2023-06-19 16:20:21 +02:00
|
|
|
|
2021-11-22 12:29:15 +01:00
|
|
|
sub utf8_command_line_ok() {
|
|
|
|
if (IS_WINDOWS) {
|
|
|
|
# Can use UTF8 on command line since Windows 10 1903 (10.0.18362)
|
|
|
|
# or if OS codepage is set to UTF8
|
|
|
|
my($os_name, $os_major, $os_minor, $os_build, $os_id) = Win32::GetOSVersion();
|
|
|
|
if($os_major lt 10){
|
|
|
|
return 0;
|
|
|
|
} elsif($os_major gt 10 or $os_minor gt 0 or $os_build ge 18362){
|
|
|
|
return 1;
|
|
|
|
} elsif(Win32::GetACP() eq 65001) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
$skip{'include/check_utf8_cli.inc'} = 'No utf8 command line support'
|
|
|
|
unless utf8_command_line_ok();
|
|
|
|
|
|
|
|
$skip{'include/no_utf8_cli.inc'} = 'Not tested with utf8 command line support'
|
|
|
|
unless !utf8_command_line_ok();
|
2021-11-24 10:15:11 +01:00
|
|
|
|
|
|
|
$skip{'include/check_windows_admin.inc'} = 'Requires admin privileges'
|
|
|
|
unless IS_WINDOWS and Win32::IsAdminUser();
|
2020-05-05 18:10:53 +02:00
|
|
|
|
2012-02-23 07:50:11 +01:00
|
|
|
%skip;
|
2012-02-07 16:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
bless { };
|