File: gr_single_primary_verify_next_leader.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (164 lines) | stat: -rw-r--r-- 5,887 bytes parent folder | download
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