summaryrefslogtreecommitdiff
path: root/mysql-test/include
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/include')
-rw-r--r--mysql-test/include/galera_cluster.inc23
-rw-r--r--mysql-test/include/wsrep_wait_condition.inc23
-rw-r--r--mysql-test/include/wsrep_wait_disconnect.inc20
-rw-r--r--mysql-test/include/wsrep_wait_membership.inc10
4 files changed, 52 insertions, 24 deletions
diff --git a/mysql-test/include/galera_cluster.inc b/mysql-test/include/galera_cluster.inc
index 7f76ea59c7f..48b5bc631db 100644
--- a/mysql-test/include/galera_cluster.inc
+++ b/mysql-test/include/galera_cluster.inc
@@ -3,16 +3,29 @@
#
# Description
# -----------
-# Configure galera cluster with 2 nodes.
+# Configure galera cluster with $galera_cluster_size (default: 2) nodes.
#
---let $galera_cluster_size = 2
+if (!$galera_cluster_size)
+{
+# --die ERROR IN TEST: $galera_cluster_size variable must be set
+ --let $galera_cluster_size = 2
+}
+
--source include/galera_init.inc
--source include/have_innodb.inc
--source include/galera_wait_ready.inc
---connection node_2
---source include/galera_wait_ready.inc
---source include/have_innodb.inc
+
+--let $_galera_node= $galera_cluster_size
+
+while ($_galera_node != 1)
+{
+ --connection node_$_galera_node
+ --source include/galera_wait_ready.inc
+ --source include/have_innodb.inc
+
+ --dec $_galera_node
+}
--connection node_1
diff --git a/mysql-test/include/wsrep_wait_condition.inc b/mysql-test/include/wsrep_wait_condition.inc
new file mode 100644
index 00000000000..89b310475eb
--- /dev/null
+++ b/mysql-test/include/wsrep_wait_condition.inc
@@ -0,0 +1,23 @@
+# Helper script to allow to wait for condition on a node that may become
+# non-primary. It attempts to preserve wsrep_sync_wait and wsrep_on session
+# variables.
+#
+# We are forced to restore a global value for the session wsrep_sync_wait
+# here because we can not always issue a SELECT query to obtain the original
+# value and then restore it
+
+disable_query_log;
+SET SESSION wsrep_sync_wait = 8;
+let $restore_wsrep_sync_wait = `SELECT @@GLOBAL.wsrep_sync_wait`;
+let $restore_wsrep_on = `SELECT @@wsrep_on`;
+SET SESSION wsrep_on = OFF;
+
+--source include/wait_condition.inc
+
+if ($restore_wsrep_on == 1)
+{
+ --eval SET SESSION wsrep_on = ON
+}
+--eval SET SESSION wsrep_sync_wait = $restore_wsrep_sync_wait
+
+enable_query_log;
diff --git a/mysql-test/include/wsrep_wait_disconnect.inc b/mysql-test/include/wsrep_wait_disconnect.inc
index 740fc0d9426..504e8069cba 100644
--- a/mysql-test/include/wsrep_wait_disconnect.inc
+++ b/mysql-test/include/wsrep_wait_disconnect.inc
@@ -1,20 +1,2 @@
let $wait_condition = SELECT 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready' AND VARIABLE_VALUE = 'OFF';
-# since this is called until AFTER provider disconnects,we need to allow
-# queries in non-prim
-#
-# We are also forced to use a hard-coded value for wsrep_sync_wait here because
-# we can not issue a SELECT query to obtain the original value and then restore
-# it
-disable_query_log;
-SET SESSION wsrep_sync_wait = 7;
---let $restore_wsrep_on = `SHOW VARIABLES WHERE Variable_name = 'wsrep_on' AND Value = 'ON'`
-SET SESSION wsrep_on = OFF;
-
---source include/wait_condition.inc
-
-if ($restore_wsrep_on != "")
-{
- --eval SET SESSION wsrep_on = ON
-}
-SET SESSION wsrep_sync_wait = 15;
-enable_query_log;
+--source include/wsrep_wait_condition.inc
diff --git a/mysql-test/include/wsrep_wait_membership.inc b/mysql-test/include/wsrep_wait_membership.inc
new file mode 100644
index 00000000000..8bc1920ddfb
--- /dev/null
+++ b/mysql-test/include/wsrep_wait_membership.inc
@@ -0,0 +1,10 @@
+# Waits for N members in the cluster
+#
+# Usage:
+# --let $members=1
+# --source wsrep_wait_membership.inc
+#
+
+let $wait_condition = SELECT VARIABLE_VALUE = $members FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
+
+--source include/wsrep_wait_condition.inc