File: gr_single_primary_var_checks.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 (211 lines) | stat: -rw-r--r-- 11,777 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
205
206
207
208
209
210
211
############################################################
# WL#9426: Single PRIMARY Mode in Group Replication
#
# This test checks the combinations of the options
#   group_replication_enforce_update_everywhere_checks
# and
#   group_replication_single_primary_mode
############################################################
--source include/have_group_replication_plugin.inc

--let $rpl_skip_group_replication_start= 1

--let $saved_single_primary_mode= `SELECT @@GLOBAL.group_replication_single_primary_mode`
--let $saved_enforce_update_everywhere_checks= `SELECT @@GLOBAL.group_replication_enforce_update_everywhere_checks`

# restart MySQL Server with invalid single primary mode configuration
--let $rpl_connection_name= default
--source include/rpl_connection.inc
--let $_group_replication_local_address= `SELECT @@GLOBAL.group_replication_local_address`
--let $_group_replication_group_seeds= `SELECT @@GLOBAL.group_replication_group_seeds`
--let $restart_parameters=restart: --group_replication_enforce_update_everywhere_checks=ON --group_replication_single_primary_mode=ON --group_replication_local_address=$_group_replication_local_address --group_replication_group_seeds=$_group_replication_group_seeds --group-replication-group-name=$group_replication_group_name
--replace_result $_group_replication_local_address GROUP_REPLICATION_LOCAL_ADDRESS $_group_replication_group_seeds GROUP_REPLICATION_GROUP_SEEDS $group_replication_group_name GROUP_REPLICATION_GROUP_NAME
--source include/restart_mysqld.inc

## verify that 'start group_replication' should fail when MySQL Server is started with
## invalid single primary mode configuration
--source include/group_replication.inc
SET SESSION sql_log_bin= 0;
call mtr.add_suppression("It is not allowed to run single primary mode with 'group_replication_enforce_update_everywhere_checks' enabled.");
SET SESSION sql_log_bin= 1;
--error ER_GROUP_REPLICATION_CONFIGURATION
START GROUP_REPLICATION;

# set single primary mode configuration to valid values
SET GLOBAL group_replication_single_primary_mode= FALSE;
SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;

## group_replication_single_primary_mode verifications
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_single_primary_mode= DEFAULT;
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_single_primary_mode= NULL;
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_single_primary_mode= "AAAAAA";
--let $assert_text= 'group_replication_single_primary_mode should be set to 0'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_single_primary_mode= TRUE;
--let $assert_text= 'group_replication_single_primary_mode should be set to 1'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 1
--source include/assert.inc
SET GLOBAL group_replication_single_primary_mode= FALSE;
--let $assert_text= 'group_replication_single_primary_mode should be set to 0'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_single_primary_mode= ON;
--let $assert_text= 'group_replication_single_primary_mode should be set to ON'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 1
--source include/assert.inc
SET GLOBAL group_replication_single_primary_mode= OFF;
--let $assert_text= 'group_replication_single_primary_mode should be set to OFF'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_single_primary_mode= -1;
--let $assert_text= 'group_replication_single_primary_mode should be set to 0'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_single_primary_mode= 100;
--let $assert_text= 'group_replication_single_primary_mode should be set to 1'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 1
--source include/assert.inc

# disable single primary mode regardless
SET GLOBAL group_replication_single_primary_mode= FALSE;

## group_replication_enforce_update_everywhere_checks verifications
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_enforce_update_everywhere_checks= NULL;
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_enforce_update_everywhere_checks= "AAAAAA";
--let $assert_text= 'group_replication_enforce_update_everywhere_checks should be set to 0'
--let $assert_cond= [SELECT @@group_replication_enforce_update_everywhere_checks as value, value, 1] = 0
--source include/assert.inc

--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_enforce_update_everywhere_checks= DEFAULT;
SET GLOBAL group_replication_enforce_update_everywhere_checks= TRUE;
--let $assert_text= 'group_replication_enforce_update_everywhere_checks should be set to 1'
--let $assert_cond= [SELECT @@group_replication_enforce_update_everywhere_checks as value, value, 1] = 1
--source include/assert.inc
SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;
--let $assert_text= 'group_replication_enforce_update_everywhere_checks should be set to 0'
--let $assert_cond= [SELECT @@group_replication_enforce_update_everywhere_checks as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_enforce_update_everywhere_checks= ON;
--let $assert_text= 'group_replication_enforce_update_everywhere_checks should be set to ON'
--let $assert_cond= [SELECT @@group_replication_enforce_update_everywhere_checks as value, value, 1] = 1
--source include/assert.inc
SET GLOBAL group_replication_enforce_update_everywhere_checks= OFF;
--let $assert_text= 'group_replication_enforce_update_everywhere_checks should be set to OFF'
--let $assert_cond= [SELECT @@group_replication_enforce_update_everywhere_checks as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_enforce_update_everywhere_checks= -1;
--let $assert_text= 'group_replication_enforce_update_everywhere_checks should be set to 0'
--let $assert_cond= [SELECT @@group_replication_enforce_update_everywhere_checks as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_enforce_update_everywhere_checks= 100;
--let $assert_text= 'group_replication_enforce_update_everywhere_checks should be set to 1'
--let $assert_cond= [SELECT @@group_replication_enforce_update_everywhere_checks as value, value, 1] = 1
--source include/assert.inc

# assert that we cannot set single primary mode when
# enforce_update_everywhere_checks is set

SET GLOBAL group_replication_enforce_update_everywhere_checks= TRUE;
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_single_primary_mode= TRUE;

# now disable update everywhere checks so that one is able to
# enable single primary mode
SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;
--let $assert_text= 'group_replication_enforce_update_everywhere_checks should be set to 0'
--let $assert_cond= [SELECT @@group_replication_enforce_update_everywhere_checks as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_single_primary_mode= TRUE;
--let $assert_text= 'group_replication_single_primary_mode should be set to 1'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 1
--source include/assert.inc

# assert that we can set to other values
SET GLOBAL group_replication_single_primary_mode= FALSE;
--let $assert_text= 'group_replication_single_primary_mode should be set to 0'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_single_primary_mode= -1;
--let $assert_text= 'group_replication_single_primary_mode should be set to 0'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_single_primary_mode= 100;
--let $assert_text= 'group_replication_single_primary_mode should be set to 1'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 1
--source include/assert.inc

# assert that we cannot set enforce update everywhere checks
# when single primary mode is ON
SET GLOBAL group_replication_single_primary_mode= TRUE;
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_enforce_update_everywhere_checks= TRUE;

# set both to false
SET GLOBAL group_replication_single_primary_mode= FALSE;
--let $assert_text= 'group_replication_single_primary_mode should be set to 0'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;
--let $assert_text= 'group_replication_enforce_update_everywhere_checks should be set to 0'
--let $assert_cond= [SELECT @@group_replication_enforce_update_everywhere_checks as value, value, 1] = 0
--source include/assert.inc

# Lets start a group with single_primary_mode ON
SET GLOBAL group_replication_single_primary_mode= TRUE;
--let $assert_text= 'group_replication_single_primary_mode should be set to 1'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 1
--source include/assert.inc
SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;
--let $assert_text= 'group_replication_enforce_update_everywhere_checks should be set to 0'
--let $assert_cond= [SELECT @@group_replication_enforce_update_everywhere_checks as value, value, 1] = 0
--source include/assert.inc

--echo #
--echo # START GROUP REPLICATION ON SERVER 1
--source include/start_and_bootstrap_group_replication.inc

--echo # PLUGIN VARIABLES SHOULD BE READ ONLY ON SERVER 1
--error ER_GROUP_REPLICATION_RUNNING
SET GLOBAL group_replication_single_primary_mode= TRUE;
--error ER_GROUP_REPLICATION_RUNNING
SET GLOBAL group_replication_enforce_update_everywhere_checks= TRUE;

--echo #
--echo # START GROUP REPLICATION ON SERVER 2
--let $rpl_connection_name= server2
--source include/rpl_connection.inc

SET GLOBAL group_replication_enforce_update_everywhere_checks= FALSE;
--let $assert_text= 'group_replication_enforce_update_everywhere_checks should be set to 0'
--let $assert_cond= [SELECT @@group_replication_enforce_update_everywhere_checks as value, value, 1] = 0
--source include/assert.inc
SET GLOBAL group_replication_single_primary_mode= TRUE;
--let $assert_text= 'group_replication_single_primary_mode should be set to 1'
--let $assert_cond= [SELECT @@group_replication_single_primary_mode as value, value, 1] = 1
--source include/assert.inc
--source include/start_group_replication.inc

--echo # PLUGIN VARIABLES SHOULD BE READ ONLY ON SERVER 2
--error ER_GROUP_REPLICATION_RUNNING
SET GLOBAL group_replication_single_primary_mode= TRUE;
--error ER_GROUP_REPLICATION_RUNNING
SET GLOBAL group_replication_enforce_update_everywhere_checks= TRUE;

--source include/group_replication_end.inc

# restore single primary mode configuration system variables
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
--eval SET @@GLOBAL.group_replication_single_primary_mode= $saved_single_primary_mode
--eval SET @@GLOBAL.group_replication_enforce_update_everywhere_checks= $saved_enforce_update_everywhere_checks
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--eval SET @@GLOBAL.group_replication_single_primary_mode= $saved_single_primary_mode
--eval SET @@GLOBAL.group_replication_enforce_update_everywhere_checks= $saved_enforce_update_everywhere_checks