File: gr_acf_57_sources.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 (138 lines) | stat: -rw-r--r-- 5,477 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
################################################################################
# Validate that list of senders is updated when the sources are (fake) 5.7
# servers.
#
# Test:
#  0. The test requires 4 servers:
#       server1: group primary
#       server2: group secondary
#       server3: group secondary
#       server4: replica server
#  1. Deploy a 3 members group in single primary mode.
#  2. Configure replica to manage the asynchronous connection
#     to the group.
#  3. Create and start the managed channel.
#     Replica will connect to server1 (weigth: 80).
#  4. Switch group to multi-primary mode.
#     Validate that group sources weight is updated.
#  5. Clean up.
################################################################################
--source include/big_test.inc
--source include/have_debug.inc
--source include/have_group_replication_plugin.inc
--let $group_replication_group_name= aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
--let $rpl_skip_group_replication_start= 1
--let $rpl_server_count= 4
--source include/group_replication.inc

--echo
--echo ############################################################
--echo # 1. Deploy a 3 members group in single primary mode.
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
--let $server1_uuid= `SELECT @@server_uuid`
--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= server3
--source include/rpl_connection.inc
--source include/start_group_replication.inc


--echo ############################################################
--echo # 2. Configure replica to manage the asynchronous connection
--echo #    to the group.
--echo
--let $rpl_connection_name= server4
--source include/rpl_connection.inc
--replace_result $SERVER_MYPORT_2 SERVER_MYPORT_2 $group_replication_group_name GROUP
--eval SELECT asynchronous_connection_failover_add_managed('ch1', 'GroupReplication', '$group_replication_group_name', '127.0.0.1', $SERVER_MYPORT_2, '', 80, 70);


--echo ###########################################################
--echo # 3. Create and start the managed channel.
--echo #    Replica will connect to server1 (weigth: 80).
--let $rpl_connection_name= server4
--source include/rpl_connection.inc
# Simulate that sources are 5.7 servers.
SET @@GLOBAL.DEBUG='+d,rpl_acf_simulate_57_source';

--replace_result $SERVER_MYPORT_3 SERVER_3_PORT
--eval CHANGE REPLICATION SOURCE TO SOURCE_HOST='127.0.0.1', SOURCE_USER='root', SOURCE_AUTO_POSITION=1, SOURCE_CONNECTION_AUTO_FAILOVER=1, SOURCE_PORT=$SERVER_MYPORT_3, SOURCE_CONNECT_RETRY=1, SOURCE_RETRY_COUNT=1 FOR CHANNEL 'ch1'

--let $rpl_channel_name='ch1'
--source include/start_slave.inc
--let $rpl_channel_name=

--let $wait_condition= SELECT COUNT(*)=3 FROM performance_schema.replication_asynchronous_connection_failover
--source include/wait_condition.inc

--replace_column 3 PORT
SELECT * FROM performance_schema.replication_asynchronous_connection_failover ORDER BY weight DESC;

--echo Wait until ch1 IO_THREAD is connected to server1
--let $wait_condition= SELECT service_state="ON" FROM performance_schema.replication_connection_status WHERE channel_name="ch1" AND source_uuid="$server1_uuid"
--source include/wait_condition.inc


--echo ############################################################
--echo # 4. Switch group to multi-primary mode.
--echo #    Validate that group sources weight is updated.
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
SELECT group_replication_switch_to_multi_primary_mode();

--let $rpl_connection_name= server4
--source include/rpl_connection.inc
--let $wait_condition= SELECT COUNT(*)=3 FROM performance_schema.replication_asynchronous_connection_failover WHERE weight=80
--source include/wait_condition.inc

--replace_column 3 PORT
SELECT * FROM performance_schema.replication_asynchronous_connection_failover ORDER BY weight DESC;

--let $assert_text= Verify channel ch1 IO_THREAD is ON and connected to server1
--let $assert_cond= "[SELECT SERVICE_STATE FROM performance_schema.replication_connection_status WHERE channel_name=\'ch1\' AND source_uuid=\'$server1_uuid\', SERVICE_STATE, 1]" = "ON"
--source include/assert.inc


--echo ############################################################
--echo # 5. Clean up.
--let $rpl_connection_name= server4
--source include/rpl_connection.inc

--let $rpl_channel_name='ch1'
--source include/stop_slave.inc

--let $rpl_reset_slave_all= 1
--let $rpl_multi_source= 1
--source include/rpl_reset_slave.inc
--let $rpl_channel_name=
--let $rpl_reset_slave_all=
--let $rpl_multi_source=

--replace_result $group_replication_group_name GROUP
--eval SELECT asynchronous_connection_failover_delete_managed('ch1', '$group_replication_group_name')

SET @@GLOBAL.DEBUG='-d,rpl_acf_simulate_57_source';

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

--replace_result $server1_uuid SERVER1
--eval SELECT group_replication_switch_to_single_primary_mode("$server1_uuid")

--source include/stop_group_replication.inc

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

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

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