1################################################################################
2# Verify performance_schema.replication_group_members for new columns
3#
4# Test:
5# 1.  Assert MEMBER_ROLE and MEMBER_VERSION after start of GR
6# 1A. Store server_uuid and member_version for future reference
7# 1B. Assert MEMBER_ROLE and MEMBER_VERSION are correct on server1
8# 2.  Assert MEMBER_ROLE and MEMBER_VERSION before start of GR
9# 2A. Assert MEMBER_ROLE and MEMBER_VERSION are not set on server2
10# 2B. Start GR on server2
11# 2C. Store server_uuid and member_version for future reference
12# 3.  Assert MEMBER_ROLE and MEMBER_VERSION are correct on server1 and server2
13# 4.  Shutdown GR
14################################################################################
15
16
17--source include/have_group_replication_plugin.inc
18--let $rpl_skip_group_replication_start= 1
19--let $rpl_group_replication_single_primary_mode=1
20--source include/group_replication.inc
21
22--echo
23--echo #####################################################################
24--echo # 1. Assert MEMBER_ROLE and MEMBER_VERSION after start of GR
25--echo #####################################################################
26--source include/start_and_bootstrap_group_replication.inc
27
28## Store server_uuid and member_version of server1 for future reference
29# Store server1_uuid
30--let $server1_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1)
31# Store server1_version
32--let $_member_version_= query_get_value(SELECT MEMBER_VERSION FROM performance_schema.replication_group_members where member_id='$server1_uuid', MEMBER_VERSION, 1)
33--let $_member_version_2= query_get_value(SELECT @@version as version, version, 1)
34--let $server_version= query_get_value("SELECT LEFT('$_member_version_2',CHAR_LENGTH('$_member_version_')) AS VERSION", VERSION, 1)
35
36## Assert server_version is not empty string
37--let $assert_text= 'MEMBER_VERSION is not empty'
38--let $assert_cond= [SELECT CHAR_LENGTH("$server_version") >= 5 AS VERSION, VERSION, 1] = 1
39--source include/assert.inc
40
41## Assert MEMBER_ROLE and MEMBER_VERSION are correct on server1
42
43# Assert MEMBER_ROLE
44--let $_member_role_= query_get_value(SELECT MEMBER_ROLE FROM performance_schema.replication_group_members where member_id='$server1_uuid', MEMBER_ROLE, 1)
45--let $assert_text= 'Server1 MEMBER_ROLE should be PRIMARY'
46--let $assert_cond= "$_member_role_"= "PRIMARY"
47--source include/assert.inc
48
49# Assert MEMBER_VERSION
50--let $_member_version_= query_get_value(SELECT MEMBER_VERSION FROM performance_schema.replication_group_members where member_id='$server1_uuid', MEMBER_VERSION, 1)
51--let $assert_text= 'Server1 MEMBER_VERSION should match with SELECT @@server_version'
52--let $assert_cond= "$_member_version_"= "$server_version"
53--source include/assert.inc
54
55--echo
56--echo #####################################################################
57--echo # 2.  Assert MEMBER_ROLE and MEMBER_VERSION before start of GR
58--echo #####################################################################
59## Start server2
60--let $rpl_connection_name= server2
61--source include/rpl_connection.inc
62
63## Assert MEMBER_ROLE and MEMBER_VERSION are not set on server2
64
65# Assert MEMBER_ROLE
66--let $_member_role_= query_get_value(SELECT MEMBER_ROLE FROM performance_schema.replication_group_members, MEMBER_ROLE, 1)
67--let $assert_text= 'Server2 MEMBER_ROLE should not be set when GR is starting'
68--let $assert_cond= "$_member_role_"= ""
69--source include/assert.inc
70
71# Assert MEMBER_VERSION
72--let $_member_version_= query_get_value(SELECT MEMBER_VERSION FROM performance_schema.replication_group_members, MEMBER_VERSION, 1)
73--let $assert_text= 'Server2 MEMBER_VERSION should not be set when GR is starting'
74--let $assert_cond= "$_member_version_"= ""
75--source include/assert.inc
76
77## Start GR on server2
78--source include/start_group_replication.inc
79
80## Store server_uuid and member_version of server2 for future reference
81# Store server2_uuid
82--let $server2_uuid= query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1)
83
84--echo
85--echo ##############################################################################
86--echo # 3.  Assert MEMBER_ROLE and MEMBER_VERSION are correct on server1 and server2
87--echo ##############################################################################
88
89## Assert MEMBER_ROLE and MEMBER_VERSION are correct on server1
90--let $rpl_connection_name= server1
91--source include/rpl_connection.inc
92
93# Assert MEMBER_ROLE
94--let $_member_role_= query_get_value(SELECT MEMBER_ROLE FROM performance_schema.replication_group_members where member_id='$server1_uuid', MEMBER_ROLE, 1)
95--let $assert_text= 'Server1 MEMBER_ROLE should be PRIMARY'
96--let $assert_cond= "$_member_role_"= "PRIMARY"
97--source include/assert.inc
98
99# Assert MEMBER_ROLE
100--let $_member_role_= query_get_value(SELECT MEMBER_ROLE FROM performance_schema.replication_group_members where member_id='$server2_uuid', MEMBER_ROLE, 1)
101--let $assert_text= 'Server2 MEMBER_ROLE should be SECONDARY'
102--let $assert_cond= "$_member_role_"= "SECONDARY"
103--source include/assert.inc
104
105
106# Assert MEMBER_VERSION
107--let $_member_version_= query_get_value(SELECT MEMBER_VERSION FROM performance_schema.replication_group_members where member_id='$server1_uuid', MEMBER_VERSION, 1)
108--let $assert_text= 'Server1 MEMBER_VERSION should match with SELECT @@server_version'
109--let $assert_cond= "$_member_version_"= "$server_version"
110--source include/assert.inc
111
112# Assert MEMBER_VERSION
113--let $_member_version_= query_get_value(SELECT MEMBER_VERSION FROM performance_schema.replication_group_members where member_id='$server2_uuid', MEMBER_VERSION, 1)
114--let $assert_text= 'Server2 MEMBER_VERSION should match with SELECT @@server_version'
115--let $assert_cond= "$_member_version_"= "$server_version"
116--source include/assert.inc
117
118
119## Assert MEMBER_ROLE and MEMBER_VERSION are correct on server2
120--let $rpl_connection_name= server2
121--source include/rpl_connection.inc
122
123# Assert MEMBER_ROLE
124--let $_member_role_= query_get_value(SELECT MEMBER_ROLE FROM performance_schema.replication_group_members where member_id='$server1_uuid', MEMBER_ROLE, 1)
125--let $assert_text= 'Server1 MEMBER_ROLE should be PRIMARY'
126--let $assert_cond= "$_member_role_"= "PRIMARY"
127--source include/assert.inc
128
129# Assert MEMBER_ROLE
130--let $_member_role_= query_get_value(SELECT MEMBER_ROLE FROM performance_schema.replication_group_members where member_id='$server2_uuid', MEMBER_ROLE, 1)
131--let $assert_text= 'Server2 MEMBER_ROLE should be SECONDARY'
132--let $assert_cond= "$_member_role_"= "SECONDARY"
133--source include/assert.inc
134
135# Assert MEMBER_VERSION
136--let $_member_version_= query_get_value(SELECT MEMBER_VERSION FROM performance_schema.replication_group_members where member_id='$server1_uuid', MEMBER_VERSION, 1)
137--let $assert_text= 'Server1 MEMBER_VERSION should match with SELECT @@server_version'
138--let $assert_cond= "$_member_version_"= "$server_version"
139--source include/assert.inc
140
141# Assert MEMBER_VERSION
142--let $_member_version_= query_get_value(SELECT MEMBER_VERSION FROM performance_schema.replication_group_members where member_id='$server2_uuid', MEMBER_VERSION, 1)
143--let $assert_text= 'Server2 MEMBER_VERSION should match with SELECT @@server_version'
144--let $assert_cond= "$_member_version_"= "$server_version"
145--source include/assert.inc
146
147--echo
148--echo ##########################################################################
149--echo # 4.  Shutdown GR
150--echo ##########################################################################
151--source include/group_replication_end.inc
152
153