MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
wait_slave_status.inc
1 # include/wait_slave_status.inc
2 #
3 # Created by Matthias Leich
4 #
5 # SUMMARY
6 #
7 # Waits until slave has reached certain state or maximum time reached.
8 #
9 # (This script will not work, when the SHOW command delivers more than one
10 # result record, because only the first record will be caught.)
11 #
12 # USAGE
13 #
14 # Set $result_pattern in test file and source this file:
15 #
16 # let $result_pattern= <pattern used for LIKE on the result of
17 # SHOW STATUS SLAVE>
18 # --include wait_slave_status.inc
19 #
20 # EXAMPLE
21 #
22 # The script rpl_until.test:
23 # ...
24 # --replace_result $MASTER_MYPORT MASTER_MYPORT
25 # --replace_column 1 # 9 # 23 # 33 #
26 # --vertical_results show slave status;
27 #
28 # outputs
29 # show slave status;
30 # Slave_IO_State #
31 # Master_Host 127.0.0.1
32 # Master_User root
33 # Master_Port MASTER_MYPORT
34 # Connect_Retry 1
35 # Master_Log_File master-bin.000001
36 # Read_Master_Log_Pos 776
37 # Relay_Log_File slave-relay-bin.000004
38 # Relay_Log_Pos #
39 # Relay_Master_Log_File master-bin.000001
40 # Slave_IO_Running Yes
41 # Slave_SQL_Running No
42 # Replicate_Do_DB
43 # Replicate_Ignore_DB
44 # Replicate_Do_Table
45 # Replicate_Ignore_Table
46 # Replicate_Wild_Do_Table
47 # Replicate_Wild_Ignore_Table
48 # Last_Errno 0
49 # Last_Error
50 # Skip_Counter 0
51 # Exec_Master_Log_Pos 319
52 # Relay_Log_Space #
53 # Until_Condition Master
54 # Until_Log_File master-bin.000001
55 # Until_Log_Pos 319
56 # Master_SSL_Allowed No
57 # Master_SSL_CA_File
58 # Master_SSL_CA_Path
59 # Master_SSL_Cert
60 # Master_SSL_Cipher
61 # Master_SSL_Key
62 # Seconds_Behind_Master #
63 #
64 # The main problem with the "show slave status;" in rpl_until is, that
65 # depending on the total test engine power and the current load caused by
66 # other processes, the expected slave status might be not reached though
67 # it will happen in maybe some seconds.
68 #
69 # The typical problem with rpl_until is that Slave_IO_Running is "No"
70 # instead of "Yes".
71 #
72 # The expected result follows the LIKE pattern:
73 #
74 # let $result_pattern= '%127.0.0.1%root%1%master-bin.000001%776%slave-relay-bin.000004%master-bin.000001%Yes%No%0%0%319%Master%master-bin.000001%319%No%';
75 #
76 # The Slave_IO_Running value is the "Yes" just after the "master-bin.000001".
77 #
78 # How to get this pattern ?
79 #
80 # Any lines "--replace_result ..." and "--replace_colum ..." just before
81 # the SHOW TABLE STATUS and of course the expected result itself
82 # show us columns where the content must be unified, because it is non
83 # deterministic or it depends on the current test environment.
84 #
85 # Unfortunately "--replace_result ..." and "--replace_colum ..." do not
86 # affect the result of our assignment let $my_val= `SHOW SLAVE STATUS`;
87 # Therefore such content must be covered by '%'.
88 #
89 # Please be careful. A more simple pattern might be dangerous, because we
90 # might get "wrong" matches. Example: There might be several "Yes" and "No"
91 # within one result row.
92 #
93 ###############################################################################
94 
95 # We do not want to print the auxiliary commands, because they are not of
96 # interest and their amount will vary depending how fast we get the
97 # desired state.
98 --disable_query_log
99 
100 # The protocol should show
101 # - the setting of $result_pattern and
102 # - that this file is sourced ,
103 # because this increases the chance to use the protocol as replay script.
104 eval SELECT "let \$result_pattern= $result_pattern ;" AS "";
105 SELECT '--source include/wait_slave_status.inc' AS "";
106 
107 let $show_type= SLAVE STATUS;
108 let $show_pattern= $result_pattern;
109 --enable_query_log
110 
111 -- source $MYSQL_TEST_DIR/suite/engines/funcs/t/wait_show_pattern.inc
112 
113 if (!$success)
114 {
115 let $message= ! Attention: Timeout in wait_slave_status.inc.
116  | Possible reasons with decreasing probability:
117  | - The LIKE pattern is wrong, because the
118  | testcase was altered or the layout of the
119  | SHOW SLAVE STATUS result set changed.
120  | - There is a new bug within the replication.
121  | - We met an extreme testing environment and timeout is
122  | too small.;
123 --source include/show_msg80.inc
124 --echo DEBUG INFO START (wait_slave_status.inc):
125 --echo $result_pattern
126 --vertical_results
127 show slave status;
128 --echo DEBUG INFO END
129 }