1# galera_diff.inc 2# =============== 3# 4# Description 5# ----------- 6# Compare the output of the given statement on all the nodes of the cluster. 7# 8# Parameters 9# ---------- 10# $galera_diff_statement 11# Statement for which the output would be compared. 12# 13# $galera_diff_database 14# Database against which the above statement would be executed. 15# (Default : test) 16# 17# $galera_diff_servers 18# Comma separated list of servers to executed the diff statement on. If not 19# set, a list of servers will be generated based on $galera_cluster_size. 20# 21# $galerra_debug 22# Print debug information. 23# 24 25if (!$galera_diff_statement) 26{ 27 --die ERROR IN TEST: $galera_diff_statement must be set before sourcing include/galera_diff.inc 28} 29 30--let $_galera_diff_database = $galera_diff_database 31if (!$_galera_diff_database) 32{ 33 --let $_galera_diff_database = test 34} 35 36--let $_galera_diff_servers= $galera_diff_servers 37if (!$_galera_diff_servers) 38{ 39 --let $_i= $galera_cluster_size 40 --let $_galera_diff_servers= 41 while ($_i) 42 { 43 --let $_galera_diff_servers= $_i,$_galera_diff_servers 44 --dec $_i 45 } 46} 47if ($galera_debug) 48{ 49 --echo \$galera_diff_servers= '$_galera_diff_servers' 50} 51 52if (!$galera_debug) 53{ 54 --disable_query_log 55} 56 57# Generate file containing $galera_diff_statement. We don't pass the 58# statement on the command line, because it would be subject to shell 59# substitutions. 60--let $write_to_file= GENERATE 61--let $write_var= $galera_diff_statement 62--source include/write_var_to_file.inc 63--let $_galera_diff_statement_file= $write_to_file 64 65if (!$galera_debug) 66{ 67 --enable_query_log 68} 69 70# Compare all servers. 71--let $_galera_diff_first= 1 72while ($_galera_diff_servers) 73{ 74 # Set $_galera_diff_server_i to the first number in the list 75 --let $_galera_diff_server_i= `SELECT SUBSTRING_INDEX('$_galera_diff_servers', ',', 1)` 76 # Remove $_galera_diff_server_i from the list 77 --let $_galera_diff_servers= `SELECT SUBSTRING('$_galera_diff_servers', LENGTH('$_galera_diff_server_i') + 2)` 78 79 # Execute statement 80 --let $_galera_diff_file= $MYSQLTEST_VARDIR/tmp/_galera_diff_server-$_galera_diff_server_i.tmp 81 --exec $MYSQL --defaults-group-suffix=.$_galera_diff_server_i $_galera_diff_database < $_galera_diff_statement_file > $_galera_diff_file 82 83 # Compare 84 if (!$_galera_diff_first) 85 { 86 if ($galera_debug) 87 { 88 --echo diffing $_galera_diff_file and $_galera_diff_prev_file 89 } 90 --diff_files $_galera_diff_file $_galera_diff_prev_file 91 --remove_file $_galera_diff_prev_file 92 } 93 --let $_galera_diff_prev_file= $_galera_diff_file 94 --let $_galera_diff_first= 0 95} 96 97# Cleanup 98--remove_file $_galera_diff_prev_file 99--remove_file $_galera_diff_statement_file 100 101