List:Commits« Previous MessageNext Message »
From:Lars Thalmann Date:March 21 2006 4:41pm
Subject:bk commit into 5.1 tree (lars:1.2196)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of lthalmann. When lthalmann does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2196 06/03/21 17:40:51 lars@stripped +3 -0
  Made rpl_flushlog_loop use wait_slave_status instead of sleep.
  This to save 5 seconds of test time.
  More test to follow. :-)

  mysql-test/t/rpl_flushlog_loop.test
    1.16 06/03/21 17:40:40 lars@stripped +23 -6
    Make test use wait_slave_status instead of sleep

  mysql-test/r/rpl_flushlog_loop.result
    1.26 06/03/21 17:40:39 lars@stripped +38 -3
    Updated result file

  mysql-test/include/wait_slave_status.inc
    1.1 06/03/21 17:30:23 lars@stripped +158 -0

  mysql-test/include/wait_slave_status.inc
    1.0 06/03/21 17:30:23 lars@stripped +0 -0
    BitKeeper file /users/lthalmann/bk/mysql-5.1-new/mysql-test/include/wait_slave_status.inc

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	lars
# Host:	dl145j.mysql.com
# Root:	/users/lthalmann/bk/mysql-5.1-new
--- New file ---
+++ mysql-test/include/wait_slave_status.inc	06/03/21 17:30:23
# include/wait_slave_status.inc
#
# Created by Matthias Leich
#
# SUMMARY
#
#    Waits until slave has reached certain state or maximum time reached.
#
#    (This script will not work, when the SHOW command delivers more than one 
#    result record, because only the first record will be caught.)
#
# USAGE
#
#    Set $result_pattern in test file and source this file:
#
#      let $result_pattern= <pattern used for LIKE on the result of
#                           SHOW STATUS SLAVE>
#      --include wait_slave_status.inc
#
# EXAMPLE
#
#    The script rpl_until.test:
#       ...
#       --replace_result $MASTER_MYPORT MASTER_MYPORT
#       --replace_column 1 # 9 # 23 # 33 #
#       --vertical_results show slave status;
#
#    outputs
#       show slave status;
#       Slave_IO_State  #
#       Master_Host     127.0.0.1
#       Master_User     root
#       Master_Port     MASTER_MYPORT
#       Connect_Retry   1
#       Master_Log_File master-bin.000001
#       Read_Master_Log_Pos     776
#       Relay_Log_File  slave-relay-bin.000004
#       Relay_Log_Pos   #
#       Relay_Master_Log_File   master-bin.000001
#       Slave_IO_Running        Yes
#       Slave_SQL_Running       No
#       Replicate_Do_DB
#       Replicate_Ignore_DB
#       Replicate_Do_Table
#       Replicate_Ignore_Table
#       Replicate_Wild_Do_Table
#       Replicate_Wild_Ignore_Table
#       Last_Errno      0
#       Last_Error
#       Skip_Counter    0
#       Exec_Master_Log_Pos     319
#       Relay_Log_Space #
#       Until_Condition Master
#       Until_Log_File  master-bin.000001
#       Until_Log_Pos   319
#       Master_SSL_Allowed      No
#       Master_SSL_CA_File
#       Master_SSL_CA_Path
#       Master_SSL_Cert
#       Master_SSL_Cipher
#       Master_SSL_Key
#       Seconds_Behind_Master   #
#
# The main problem with the "show slave status;" in rpl_until is, that
# depending on the total test engine power and the current load caused by
# other processes, the expected slave status might be not reached though
# it will happen in maybe some seconds.
#
# The typical problem with rpl_until is that Slave_IO_Running is "No"
# instead of "Yes".
#
# The expected result follows the LIKE pattern:
#
#   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%';
#
# The Slave_IO_Running value is the "Yes" just after the "master-bin.000001".
#
# How to get this pattern ?
#
#     Any lines "--replace_result ..." and "--replace_colum ..." just before
#     the SHOW TABLE STATUS and of course the expected result itself
#     show us columns where the content must be unified, because it is non
#     deterministic or it depends on the current test environment.
#
#     Unfortunately "--replace_result ..." and "--replace_colum ..." do not
#     affect the result of our assignment    let $my_val= `SHOW SLAVE STATUS`;
#     Therefore such content must be covered by '%'.
#
#     Please be careful. A more simple pattern might be dangerous, because we
#     might get "wrong" matches. Example: There might be several "Yes" and "No"
#     within one result row.
#
###############################################################################

# We do not want to print the auxiliary commands, because they are not of
# interest and their amount will vary depending how fast we get the
# desired state.
--disable_query_log

# The protocol should show
# - the setting of $result_pattern   and
# - that this file is sourced           ,
# because this increases the chance to use the protocol as replay script.
eval SELECT "let \$result_pattern= $result_pattern ;" AS "";
SELECT '--source include/wait_slave_status.inc' AS "";

# We accept to wait in maximum 30 seconds.
let $max_wait= 30;
while ($max_wait)
{
    let $my_val= `SHOW SLAVE STATUS`;
    # Now we have the first record of the SHOW result set as one fat string
    # within the variable  $my_val.

    eval SET @my_val = '$my_val';
    # DEBUG eval SELECT @my_val AS "response to SHOW SLAVE STATUS";

    eval SELECT @my_val LIKE $result_pattern INTO @success;
    # @success is     '1' if we have a match
    #                 '0' if we have no match
    # DEBUG SELECT @success;

    let $success= `SELECT @success`;
    let $no_success= `SELECT @success = 0`;
    if ($success)
    {
       # We reached the expected result and want to jump out of the loop
       # without unneeded sleeps.
       # Attention: Do not set $max_wait to 0, because "while" with negative value
       #            does not work.
       let $max_wait= 1;
    }
    if ($no_success)
    {
       # We did not reach the expected result and will have to sleep again
       # or jump out of the loop, when max_wait is exhausted.
       sleep 1;
    }
    dec $max_wait;
}
--enable_query_log
if ($no_success)
{
let $message= ! Attention: Timeout in wait_slave_status.inc.
              |       Possible reasons with decreasing probability:
              |       - The LIKE pattern ($result_pattern) is wrong, because the
              |         testcase was altered or the layout of the
              |         SHOW SLAVE STATUS result set changed.
              |       - There is a new bug within the replication.
              |       - We met an extreme testing environment and $max_wait is
              |         too small.;
--source include/show_msg80.inc
--echo DEBUG INFO START (wait_slave_status.inc):
--echo $result_pattern
--vertical_results
show slave status;
--echo DEBUG INFO END
}


--- 1.25/mysql-test/r/rpl_flushlog_loop.result	2005-12-22 05:10:58 +01:00
+++ 1.26/mysql-test/r/rpl_flushlog_loop.result	2006-03-21 17:40:39 +01:00
@@ -12,7 +12,42 @@
 change master to master_host='127.0.0.1',master_user='root',
 master_password='',master_port=SLAVE_PORT;
 start slave;
+
+let $result_pattern= '%127.0.0.1%root%slave-bin.000001%slave-bin.000001%Yes%Yes%0%0%None%' ;
+
+--source include/wait_slave_status.inc
 flush logs;
-show slave status;
-Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
-#	127.0.0.1	root	SLAVE_PORT	60	slave-bin.000001	212	#	#	slave-bin.000001	Yes	Yes				#			0		0	212	#	None		0	No						#
+SHOW SLAVE STATUS;
+Slave_IO_State	#
+Master_Host	127.0.0.1
+Master_User	root
+Master_Port	SLAVE_PORT
+Connect_Retry	60
+Master_Log_File	slave-bin.000001
+Read_Master_Log_Pos	212
+Relay_Log_File	#
+Relay_Log_Pos	#
+Relay_Master_Log_File	slave-bin.000001
+Slave_IO_Running	Yes
+Slave_SQL_Running	Yes
+Replicate_Do_DB	
+Replicate_Ignore_DB	
+Replicate_Do_Table	
+Replicate_Ignore_Table	#
+Replicate_Wild_Do_Table	
+Replicate_Wild_Ignore_Table	
+Last_Errno	0
+Last_Error	
+Skip_Counter	0
+Exec_Master_Log_Pos	212
+Relay_Log_Space	#
+Until_Condition	None
+Until_Log_File	
+Until_Log_Pos	0
+Master_SSL_Allowed	No
+Master_SSL_CA_File	
+Master_SSL_CA_Path	
+Master_SSL_Cert	
+Master_SSL_Cipher	
+Master_SSL_Key	
+Seconds_Behind_Master	#

--- 1.15/mysql-test/t/rpl_flushlog_loop.test	2005-12-22 05:10:59 +01:00
+++ 1.16/mysql-test/t/rpl_flushlog_loop.test	2006-03-21 17:40:40 +01:00
@@ -2,10 +2,9 @@
 # in case of bi-directional replication
 -- source include/master-slave.inc
 
-# This test is dependent on the actual events written to the binary
-# log. To not break statement-based testing, we only run this test
-# under statement-based logging.
-
+#
+#  Start replication master -> slave 
+#
 connection slave;
 --disable_warnings
 stop slave;
@@ -14,6 +13,10 @@
 eval change master to master_host='127.0.0.1',master_user='root',
  master_password='',master_port=$MASTER_MYPORT;
 start slave;
+
+#
+#  Start replication slave -> master
+#
 connection master;
 --disable_warnings
 stop slave;
@@ -22,9 +25,23 @@
 eval change master to master_host='127.0.0.1',master_user='root',
  master_password='',master_port=$SLAVE_MYPORT;
 start slave;
-sleep 5;
+
+#
+#  Wait for start of slave IO and SQL threads
+#
+let $result_pattern= '%127.0.0.1%root%slave-bin.000001%slave-bin.000001%Yes%Yes%0%0%None%';
+--source include/wait_slave_status.inc
+
+#
+#  Flush logs of slave
+#
 flush logs;
 sleep 5;
+
+#
+#  Show status of slave
+#
 --replace_result $SLAVE_MYPORT SLAVE_PORT
 --replace_column 1 # 8 # 9 # 16 # 23 # 33 #
-show slave status;
+--vertical_results
+SHOW SLAVE STATUS;
Thread
bk commit into 5.1 tree (lars:1.2196)Lars Thalmann21 Mar