summaryrefslogtreecommitdiff
path: root/mysql-test/include/show_slave_status.inc
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/include/show_slave_status.inc')
-rw-r--r--mysql-test/include/show_slave_status.inc84
1 files changed, 67 insertions, 17 deletions
diff --git a/mysql-test/include/show_slave_status.inc b/mysql-test/include/show_slave_status.inc
index d66c068e19b..67b1c987954 100644
--- a/mysql-test/include/show_slave_status.inc
+++ b/mysql-test/include/show_slave_status.inc
@@ -1,25 +1,75 @@
-# Include file to show the slave status, masking out some information
-# that varies depending on where the test is executed.
+# ==== Purpose ====
+#
+# Show selected columns of output from SHOW SLAVE STATUS.
+#
+# Note: test cases should never call SHOW SLAVE STATUS directly,
+# because that outputs more information to the query log than what is
+# needed for the property that is being tested. That would cause
+# maintenance problems, because (1) it is hard for a human to
+# understand what property is being tested; (2) the output of many of
+# the fields is non-deterministic (e.g., Slave_IO_State) or changes
+# frequently (e.g., binlog positions).
+#
+# Instead, what you want most of the time is to source one of the
+# following scripts:
+#
+# include/check_slave_no_error.inc
+# Assert that Slave_SQL_Errno = Slave_IO_Errno = 0.
+#
+# include/check_slave_is_running.inc
+# Assert that Slave_IO_Running = Slave_SQL_Running = 'Yes'.
+#
+# include/wait_for_slave_sql_error.inc
+# Wait for the SQL thread to get a given error (and assert that
+# it has this error).
+#
+# include/wait_for_slave_io_error.inc
+# Wait for the IO thread to get a given error (and assert that
+# it has this error).
+#
+# include/wait_for_slave_sql_to_stop.inc
+# include/wait_for_slave_io_to_stop.inc
+# include/wait_for_slave_to_stop.inc
+# Wait for the SQL thread, the IO thread, or both to stop (and
+# assert they stop).
+#
+# When none of the above applies, you may use this script instead.
+# However, take care so that the test never contains explicit binlog
+# coordinates. Usually you can read the binlog coordinates into a
+# variable and compare it to some other coordinates.
+#
+#
+# ==== Usage ====
+#
+# --let $status_items= Column_Name[, Column_Name[, ...]]
+# --source include/show_slave_status.inc
+#
+# Parameters:
+# $status_items
+# Set to the name of the column in the output of SHOW SLAVE STATUS
+# that you want to display. Example:
+#
+# --let $status_items= Master_SSL_Allowed
+#
+# You can show multiple columns by setting $status_items to a
+# comma-separated list. Example:
+#
+# --let $status_items= Master_Log_File, Relay_Master_Log_File
---let $_items=$status_items
-if (`SELECT "XX$status_items" = "XX"`)
+
+--let $_show_slave_status_items=$status_items
+if (!$status_items)
{
- --die 'Variable status_items is NULL'
+ --die Bug in test case: The mysqltest variable $status_items is not set.
}
---disable_query_log
---vertical_results
-while (`SELECT "XX$_items" <> "XX"`)
+while ($_show_slave_status_items)
{
- --let $_name= `SELECT SUBSTRING_INDEX('$_items', ',', 1)`
- --let $_items= `SELECT LTRIM(SUBSTRING('$_items', LENGTH('$_name') + 2))`
-
- --let $_value= query_get_value(SHOW SLAVE STATUS, $_name, 1)
+ --let $_show_slave_status_name= `SELECT SUBSTRING_INDEX('$_show_slave_status_items', ',', 1)`
+ --let $_show_slave_status_items= `SELECT LTRIM(SUBSTRING('$_show_slave_status_items', LENGTH('$_show_slave_status_name') + 2))`
- --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
- --eval SELECT "$_value" AS $_name
+ --let $_show_slave_status_value= query_get_value(SHOW SLAVE STATUS, $_show_slave_status_name, 1)
+ --let $_show_slave_status_value= `SELECT REPLACE("$_show_slave_status_value", '$MYSQL_TEST_DIR', 'MYSQL_TEST_DIR')`
+ --echo $_show_slave_status_name = '$_show_slave_status_value'
}
-
---horizontal_results
---enable_query_log