1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
|
####################################################################
#
# Validate that leader is elected based on lowest member uuid in the
# list of the servers ordered lexicographically.
#
# Test:
# 1. Start group replication on all servers
#
# 2. First primary server should be server1 as it boostrapped the group
# 2.1 Find a primary server and switch connection to it
# 2.2 Wait for primary server to set correctly
# 2.3 Assert first primary is server1 which bootstrap the group
# 2.4 Stop group replication
#
# 3. Verify next primary is elected based on uuid ordered lexicographically.
# 3.1 Find a primary server and switch connection to it
# 3.2 Wait for primary server to set correctly
# 3.3 Assert next primary is selected based on lowest member uuid
# ordered lexicographically
# 3.4 Stop group replication
#
# 4. Verify next primary is elected based on uuid ordered lexicographically.
# 4.1 Find next primary server and switch connection to it
# 4.2 Wait for primary server to set correctly
# 4.3 Assert next primary is selected based on lowest member uuid
# ordered lexicographically
#
# 5. Clean up.
#
##################################################################
--source include/big_test.inc
--source include/have_group_replication_plugin.inc
--let $rpl_server_count= 3
--let $rpl_group_replication_single_primary_mode=1
--let $rpl_skip_group_replication_start=1
--source include/group_replication.inc
--echo # 1. Start group replication on all servers
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
# get server1 uuid
--let $server_uuid1=`SELECT @@SERVER_UUID`
# Bootstrap and start group replication
--source include/start_and_bootstrap_group_replication.inc
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
# start group replication
--source include/start_group_replication.inc
--let $rpl_connection_name= server3
--source include/rpl_connection.inc
# start group replication
--source include/start_group_replication.inc
--echo # 2. First primary server should be server1 as it boostrapped the group
# 2.1 Find a primary server and switch connection to it
--source include/gr_find_a_primary.inc
if ($group_replication_found_primary_out_var)
{
--let $rpl_connection_name= $group_replication_primary_connection_out_var
--source include/rpl_connection.inc
--let $first_member_uuid=`SELECT @@SERVER_UUID`
}
if (!$group_replication_found_primary_out_var)
{
--echo performance_schema.replication_group_members
--echo --------------------------------------------
--query_vertical SELECT * FROM performance_schema.replication_group_members
--die "Unable to find PRIMARY server!!"
}
# 2.2 Wait for primary server to set correctly
--let $group_replication_expected_uuid=$first_member_uuid
--source include/gr_wait_primary_member_uuid.inc
# 2.3 Assert first primary is server1 which bootstrap the group
--let $assert_cond= "$server_uuid1" = "$first_member_uuid"
--let $assert_text= Assert that server1 is primary
--source include/assert.inc
# 2.4 Stop group replication
--source include/stop_group_replication.inc
--echo # 3. Verify next primary is elected based on uuid ordered lexicographically.
--let $rpl_connection_silent=1
# 3.1 Find a primary server and switch connection to it
--source include/gr_find_a_primary.inc
if ($group_replication_found_primary_out_var)
{
--let $rpl_connection_name= $group_replication_primary_connection_out_var
--source include/rpl_connection.inc
--let $primary_server_uuid=`SELECT @@SERVER_UUID`
}
if (!$group_replication_found_primary_out_var)
{
--echo performance_schema.replication_group_members
--echo --------------------------------------------
--query_vertical SELECT * FROM performance_schema.replication_group_members
--die "Unable to find PRIMARY server!!"
}
# 3.2 Wait for primary server to set correctly
--let $group_replication_expected_uuid=$primary_server_uuid
--source include/gr_wait_primary_member_uuid.inc
# 3.3 Assert next primary is selected based on lowest member uuid
# ordered lexicographically
--let $_next_primary_uuid= query_get_value("SELECT Member_id FROM performance_schema.replication_group_members WHERE Member_id <> '$first_member_uuid' ORDER BY Member_id ASC LIMIT 1", Member_id, 1)
--let $assert_cond= "$_next_primary_uuid" = "$primary_server_uuid"
--let $assert_text= Assert that next primary uuid matches
--source include/assert.inc
# 3.4 Stop group replication
--source include/stop_group_replication.inc
--echo # 4. Verify next primary is elected based on uuid ordered lexicographically.
# 4.1 Find next primary server and switch connection to it
--source include/gr_find_a_primary.inc
if ($group_replication_found_primary_out_var)
{
--let $rpl_connection_name= $group_replication_primary_connection_out_var
--source include/rpl_connection.inc
--let $primary_server_uuid=`SELECT @@SERVER_UUID`
}
if (!$group_replication_found_primary_out_var)
{
--echo performance_schema.replication_group_members
--echo --------------------------------------------
--query_vertical SELECT * FROM performance_schema.replication_group_members
--die "Unable to find PRIMARY server!!"
}
# 4.2 Wait for primary server to set correctly
--let $group_replication_expected_uuid=$primary_server_uuid
--source include/gr_wait_primary_member_uuid.inc
# 4.3 Assert next primary is selected based on lowest member uuid
# ordered lexicographically
--let $_next_primary_uuid= query_get_value("SELECT Member_id FROM performance_schema.replication_group_members WHERE Member_id <> '$first_member_uuid' ORDER BY Member_id ASC LIMIT 1", Member_id, 1)
--let $assert_cond= "$_next_primary_uuid" = "$primary_server_uuid"
--let $assert_text= Assert that next primary uuid matches
--source include/assert.inc
# 5. Clean up
--let $rpl_connection_silent=0
--source include/group_replication_end.inc
|