summaryrefslogtreecommitdiff
path: root/mysql-test/suite/galera_3nodes/t/galera_garbd.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/galera_3nodes/t/galera_garbd.test')
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_garbd.test47
1 files changed, 43 insertions, 4 deletions
diff --git a/mysql-test/suite/galera_3nodes/t/galera_garbd.test b/mysql-test/suite/galera_3nodes/t/galera_garbd.test
index 2d03e8897b9..fa3cba0ab16 100644
--- a/mysql-test/suite/galera_3nodes/t/galera_garbd.test
+++ b/mysql-test/suite/galera_3nodes/t/galera_garbd.test
@@ -7,9 +7,20 @@
--source include/have_innodb.inc
--source include/big_test.inc
+# Save galera ports
+--connection node_1
+--source suite/galera/include/galera_base_port.inc
+--let $NODE_GALERAPORT_1 = $_NODE_GALERAPORT
+
+--connection node_2
+--source suite/galera/include/galera_base_port.inc
+--let $NODE_GALERAPORT_2 = $_NODE_GALERAPORT
+
--let $galera_connection_name = node_3
--let $galera_server_number = 3
--source include/galera_connect.inc
+--source suite/galera/include/galera_base_port.inc
+--let $NODE_GALERAPORT_3 = $_NODE_GALERAPORT
# Save original auto_increment_offset values.
--let $node_1=node_1
@@ -28,9 +39,33 @@
--source include/wait_condition.inc
--echo Starting garbd ...
---let $gp1 = `SELECT SUBSTR(@@wsrep_provider_options, LOCATE('base_port =', @@wsrep_provider_options) + LENGTH('base_port = '))`
---let $galera_port_1 = `SELECT SUBSTR('$gp1', 1, LOCATE(';', '$gp1') - 1)`
---exec `dirname $WSREP_PROVIDER`/../../bin/garb/garbd --address "gcomm://127.0.0.1:$galera_port_1" --group my_wsrep_cluster --options 'base_port=$galera_port_3' > $MYSQL_TMP_DIR/garbd.log 2>&1 &
+--perl
+use strict;
+use File::Basename;
+my $provider_dirname = dirname($ENV{WSREP_PROVIDER});
+# Array of possible garbd executable paths to be checked
+# base is $provider_dirname
+my @garbd_executable_search = (
+ # WSREP_PROVIDER is set in galera repository
+ ${provider_dirname}."/garb/garbd",
+ # MariaDB (PR #1147)
+ ${provider_dirname}."/../../bin/garb/garbd"
+);
+my $garbd_executable = '';
+foreach my $garbd (@garbd_executable_search) {
+ if (-f $garbd) {
+ $garbd_executable= $garbd;
+ }
+}
+if ($garbd_executable eq '') {
+ die("Didn't locate garbd\n");
+}
+die unless open(FILE, ">$ENV{MYSQLTEST_VARDIR}/tmp/garbd.inc");
+print FILE "--exec $garbd_executable --address \"gcomm://127.0.0.1:\$NODE_GALERAPORT_1\" --group my_wsrep_cluster --options 'base_port=\$NODE_GALERAPORT_3' > \$MYSQL_TMP_DIR/garbd.log 2>&1 &\n";
+close(FILE);
+EOF
+--source $MYSQLTEST_VARDIR/tmp/garbd.inc
+--remove_file $MYSQLTEST_VARDIR/tmp/garbd.inc
--sleep 5
@@ -44,7 +79,10 @@ INSERT INTO t1 VALUES (1);
SELECT COUNT(*) = 1 FROM t1;
--echo Killing garbd ...
---exec pkill --oldest --full garbd.*$galera_port_3
+# FreeBSD's /bin/pkill only supports short versions of the options:
+# -o Select only the oldest (least recently started)
+# -f Match against full argument lists
+--exec pkill -o -f garbd.*$NODE_GALERAPORT_3
--sleep 5
@@ -61,6 +99,7 @@ DROP TABLE t1;
--echo Restarting node #3 to satisfy MTR's end-of-test checks
--connection node_3
+let $restart_noprint=2;
--source include/start_mysqld.inc
# Restore original auto_increment_offset values.