# Test for 
# Bug #33931  	assertion at write_ignored_events_info_to_relay_log if init_slave_thread() fails
# Bug #33932  	assertion at handle_slave_sql if init_slave_thread() fails

source include/have_debug.inc;
source include/master-slave.inc;

connection slave;

# Add suppression for expected warnings in slaves error log
call mtr.add_suppression("Failed during slave I/O thread initialization");
call mtr.add_suppression("Slave SQL.*Failed during slave thread initialization.* 1593");

--source include/stop_slave.inc
reset slave;

# Set debug flags on slave to force errors to occur
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";

--disable_query_log
--replace_regex /[0-9]{4}/####/
eval CHANGE MASTER TO MASTER_USER='root',
                      MASTER_CONNECT_RETRY=1,
                      MASTER_HOST='127.0.0.1',
                      MASTER_PORT=$MASTER_MYPORT;
--enable_query_log

start slave;

#
# slave is going to stop because of emulated failures
# but there won't be any crashes nor asserts hit.
#

# Wait for the SQL thread error
--let $slave_sql_errno= convert_error(ER_SLAVE_FATAL_ERROR)
--let $show_slave_sql_error= 1
--source include/wait_for_slave_sql_error.inc

# In 5.6 servers, there would be no I/O thread failure reported
# on SHOW SLAVE STATUS. We should just wait for the IO thread to stop.
--source include/wait_for_slave_io_to_stop.inc
#
# Cleanup
#
SET GLOBAL debug="";

# Clear Last_SQL_Error
RESET SLAVE;

--let $rpl_only_running_threads= 1
--source include/rpl_end.inc
