# # BUG#45214 # This test verifies if the slave I/O tread tries to reconnect to # master when it tries to get the values of the UNIX_TIMESTAMP, SERVER_ID, # COLLATION_SERVER and TIME_ZONE from master under network disconnection. # The COLLATION_SERVER and TIME_ZONE are got only on master server version 4. # So they can't be verified by test case here. # Finish the following tests by calling its common test script: # extra/rpl_tests/rpl_get_master_version_and_clock.test. source include/master-slave.inc; source include/have_debug.inc; source include/have_debug_sync.inc; # # The test is not supposed to have any binglog affairs. # Hence it's enough it to run only with one binlog format # source include/have_binlog_format_mixed.inc; connection slave; call mtr.add_suppression("Slave I/O: Master command COM_REGISTER_SLAVE failed: .*"); call mtr.add_suppression("Slave I/O: .* failed with error: Lost connection to MySQL server at 'reading initial communication packet'"); call mtr.add_suppression("Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; .*"); call mtr.add_suppression("Slave I/O thread .* register on master"); #Test case 1: Try to get the value of the UNIX_TIMESTAMP from master under network disconnection let $debug_saved= `select @@global.debug`; # set up two parameters to pass into extra/rpl_tests/rpl_get_master_version_and_clock let $dbug_sync_point= 'debug_lock.before_get_UNIX_TIMESTAMP'; let $debug_sync_action= 'now SIGNAL signal.get_unix_timestamp'; source extra/rpl_tests/rpl_get_master_version_and_clock.test; #Test case 2: Try to get the value of the SERVER_ID from master under network disconnection connection slave; let $dbug_sync_point= 'debug_lock.before_get_SERVER_ID'; let $debug_sync_action= 'now SIGNAL signal.get_server_id'; source extra/rpl_tests/rpl_get_master_version_and_clock.test; #Test case 3: Try to get the value of the MASTER_UUID from master under network disconnection connection slave; let $dbug_sync_point= 'dbug.before_get_MASTER_UUID'; let $debug_sync_action= 'now SIGNAL signal.get_master_uuid'; source extra/rpl_tests/rpl_get_master_version_and_clock.test; # # Note, due to # Bug#11765758 - 58754 # make sure the slave threads stand still (SQL thread in this context) # while @@global.debug is being updated. # eval set global debug= '$debug_saved'; #Test case 4: This test checks that the slave I/O thread refuses to start #if slave and master have the same server id. connection slave; reset master; # replicate ourselves source include/stop_slave.inc; --replace_result $SLAVE_MYPORT SLAVE_PORT eval change master to master_port=$SLAVE_MYPORT; start slave; --echo *** must be having the replicate-same-server-id IO thread error *** let $slave_io_errno= 1593; let $show_slave_io_error= 1; source include/wait_for_slave_io_error.inc; # cleanup # is not really necessary but avoids mtr post-run env check warnings SET DEBUG_SYNC= 'RESET'; # clear slave_io_error --source include/stop_slave_sql.inc RESET SLAVE; # End of tests --let $rpl_only_running_threads= 1 --source include/rpl_end.inc