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