~capttofu/drizzle/federated_schema

« back to all changes in this revision

Viewing changes to mysql-test/include/wait_slave_status.inc

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 include/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
}