summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorSven Sandberg <sven.sandberg@oracle.com>2010-12-19 18:07:28 +0100
committerSven Sandberg <sven.sandberg@oracle.com>2010-12-19 18:07:28 +0100
commit09c80e12c535b080eaf914ed25dbf79546494030 (patch)
tree2b7870f89dd67878d42123d7595b06337a4f5e67 /client
parent82e887e3b244b24bf38f7368e8ce7278f40829d6 (diff)
downloadmariadb-git-09c80e12c535b080eaf914ed25dbf79546494030.tar.gz
BUG#49978: Replication tests don't clean up replication state at the end
Major replication test framework cleanup. This does the following: - Ensure that all tests clean up the replication state when they finish, by making check-testcase check the output of SHOW SLAVE STATUS. This implies: - Slave must not be running after test finished. This is good because it removes the risk for sporadic errors in subsequent tests when a test forgets to sync correctly. - Slave SQL and IO errors must be cleared when test ends. This is good because we will notice if a test gets an unexpected error in the slave threads near the end. - We no longer have to clean up before a test starts. - Ensure that all tests that wait for an error in one of the slave threads waits for a specific error. It is no longer possible to source wait_for_slave_[sql|io]_to_stop.inc when there is an error in one of the slave threads. This is good because: - If a test expects an error but there is a bug that causes another error to happen, or if it stops the slave thread without an error, then we will notice. - When developing tests, wait_for_*_to_[start|stop].inc will fail immediately if there is an error in the relevant slave thread. Before this patch, we had to wait for the timeout. - Remove duplicated and repeated code for setting up unusual replication topologies. Now, there is a single file that is capable of setting up arbitrary topologies (include/rpl_init.inc, but include/master-slave.inc is still available for the most common topology). Tests can now end with include/rpl_end.inc, which will clean up correctly no matter what topology is used. The topology can be changed with include/rpl_change_topology.inc. - Improved debug information when tests fail. This includes: - debug info is printed on all servers configured by include/rpl_init.inc - User can set $rpl_debug=1, which makes auxiliary replication files print relevant debug info. - Improved documentation for all auxiliary replication files. Now they describe purpose, usage, parameters, and side effects. - Many small code cleanups: - Made have_innodb.inc output a sensible error message. - Moved contents of rpl000017-slave.sh into rpl000017.test - Added mysqltest variables that expose the current state of disable_warnings/enable_warnings and friends. - Too many to list here: see per-file comments for details.
Diffstat (limited to 'client')
-rw-r--r--client/mysqltest.cc78
1 files changed, 64 insertions, 14 deletions
diff --git a/client/mysqltest.cc b/client/mysqltest.cc
index b0ed1d88a51..a12c56c9657 100644
--- a/client/mysqltest.cc
+++ b/client/mysqltest.cc
@@ -7990,6 +7990,14 @@ int main(int argc, char **argv)
var_set_int("$VIEW_PROTOCOL", view_protocol);
var_set_int("$CURSOR_PROTOCOL", cursor_protocol);
+ var_set_int("$ENABLED_QUERY_LOG", 1);
+ var_set_int("$ENABLED_ABORT_ON_ERROR", 1);
+ var_set_int("$ENABLED_RESULT_LOG", 1);
+ var_set_int("$ENABLED_CONNECT_LOG", 0);
+ var_set_int("$ENABLED_WARNINGS", 1);
+ var_set_int("$ENABLED_INFO", 0);
+ var_set_int("$ENABLED_METADATA", 0);
+
DBUG_PRINT("info",("result_file: '%s'",
result_file_name ? result_file_name : ""));
verbose_msg("Results saved in '%s'.",
@@ -8132,20 +8140,62 @@ int main(int argc, char **argv)
case Q_RPL_PROBE: do_rpl_probe(command); break;
case Q_ENABLE_RPL_PARSE: do_enable_rpl_parse(command); break;
case Q_DISABLE_RPL_PARSE: do_disable_rpl_parse(command); break;
- case Q_ENABLE_QUERY_LOG: disable_query_log=0; break;
- case Q_DISABLE_QUERY_LOG: disable_query_log=1; break;
- case Q_ENABLE_ABORT_ON_ERROR: abort_on_error=1; break;
- case Q_DISABLE_ABORT_ON_ERROR: abort_on_error=0; break;
- case Q_ENABLE_RESULT_LOG: disable_result_log=0; break;
- case Q_DISABLE_RESULT_LOG: disable_result_log=1; break;
- case Q_ENABLE_CONNECT_LOG: disable_connect_log=0; break;
- case Q_DISABLE_CONNECT_LOG: disable_connect_log=1; break;
- case Q_ENABLE_WARNINGS: disable_warnings=0; break;
- case Q_DISABLE_WARNINGS: disable_warnings=1; break;
- case Q_ENABLE_INFO: disable_info=0; break;
- case Q_DISABLE_INFO: disable_info=1; break;
- case Q_ENABLE_METADATA: display_metadata=1; break;
- case Q_DISABLE_METADATA: display_metadata=0; break;
+ case Q_ENABLE_QUERY_LOG:
+ disable_query_log= 0;
+ var_set_int("$ENABLED_QUERY_LOG", 1);
+ break;
+ case Q_DISABLE_QUERY_LOG:
+ disable_query_log= 1;
+ var_set_int("$ENABLED_QUERY_LOG", 0);
+ break;
+ case Q_ENABLE_ABORT_ON_ERROR:
+ abort_on_error= 1;
+ var_set_int("$ENABLED_ABORT_ON_ERROR", 1);
+ break;
+ case Q_DISABLE_ABORT_ON_ERROR:
+ abort_on_error= 0;
+ var_set_int("$ENABLED_ABORT_ON_ERROR", 0);
+ break;
+ case Q_ENABLE_RESULT_LOG:
+ disable_result_log= 0;
+ var_set_int("$ENABLED_RESULT_LOG", 1);
+ break;
+ case Q_DISABLE_RESULT_LOG:
+ disable_result_log=1;
+ var_set_int("$ENABLED_RESULT_LOG", 0);
+ break;
+ case Q_ENABLE_CONNECT_LOG:
+ disable_connect_log=0;
+ var_set_int("$ENABLED_CONNECT_LOG", 1);
+ break;
+ case Q_DISABLE_CONNECT_LOG:
+ disable_connect_log=1;
+ var_set_int("$ENABLED_CONNECT_LOG", 0);
+ break;
+ case Q_ENABLE_WARNINGS:
+ disable_warnings= 0;
+ var_set_int("$ENABLED_WARNINGS", 1);
+ break;
+ case Q_DISABLE_WARNINGS:
+ disable_warnings= 1;
+ var_set_int("$ENABLED_WARNINGS", 0);
+ break;
+ case Q_ENABLE_INFO:
+ disable_info= 0;
+ var_set_int("$ENABLED_INFO", 1);
+ break;
+ case Q_DISABLE_INFO:
+ disable_info= 1;
+ var_set_int("$ENABLED_INFO", 0);
+ break;
+ case Q_ENABLE_METADATA:
+ display_metadata= 1;
+ var_set_int("$ENABLED_METADATA", 1);
+ break;
+ case Q_DISABLE_METADATA:
+ display_metadata= 0;
+ var_set_int("$ENABLED_METADATA", 0);
+ break;
case Q_SOURCE: do_source(command); break;
case Q_SLEEP: do_sleep(command, 0); break;
case Q_REAL_SLEEP: do_sleep(command, 1); break;