config root man

Current Path : /usr/opt/mysql57/mysql-test/suite/group_replication/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //usr/opt/mysql57/mysql-test/suite/group_replication/t/gr_recovery_connection_options.test

################################################################################
# Recovery donor connection options test
# This test checks the user options used for donor connection during recovery.
#
# Test:
#   0) The test requires three servers.
#   1) Start server1 to boot the group. Insert some data for recovery. Create
#      the recovery user for the donor connection.
#   2) Start server2 after changing the connection credentials using the
#      change master for the server. See that the recovery is successful.
#   3) On server3 set incorrect password. Keep recovery retry count to low.
#   4) Set DEBUG point to verify member is in RECOVERY state. Start server3.
#      Check that members is recovering. Then, recovery failed causing the
#      member to go to ERROR state.
#   5) On server3 set master_user to empty user.
#   6) Set DEBUG point to verify member is in RECOVERY state. Start server3.
#      Check that members is recovering. Then, recovery failed causing the
#      member to go to ERROR state.
#   7) On server3 set master_user to non-existing user.
#   8) Set DEBUG point to verify member is in RECOVERY state. Start server3.
#      Check that members is recovering. Then, recovery failed causing the
#      member to go to ERROR state.
#   9) Do the cleanup in the end.
################################################################################

--source include/big_test.inc
--source include/have_debug_sync.inc
--let $group_replication_group_name= b5eb4110-a3a2-11e3-a5e2-0800200c9a66
--source ../inc/have_group_replication_plugin.inc

--let $rpl_skip_group_replication_start= 1
--let $rpl_server_count= 3
--source ../inc/group_replication.inc

--let $recovery_user= recovery_user
--let $recovery_password= recovery_password
--let $recovery_bad_password= recovery_bad_password

--echo #
--echo # Start the donor member
--echo #

--connection server1
--source ../inc/start_and_bootstrap_group_replication.inc

--let $group_replication_number_of_members= 1
--source ../inc/gr_wait_for_number_of_members.inc

#insert some data
CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);

--echo #
--echo # Install a rpl user for the donor connection
--echo #

--eval CREATE USER "$recovery_user" IDENTIFIED BY "$recovery_password"
--eval GRANT REPLICATION SLAVE ON *.* TO "$recovery_user"
FLUSH PRIVILEGES;

--connection server2

--echo #
--echo # Set valid options
--echo #

--disable_warnings
--eval CHANGE MASTER TO MASTER_USER='$recovery_user', MASTER_PASSWORD='$recovery_password' FOR CHANNEL 'group_replication_recovery';
--enable_warnings

--echo #
--echo # Start the joiner member with the given credentials and check if it is OK
--echo #

--source include/start_group_replication.inc

let $assert_text= On the recovered member, the table should contain 1 elements;
let $assert_cond= [select count(*) from t1] = 1;
source include/assert.inc;

--echo #
--echo # Create a new member and give it a bad password, watching it fail
--echo #

SET @debug_save= @@GLOBAL.DEBUG;

--connection server3
set session sql_log_bin=0;
call mtr.add_suppression("There was an error when connecting to the donor*");
call mtr.add_suppression("For details please check performance_schema.replication_connection_status table and error log messages of Slave I/O for channel group_replication_recovery.");
call mtr.add_suppression("Maximum number of retries when*");
call mtr.add_suppression("Fatal error during the Recovery process of Group Replication. The server will leave the group.");
call mtr.add_suppression("The member is leaving a group without being on one");
call mtr.add_suppression("The member is already leaving or joining a group.");
call mtr.add_suppression("Error leaving the group");
call mtr.add_suppression("Skipping leave operation: concurrent attempt to leave the group is on-going.");
call mtr.add_suppression(".*Invalid .* username when attempting to connect to the master server.*");
set session sql_log_bin=1;

--let $debug_save_count= `SELECT @@GLOBAL.group_replication_recovery_retry_count`
--let $debug_save_rec_int= `SELECT @@GLOBAL.group_replication_recovery_reconnect_interval`

SET @debug_save= @@GLOBAL.DEBUG;
SET @@GLOBAL.DEBUG='d,recovery_thread_wait_before_finish';

--disable_warnings
CHANGE MASTER TO MASTER_USER='$recovery_user', MASTER_PASSWORD='$recovery_bad_password' FOR CHANNEL 'group_replication_recovery';
--enable_warnings

--echo # Set the retry count to try only twice. One time for each member.
--eval SET GLOBAL group_replication_recovery_retry_count= 2;
--echo # Set the reconnect interval to one. To prevent timeout on recovery.
--eval SET GLOBAL group_replication_recovery_reconnect_interval= 1;

--let $assert_text= The value of the recovery retry count should be equal to 2
--let $assert_cond= "[SELECT @@group_replication_recovery_retry_count]" = "2"
--source include/assert.inc

--echo # Start recovery and wait to verify the member is in recovery
--let $group_replication_start_member_state= RECOVERING
--source include/start_group_replication.inc

--echo # The member should error out as it can't connect
SET DEBUG_SYNC= "now SIGNAL signal.recovery_end";
--let $group_replication_member_state= ERROR
--source ../inc/gr_wait_for_member_state.inc

--echo #
--echo # Set MASTER_USER to an empty user name, watching it fail
--echo #

--source include/stop_group_replication.inc

CHANGE MASTER TO MASTER_USER= '', MASTER_PASSWORD= '' FOR CHANNEL 'group_replication_recovery';

--echo # Start recovery and wait to verify the member is in recovery
--let $group_replication_start_member_state= RECOVERING
--source include/start_group_replication.inc

SET DEBUG_SYNC= "now SIGNAL signal.recovery_end";
--let $group_replication_member_state= ERROR
--source ../inc/gr_wait_for_member_state.inc

--echo # Verify that the show slave status shows specific IO_error
let $show_statement= SHOW SLAVE STATUS FOR CHANNEL 'group_replication_recovery';
let $field= Last_IO_Errno;
let $condition= = '1045';
--source include/wait_show_condition.inc

--source include/stop_group_replication.inc

--echo #
--echo # Set MASTER_USER to non existing user, watching it fail
--echo #

CHANGE MASTER TO MASTER_USER= 'parveez', MASTER_PASSWORD= 'me' FOR CHANNEL 'group_replication_recovery';

--echo # Start recovery and wait to verify the member is in recovery
--let $group_replication_start_member_state= RECOVERING
--source include/start_group_replication.inc

SET DEBUG_SYNC= "now SIGNAL signal.recovery_end";
--let $group_replication_member_state= ERROR
--source ../inc/gr_wait_for_member_state.inc

--echo # Verify that show slave status shows specific IO_ERROR
let $show_statement= SHOW SLAVE STATUS FOR CHANNEL 'group_replication_recovery';
let $field= Last_IO_Errno;
let $condition= = '1045';
--source include/wait_show_condition.inc

--source include/stop_group_replication.inc

--connection server2
--let $group_replication_number_of_members= 2
--source ../inc/gr_wait_for_number_of_members.inc

--echo #
--echo # Clean up
--echo #

--eval DROP USER "$recovery_user"
--connection server3
SET DEBUG_SYNC='RESET';
SET @@GLOBAL.DEBUG = @debug_save;
--eval SET GLOBAL group_replication_recovery_retry_count= $debug_save_count
--eval SET GLOBAL group_replication_recovery_reconnect_interval= $debug_save_rec_int

--connection server2
DROP TABLE t1;

--source ../inc/group_replication_end.inc

Man Man