File: gr_perfschema_group_communication_information.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 (204 lines) | stat: -rw-r--r-- 11,962 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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
################################################################################
# WL #9149
#
# This test checks the basic functionality of the Group Replication
# performance_schema.replication_group_communication_information table.
#
# Test:
#  0) The test uses 2 servers: M1 and M2. Confirm the table is empty before
#     starting Group Replication. M1 bootstraps the group in single-primary
#     mode.
#  1) Confirm the preferred consensus leader is the PRIMARY.
#  2) Switch to multi-primary mode. Confirm everyone is a preferred consensus
#     leader.
#  3) Confirm write_concurrency matches the result of
#     group_replication_get_write_concurrency.
#  4) Confirm protocol_version matches the result of
#     group_replication_get_communication_protocol.
#  5) Switch to single-primary mode. Switch communication_protocol to 8.0.21.
#     Confirm everyone is a preferred consensus leader even in single-primary
#     mode.
#  6) Cleanup.
################################################################################
--source include/have_group_replication_plugin.inc
--let $rpl_server_count= 2
--let $rpl_skip_group_replication_start= 1
--let $rpl_group_replication_single_primary_mode= 1
--source include/group_replication.inc

--echo #########################################################################
--echo # 0) The test uses 2 servers: M1 and M2. Confirm the table is empty
--echo #    before starting Group Replication. M1 bootstraps the group in
--echo #    single-primary mode.
--let $assert_text= The performance_schema.replication_group_communication_information table should be empty
--let $assert_cond= "[SELECT COUNT(*) FROM performance_schema.replication_group_communication_information]" = "0"
--source include/assert.inc

--source include/start_and_bootstrap_group_replication.inc

--let $rpl_connection_name= server2
--source include/rpl_connection.inc

--source include/start_group_replication.inc

--echo ########################################################################
--echo # 1) Confirm the preferred consensus leader is the PRIMARY.
--let $preferred_leader_uuid= query_get_value(SELECT write_consensus_leaders_preferred FROM performance_schema.replication_group_communication_information, write_consensus_leaders_preferred, 1)
--let $primary_uuid= query_get_value(SELECT member_id FROM performance_schema.replication_group_members WHERE member_role = "PRIMARY", member_id, 1)
--let $assert_text= The UUID of the PRIMARY member should match the UUID of the preferred consensus leader
--let $assert_cond= "$primary_uuid" = "$preferred_leader_uuid"
--source include/assert.inc

--let $rpl_connection_name= server1
--source include/rpl_connection.inc

--let $preferred_leader_uuid= query_get_value(SELECT write_consensus_leaders_preferred FROM performance_schema.replication_group_communication_information, write_consensus_leaders_preferred, 1)
--let $primary_uuid= query_get_value(SELECT member_id FROM performance_schema.replication_group_members WHERE member_role = "PRIMARY", member_id, 1)
--let $assert_text= The UUID of the PRIMARY member should match the UUID of the preferred consensus leader
--let $assert_cond= "$primary_uuid" = "$preferred_leader_uuid"
--source include/assert.inc

--echo ########################################################################
--echo # 2) Switch to multi-primary mode, confirm everyone is a preferred
--echo #    consensus leader.
SELECT group_replication_switch_to_multi_primary_mode();

--let $preferred_leader_uuids= query_get_value(SELECT write_consensus_leaders_preferred FROM performance_schema.replication_group_communication_information, write_consensus_leaders_preferred, 1)
--let $primary_uuid_1= query_get_value(SELECT member_id FROM performance_schema.replication_group_members WHERE member_role = "PRIMARY", member_id, 1)
--let $wait_condition= SELECT COUNT(*)=1 FROM performance_schema.replication_group_communication_information WHERE write_consensus_leaders_preferred LIKE "%$primary_uuid_1%"
--source include/wait_condition_or_abort.inc
--let $primary_uuid_2= query_get_value(SELECT member_id FROM performance_schema.replication_group_members WHERE member_role = "PRIMARY", member_id, 2)
--let $wait_condition= SELECT COUNT(*)=1 FROM performance_schema.replication_group_communication_information WHERE write_consensus_leaders_preferred LIKE "%$primary_uuid_2%"
--source include/wait_condition_or_abort.inc

--let $rpl_connection_name= server2
--source include/rpl_connection.inc

--let $preferred_leader_uuids= query_get_value(SELECT write_consensus_leaders_preferred FROM performance_schema.replication_group_communication_information, write_consensus_leaders_preferred, 1)
--let $primary_uuid_1= query_get_value(SELECT member_id FROM performance_schema.replication_group_members WHERE member_role = "PRIMARY", member_id, 1)
--let $wait_condition= SELECT COUNT(*)=1 FROM performance_schema.replication_group_communication_information WHERE write_consensus_leaders_preferred LIKE "%$primary_uuid_1%"
--source include/wait_condition_or_abort.inc
--let $primary_uuid_2= query_get_value(SELECT member_id FROM performance_schema.replication_group_members WHERE member_role = "PRIMARY", member_id, 2)
--let $wait_condition= SELECT COUNT(*)=1 FROM performance_schema.replication_group_communication_information WHERE write_consensus_leaders_preferred LIKE "%$primary_uuid_2%"
--source include/wait_condition_or_abort.inc

--let $rpl_connection_name= server1
--source include/rpl_connection.inc

--echo ########################################################################
--echo # 3) Confirm write_concurrency matches the result of
--echo #    group_replication_get_write_concurrency.
--let $write_concurrency_udf= `SELECT group_replication_get_write_concurrency()`
--let $write_concurrency_table= query_get_value(SELECT write_concurrency FROM performance_schema.replication_group_communication_information, write_concurrency, 1)
--let $assert_text= write_concurrency ($write_concurrency_table) should be $write_concurrency_udf
--let $assert_cond= "$write_concurrency_table" = "$write_concurrency_udf"
--source include/assert.inc

--let $rpl_connection_name= server2
--source include/rpl_connection.inc

--let $write_concurrency_udf= `SELECT group_replication_get_write_concurrency()`
--let $write_concurrency_table= query_get_value(SELECT write_concurrency FROM performance_schema.replication_group_communication_information, write_concurrency, 1)
--let $assert_text= write_concurrency ($write_concurrency_table) should be $write_concurrency_udf
--let $assert_cond= "$write_concurrency_table" = "$write_concurrency_udf"
--source include/assert.inc


--echo ########################################################################
--echo # 4) Confirm protocol_version matches the result of
--echo #    group_replication_get_communication_protocol.
--let $rpl_connection_name= server1
--source include/rpl_connection.inc

--let $communication_protocol_udf= `SELECT group_replication_get_communication_protocol()`
--let $communication_protocol_table= query_get_value(SELECT protocol_version FROM performance_schema.replication_group_communication_information, protocol_version, 1)
--let $assert_text= protocol_version ($communication_protocol_table) should be $communication_protocol_udf
--let $assert_cond= "$communication_protocol_table" = "$communication_protocol_udf"
--source include/assert.inc

--let $rpl_connection_name= server2
--source include/rpl_connection.inc

--let $communication_protocol_udf= `SELECT group_replication_get_communication_protocol()`
--let $communication_protocol_table= query_get_value(SELECT protocol_version FROM performance_schema.replication_group_communication_information, protocol_version, 1)
--let $assert_text= protocol_version ($communication_protocol_table) should be $communication_protocol_udf
--let $assert_cond= "$communication_protocol_table" = "$communication_protocol_udf"
--source include/assert.inc

--echo ########################################################################
--echo # 5) Switch to single-primary mode. Switch communication_protocol to
--echo #    8.0.21. Confirm everyone is a preferred consensus leader even in
--echo #    single-primary. Must stop and start the group with
--echo #    group_replication_paxos_single_leader=OFF

--let $rpl_connection_name= server2
--source include/rpl_connection.inc

--source include/stop_group_replication.inc
--eval SET GLOBAL group_replication_paxos_single_leader = "OFF"

--let $rpl_connection_name= server1
--source include/rpl_connection.inc

--source include/stop_group_replication.inc
--eval SET GLOBAL group_replication_paxos_single_leader = "OFF"

--source include/start_and_bootstrap_group_replication.inc

--let $rpl_connection_name= server2
--source include/rpl_connection.inc

--source include/start_group_replication.inc

--let $rpl_connection_name= server1
--source include/rpl_connection.inc

SELECT group_replication_switch_to_single_primary_mode();
SELECT group_replication_set_communication_protocol("8.0.21");

--let $preferred_leader_uuids= query_get_value(SELECT write_consensus_leaders_preferred FROM performance_schema.replication_group_communication_information, write_consensus_leaders_preferred, 1)
--let $member_uuid_1= $primary_uuid_1
--let $wait_condition= SELECT COUNT(*)=1 FROM performance_schema.replication_group_communication_information WHERE write_consensus_leaders_preferred LIKE "%$member_uuid_1%"
--source include/wait_condition.inc
--let $member_uuid_2= $primary_uuid_2
--let $wait_condition= SELECT COUNT(*)=1 FROM performance_schema.replication_group_communication_information WHERE write_consensus_leaders_preferred LIKE "%$member_uuid_2%"
--source include/wait_condition_or_abort.inc

--let $assert_only_after = CURRENT_TEST: group_replication.gr_perfschema_group_communication_information
--let $assert_file= $MYSQLTEST_VARDIR/log/mysqld.1.err
--let $assert_select= A member is joining the group while a group configuration operation is occurring. The member will now leave the group
--let $assert_count= 0
--let $assert_text= There is no warning about a member joining the group while a group configuration operation is occurring
--source include/assert_grep.inc

--let $rpl_connection_name= server2
--source include/rpl_connection.inc

--let $preferred_leader_uuids= query_get_value(SELECT write_consensus_leaders_preferred FROM performance_schema.replication_group_communication_information, write_consensus_leaders_preferred, 1)
--let $member_uuid_1= $primary_uuid_1
--let $wait_condition= SELECT COUNT(*)=1 FROM performance_schema.replication_group_communication_information WHERE write_consensus_leaders_preferred LIKE "%$member_uuid_1%"
--source include/wait_condition_or_abort.inc
--let $member_uuid_2= $primary_uuid_2
--let $wait_condition= SELECT COUNT(*)=1 FROM performance_schema.replication_group_communication_information WHERE write_consensus_leaders_preferred LIKE "%$member_uuid_2%"
--source include/wait_condition_or_abort.inc

--let $assert_only_after = CURRENT_TEST: group_replication.gr_perfschema_group_communication_information
--let $assert_file= $MYSQLTEST_VARDIR/log/mysqld.2.err
--let $assert_select= A member is joining the group while a group configuration operation is occurring. The member will now leave the group
--let $assert_count= 0
--let $assert_text= There is no warning about a member joining the group while a group configuration operation is occurring
--source include/assert_grep.inc

--echo ########################################################################
--echo # 6) Cleanup.

--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--eval SET GLOBAL group_replication_paxos_single_leader = "ON"

--let $rpl_connection_name= server1
--source include/rpl_connection.inc
--eval SET GLOBAL group_replication_paxos_single_leader = "ON"

--let $rpl_group_replication_reset_persistent_vars= 1
--source include/group_replication_end.inc