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 {
|
|
|
|
my @combinations;
|
|
|
|
|
2017-06-21 13:44:16 +03:00
|
|
|
# disable innodb combinations for configurations that were not built
|
2012-02-07 16:22:36 +01:00
|
|
|
push @combinations, 'innodb_plugin' unless $ENV{HA_INNODB_SO};
|
2013-12-22 17:10:47 +01:00
|
|
|
|
2017-06-21 13:44:16 +03:00
|
|
|
push @combinations, 'innodb' unless $::mysqld_variables{'innodb'} eq "ON";
|
2016-10-18 16:46:53 +02:00
|
|
|
|
2017-06-21 13:44:16 +03:00
|
|
|
my %skip = ( 'include/have_innodb.combinations' => [ @combinations ]);
|
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
|
|
|
|
$skip{'include/platform.combinations'} = [ (IS_WINDOWS) ? 'unix' : 'win' ];
|
|
|
|
|
2018-10-30 13:29:19 +02:00
|
|
|
$skip{'include/maybe_debug.combinations'} =
|
|
|
|
[ defined $::mysqld_variables{'debug-dbug'} ? 'release' : 'debug' ];
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
$skip{'include/have_debug.inc'} = 'Requires debug build'
|
|
|
|
unless defined $::mysqld_variables{'debug-dbug'};
|
|
|
|
|
fixes for test failures
and small collateral changes
mysql-test/lib/My/Test.pm:
somehow with "print" we get truncated writes sometimes
mysql-test/suite/perfschema/r/digest_table_full.result:
md5 hashes of statement digests differ, because yacc token codes are different in mariadb
mysql-test/suite/perfschema/r/dml_handler.result:
host table is not ported over yet
mysql-test/suite/perfschema/r/information_schema.result:
host table is not ported over yet
mysql-test/suite/perfschema/r/nesting.result:
this differs, because we don't rewrite general log queries, and multi-statement
packets are logged as a one entry. this result file is identical to what mysql-5.6.5
produces with the --log-raw option.
mysql-test/suite/perfschema/r/relaylog.result:
MariaDB modifies the binlog index file directly, while MySQL 5.6 has a feature "crash-safe binlog index" and modifies a special "crash-safe" shadow copy of the index file and then moves it over. That's why this test shows "NONE" index file writes in MySQL and "MANY" in MariaDB.
mysql-test/suite/perfschema/r/server_init.result:
MariaDB initializes the "manager" resources from the "manager" thread, and starts this thread only when --flush-time is not 0. MySQL 5.6 initializes "manager" resources unconditionally on server startup.
mysql-test/suite/perfschema/r/stage_mdl_global.result:
this differs, because MariaDB disables query cache when query_cache_size=0. MySQL does not
do that, and this causes useless mutex locks and waits.
mysql-test/suite/perfschema/r/statement_digest.result:
md5 hashes of statement digests differ, because yacc token codes are different in mariadb
mysql-test/suite/perfschema/r/statement_digest_consumers.result:
md5 hashes of statement digests differ, because yacc token codes are different in mariadb
mysql-test/suite/perfschema/r/statement_digest_long_query.result:
md5 hashes of statement digests differ, because yacc token codes are different in mariadb
mysql-test/suite/rpl/r/rpl_mixed_drop_create_temp_table.result:
will be updated to match 5.6 when alfranio.correia@oracle.com-20110512172919-c1b5kmum4h52g0ni and anders.song@greatopensource.com-20110105052107-zoab0bsf5a6xxk2y are merged
mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result:
will be updated to match 5.6 when anders.song@greatopensource.com-20110105052107-zoab0bsf5a6xxk2y is merged
2012-09-27 20:09:46 +02:00
|
|
|
$skip{'include/have_ssl_communication.inc'} =
|
2012-10-01 13:15:29 +02:00
|
|
|
$skip{'include/have_ssl_crypto_functs.inc'} = 'Requires SSL'
|
fixes for test failures
and small collateral changes
mysql-test/lib/My/Test.pm:
somehow with "print" we get truncated writes sometimes
mysql-test/suite/perfschema/r/digest_table_full.result:
md5 hashes of statement digests differ, because yacc token codes are different in mariadb
mysql-test/suite/perfschema/r/dml_handler.result:
host table is not ported over yet
mysql-test/suite/perfschema/r/information_schema.result:
host table is not ported over yet
mysql-test/suite/perfschema/r/nesting.result:
this differs, because we don't rewrite general log queries, and multi-statement
packets are logged as a one entry. this result file is identical to what mysql-5.6.5
produces with the --log-raw option.
mysql-test/suite/perfschema/r/relaylog.result:
MariaDB modifies the binlog index file directly, while MySQL 5.6 has a feature "crash-safe binlog index" and modifies a special "crash-safe" shadow copy of the index file and then moves it over. That's why this test shows "NONE" index file writes in MySQL and "MANY" in MariaDB.
mysql-test/suite/perfschema/r/server_init.result:
MariaDB initializes the "manager" resources from the "manager" thread, and starts this thread only when --flush-time is not 0. MySQL 5.6 initializes "manager" resources unconditionally on server startup.
mysql-test/suite/perfschema/r/stage_mdl_global.result:
this differs, because MariaDB disables query cache when query_cache_size=0. MySQL does not
do that, and this causes useless mutex locks and waits.
mysql-test/suite/perfschema/r/statement_digest.result:
md5 hashes of statement digests differ, because yacc token codes are different in mariadb
mysql-test/suite/perfschema/r/statement_digest_consumers.result:
md5 hashes of statement digests differ, because yacc token codes are different in mariadb
mysql-test/suite/perfschema/r/statement_digest_long_query.result:
md5 hashes of statement digests differ, because yacc token codes are different in mariadb
mysql-test/suite/rpl/r/rpl_mixed_drop_create_temp_table.result:
will be updated to match 5.6 when alfranio.correia@oracle.com-20110512172919-c1b5kmum4h52g0ni and anders.song@greatopensource.com-20110105052107-zoab0bsf5a6xxk2y are merged
mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result:
will be updated to match 5.6 when anders.song@greatopensource.com-20110105052107-zoab0bsf5a6xxk2y is merged
2012-09-27 20:09:46 +02:00
|
|
|
unless defined $::mysqld_variables{'ssl-ca'};
|
|
|
|
|
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;
|
|
|
|
|
2018-03-09 14:05:35 +02:00
|
|
|
$skip{'main/plugin_loaderr.test'} = 'needs compiled-in innodb'
|
2012-04-17 20:28:21 +02:00
|
|
|
unless $::mysqld_variables{'innodb'} eq "ON";
|
|
|
|
|
MDEV-18565: Galera mtr-suite fails if galera library is not installed (#1243)
* MDEV-18565: Galera mtr-suite fails if galera library is not installed
Currently, running mtr with an incorrect (for example, new or
obsolete) version of wsrep_provider (for example, with the 26
version of libgalera_smm.so) leads to the failure of tests in
several suites with vague error diagnostics.
As for the galera_3nodes suite, the mtr also does not effectively
check all the prerequisites after merge with MDEV-18426 fixes.
For example, tests that using mariabackup do not check for presence
of ss and socat/nc. This is due to improper handling of relative
paths in mtr scripts.
In addition, some tests in different suites can be run without
setting the environment variables such as MTR_GALERA_TFMT, XBSTREAM,
and so on.
To eliminate all these issues, this patch makes the following changes:
1. Added auxiliary wsrep_mtr_check utility (which located in the
mysql-test/lib/My/SafeProcess subdirectory), which compares the
versions of the wsrep API that used by the server and by the wsrep
provider library, and it does this comparison safely, without
accessing the API if the versions do not match.
2. All checks related to the presence of mariabackup and utilities
that necessary for its operation transferred from the local directories
of different mtr suites (from the suite.pm files) to the main suite.pm
file. This not only reduces the amount of code and eliminates duplication
of identical code fragments, but also avoids problems due to the inability
of mtr to consider relative paths to include files when checking skip
combinations.
3. Setting the values of auxiliary environment variables that
are necessary for Galera, SST scripts and mariabackup (to work
properly) is moved to the main mysql-test-run.pl script, so as
not to duplicate this code in different suites, and to avoid
partial corrections of the same errors for different suites
(while other suites remain uncorrected).
4. Fixed duplication of the have_file_key_management.inc and
have_filekeymanagement.inc files between different suites,
these checks are also transferred to the top level.
https://jira.mariadb.org/browse/MDEV-18565
* Build without additional utility in configurations without wsrep support
2019-07-09 08:25:44 +02:00
|
|
|
$skip{'include/have_mariabackup.inc'} = 'Need mariabackup'
|
|
|
|
unless ::have_mariabackup();
|
|
|
|
|
2019-07-30 17:18:31 +02:00
|
|
|
$skip{'include/have_mariabackup.inc'} = 'Need socket statistics utility'
|
2021-05-21 03:13:37 +02:00
|
|
|
unless IS_WINDOWS || ! ::have_wsrep() || ::which("lsof") || ::which("sockstat") || ::which("ss");
|
MDEV-18565: Galera mtr-suite fails if galera library is not installed (#1243)
* MDEV-18565: Galera mtr-suite fails if galera library is not installed
Currently, running mtr with an incorrect (for example, new or
obsolete) version of wsrep_provider (for example, with the 26
version of libgalera_smm.so) leads to the failure of tests in
several suites with vague error diagnostics.
As for the galera_3nodes suite, the mtr also does not effectively
check all the prerequisites after merge with MDEV-18426 fixes.
For example, tests that using mariabackup do not check for presence
of ss and socat/nc. This is due to improper handling of relative
paths in mtr scripts.
In addition, some tests in different suites can be run without
setting the environment variables such as MTR_GALERA_TFMT, XBSTREAM,
and so on.
To eliminate all these issues, this patch makes the following changes:
1. Added auxiliary wsrep_mtr_check utility (which located in the
mysql-test/lib/My/SafeProcess subdirectory), which compares the
versions of the wsrep API that used by the server and by the wsrep
provider library, and it does this comparison safely, without
accessing the API if the versions do not match.
2. All checks related to the presence of mariabackup and utilities
that necessary for its operation transferred from the local directories
of different mtr suites (from the suite.pm files) to the main suite.pm
file. This not only reduces the amount of code and eliminates duplication
of identical code fragments, but also avoids problems due to the inability
of mtr to consider relative paths to include files when checking skip
combinations.
3. Setting the values of auxiliary environment variables that
are necessary for Galera, SST scripts and mariabackup (to work
properly) is moved to the main mysql-test-run.pl script, so as
not to duplicate this code in different suites, and to avoid
partial corrections of the same errors for different suites
(while other suites remain uncorrected).
4. Fixed duplication of the have_file_key_management.inc and
have_filekeymanagement.inc files between different suites,
these checks are also transferred to the top level.
https://jira.mariadb.org/browse/MDEV-18565
* Build without additional utility in configurations without wsrep support
2019-07-09 08:25:44 +02:00
|
|
|
|
|
|
|
$skip{'include/have_mariabackup.inc'} = 'Need socat or nc'
|
2019-07-30 17:18:31 +02:00
|
|
|
unless IS_WINDOWS || $ENV{MTR_GALERA_TFMT};
|
MDEV-18565: Galera mtr-suite fails if galera library is not installed (#1243)
* MDEV-18565: Galera mtr-suite fails if galera library is not installed
Currently, running mtr with an incorrect (for example, new or
obsolete) version of wsrep_provider (for example, with the 26
version of libgalera_smm.so) leads to the failure of tests in
several suites with vague error diagnostics.
As for the galera_3nodes suite, the mtr also does not effectively
check all the prerequisites after merge with MDEV-18426 fixes.
For example, tests that using mariabackup do not check for presence
of ss and socat/nc. This is due to improper handling of relative
paths in mtr scripts.
In addition, some tests in different suites can be run without
setting the environment variables such as MTR_GALERA_TFMT, XBSTREAM,
and so on.
To eliminate all these issues, this patch makes the following changes:
1. Added auxiliary wsrep_mtr_check utility (which located in the
mysql-test/lib/My/SafeProcess subdirectory), which compares the
versions of the wsrep API that used by the server and by the wsrep
provider library, and it does this comparison safely, without
accessing the API if the versions do not match.
2. All checks related to the presence of mariabackup and utilities
that necessary for its operation transferred from the local directories
of different mtr suites (from the suite.pm files) to the main suite.pm
file. This not only reduces the amount of code and eliminates duplication
of identical code fragments, but also avoids problems due to the inability
of mtr to consider relative paths to include files when checking skip
combinations.
3. Setting the values of auxiliary environment variables that
are necessary for Galera, SST scripts and mariabackup (to work
properly) is moved to the main mysql-test-run.pl script, so as
not to duplicate this code in different suites, and to avoid
partial corrections of the same errors for different suites
(while other suites remain uncorrected).
4. Fixed duplication of the have_file_key_management.inc and
have_filekeymanagement.inc files between different suites,
these checks are also transferred to the top level.
https://jira.mariadb.org/browse/MDEV-18565
* Build without additional utility in configurations without wsrep support
2019-07-09 08:25:44 +02:00
|
|
|
|
|
|
|
$skip{'include/have_garbd.inc'} = 'Need garbd'
|
|
|
|
unless ::have_garbd();
|
|
|
|
|
|
|
|
$skip{'include/have_file_key_management.inc'} = 'Needs file_key_management plugin'
|
|
|
|
unless $ENV{FILE_KEY_MANAGEMENT_SO};
|
|
|
|
|
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 10:21:06 +10: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-01-25 20:33:47 +01:00
|
|
|
$skip{'main/openssl_6975.test'} = 'no or wrong openssl version'
|
2015-01-09 14:00:00 +01:00
|
|
|
unless $::mysqld_variables{'version-ssl-library'} =~ /OpenSSL (\S+)/
|
2019-01-24 20:18:55 +01:00
|
|
|
and $1 ge "1.0.1d" and $1 lt "1.1.1";
|
2014-11-19 00:19:52 +01:00
|
|
|
|
2018-03-09 14:05:35 +02:00
|
|
|
$skip{'main/ssl_7937.combinations'} = [ 'x509v3' ]
|
2017-04-25 23:00:58 +02:00
|
|
|
unless $::mysqld_variables{'version-ssl-library'} =~ /OpenSSL (\S+)/
|
|
|
|
and $1 ge "1.0.2";
|
|
|
|
|
2019-05-12 17:20:23 +02:00
|
|
|
$skip{'main/ssl_verify_ip.test'} = 'x509v3 support required'
|
2019-04-24 11:15:08 +02:00
|
|
|
unless $::mysqld_variables{'version-ssl-library'} =~ /OpenSSL (\S+)/
|
|
|
|
and $1 ge "1.0.2";
|
|
|
|
|
2012-02-23 07:50:11 +01:00
|
|
|
%skip;
|
2012-02-07 16:22:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
bless { };
|