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.pl58
1 files changed, 58 insertions, 0 deletions
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index c2d44bf4db1..61f9538c1b4 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -135,6 +135,7 @@ my $opt_start;
my $opt_start_dirty;
my $opt_start_exit;
my $start_only;
+my $file_wsrep_provider;
END {
if ( defined $opt_tmpdir_pid and $opt_tmpdir_pid == $$ )
@@ -412,6 +413,7 @@ sub main {
check_ndbcluster_support();
check_ssl_support();
check_debug_support();
+ check_wsrep_support();
if (!$opt_suites) {
$opt_suites= join ',', collect_default_suites(@DEFAULT_SUITES);
@@ -2398,6 +2400,24 @@ sub environment_setup {
}
# ----------------------------------------------------
+ # Setup env for wsrep
+ # ----------------------------------------------------
+ if (have_wsrep()) {
+ if (defined $ENV{'WSREP_PROVIDER'} ) {
+ # Nothing needs to be done! WSREP_PROVIDER env is already set & checked;
+ # will be used.
+ } else {
+ $ENV{'WSREP_PROVIDER'}= $file_wsrep_provider;
+ }
+
+ if ($ENV{'WSREP_PROVIDER'} ne "") {
+ mtr_verbose("WSREP_PROVIDER set to $ENV{'WSREP_PROVIDER'}");
+ } else {
+ mtr_verbose("WSREP_PROVIDER isn't available");
+ }
+ }
+
+ # ----------------------------------------------------
# mysql clients
# ----------------------------------------------------
$ENV{'MYSQL_CHECK'}= client_arguments("mysqlcheck");
@@ -3174,6 +3194,40 @@ sub ndbcluster_start ($) {
return 0;
}
+sub have_wsrep() {
+ my $wsrep_on= $mysqld_variables{'wsrep-on'};
+ return defined $wsrep_on
+}
+
+sub check_wsrep_provider_env {
+ if (defined $ENV{'WSREP_PROVIDER'}) {
+ if (mtr_file_exists($ENV{'WSREP_PROVIDER'}) eq "") {
+ mtr_error("WSREP_PROVIDER env set to an invalid path");
+ return 0; # error
+ }
+ # Ok, WSREP_PROVIDER set to a valid path.
+ return 1;
+ }
+ # Ok, WSREP_PROVIDER not defined.
+ return 2;
+}
+
+sub check_wsrep_support() {
+ if (have_wsrep())
+ {
+ mtr_report(" - binaries built with wsrep patch");
+
+ $file_wsrep_provider=
+ mtr_file_exists("/usr/lib/galera/libgalera_smm.so",
+ "/usr/lib64/galera/libgalera_smm.so");
+
+ if ((check_wsrep_provider_env() == 1) || ($file_wsrep_provider ne "")) {
+ # Add galera test suites
+ mtr_report(" - adding wsrep, galera to default test suites");
+ push @DEFAULT_SUITES, qw(wsrep galera);
+ }
+ }
+}
sub mysql_server_start($) {
my ($mysqld, $tinfo) = @_;
@@ -4837,6 +4891,10 @@ sub extract_warning_lines ($$) {
qr|Plugin 'FEEDBACK' registration as a INFORMATION SCHEMA failed|,
qr|'log-bin-use-v1-row-events' is MySQL 5.6 compatible option|,
qr|InnoDB: Setting thread \d+ nice to \d+ failed, current nice \d+, errno 13|, # setpriority() fails under valgrind
+ # Galera-related warnings.
+ qr|WSREP:.*down context.*|,
+ qr|WSREP: Failed to send state UUID:.*|,
+ qr|WSREP: wsrep_sst_receive_address.*|,
);
my $matched_lines= [];