1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
# ==== Purpose ====
#
# Suppress one or more errors or warnings, telling check-testcase that
# they are expected. This executes mtr.suppress_warning once on each
# server, and disables/re-enables binary logging.
#
# ==== Usage ====
#
# --let $messages =
# message1
# message2
# ...
# ;
# [--let $suppress_on_current_connection = 1]
# [--let $suppress_silent = 1]
# [--let $suppress_mode = ADD_SUPPRESSIONS | IGNORE_GLOBAL_SUPPRESSIONS]
# --source include/suppress_messages.inc
#
# Parameters:
#
# $messages
# List of messages to suppress. Each message should be a regular
# expression, and appear on a new line. Empty lines are allowed.
# Because of a bug in mtr, the number of quote characters must be
# even, or else mtr fails to parse the 'let' statement. If the
# message contains an odd number of quote characters - e.g.,
# because of words like "don't" - replace the quote by a wildcard,
# i.e., by a single dot character ('.').
#
# $suppress_on_current_connection
# By default, the script executes as follows:
# - if rpl_init.inc has been sourced, adds the suppressions on every
# node in the toplogy (on the server_N connection).
# - otherwise, adds the suppressions only on the current connection.
# If this parameter is set, it adds the suppression only on the current
# connection, even if rpl_init has been sourced.
#
# $suppress_mode
# If $suppress_mode is not set, or if it is set to
# ADD_SUPPRESSIONS, this script adds new suppressions. If
# $suppress_mode is set to IGNORE_GLOBAL_SUPPRESSIONS, this script
# instead un-suppresses all messages that match the patterns, in
# case they appear as global suppressions. This is useful if a
# test needs to use assert_error_log.inc to check for a warning
# that is suppressed globally.
--let $include_filename = suppress_messages.inc
--source include/begin_include_file.inc
if (!$rpl_debug) {
--disable_query_log
}
--let $_sm_suppress_mode = UNKNOWN
if ($suppress_mode == '') {
--let $_sm_suppress_mode = ADD_SUPPRESSIONS
--let $_sm_action = suppresses
}
if ($suppress_mode == ADD_SUPPRESSIONS) {
--let $_sm_suppress_mode = ADD_SUPPRESSIONS
--let $_sm_action = suppresses
}
if ($suppress_mode == IGNORE_GLOBAL_SUPPRESSIONS) {
--let $_sm_suppress_mode = IGNORE_GLOBAL_SUPPRESSIONS
--let $_sm_action = un-suppresses
}
if ($_sm_suppress_mode == UNKNOWN) {
--echo !!!ERROR IN TEST: suppress_mode=<$suppress_mode>
--die !!!ERROR IN TEST: $suppress_mode was set to an unknown value.
}
--let $_sm_server_number = 1
--let $_sm_last_server_number = 1
--let $_sm_change_connection = 0
if ($rpl_inited) {
if (!$suppress_on_current_connection) {
--let $_sm_server_number = 1
--let $_sm_last_server_number = $rpl_server_count
--let $_sm_change_connection = 1
}
if ($suppress_on_current_connection) {
--let $_sm_server_number = `SELECT @@global.server_id`
--let $_sm_last_server_number = $_sm_server_number
}
}
--let $_sm_message_list = escape(\',$messages)
--let $_sm_message_list = `SELECT REPLACE('$_sm_message_list', '\r', '\n')`
--let $_sm_message_list = escape(\',$_sm_message_list)
while ($_sm_server_number <= $_sm_last_server_number) {
if ($_sm_change_connection) {
--let $rpl_connection_name = server_$_sm_server_number
--source include/rpl_connection.inc
}
--source include/disable_binlog.inc
--let $_sm_message_tail = $_sm_message_list
while ($_sm_message_tail) {
--let $_sm_message = `SELECT SUBSTRING_INDEX('$_sm_message_tail', '\n', 1)`
# Skip empty lines.
if ($_sm_message) {
if (!$suppress_silent) {
--echo # Connection $_sm_server_number $_sm_action message <$_sm_message>.
}
--let $_sm_escaped_message = escape(\',$_sm_message)
if ($_sm_suppress_mode == ADD_SUPPRESSIONS) {
eval CALL mtr.add_suppression('$_sm_escaped_message');
}
if ($_sm_suppress_mode == IGNORE_GLOBAL_SUPPRESSIONS) {
eval INSERT INTO mtr.test_ignored_global_suppressions VALUES ('$_sm_escaped_message');
}
}
--let $_sm_message_tail = `SELECT SUBSTRING('$_sm_message_tail', LENGTH('$_sm_escaped_message') + 2)`
--let $_sm_message_tail = escape(\',$_sm_message_tail)
}
--source include/restore_binlog.inc
--inc $_sm_server_number
}
--let $include_filename = suppress_messages.inc
--source include/end_include_file.inc
|