File: gr_message_service_big_message.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 (144 lines) | stat: -rw-r--r-- 5,900 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
########################################################################
#
# This test validate that service do not have restriction on size of
# message.
#
# Test:
#   0. This test requires two servers with GR
#   1. Load plugin replication observers example on server1
#   2. Load plugin replication observers example on server2
#   3. Create a string with more than 4k characters
#   4. On server 1 execute UDF that will transmit tag and a big message
#      over GR send service
#   5. Execute UDF that will transmit a big tag and a message over GR
#      send service
#   6. Execute UDF that will transmit a big tag and a big message over GR
#      send service
#   7. To decrease failure rate on assert_grep we do a transaction with
#      AFTER consistency to add some rounds on GCS communication and stop GR on
#      server1, which will make it wait for the delivery of new view, and
#      that will happen only after delivery of service message. This will
#      give some time to server to receive and write it to error log.
#   8. Assert server1 received all the messages transmitted by GR message
#      delivery
#   9. Assert server2 received all the messages transmitted by GR message
#      delivery
#  10. Cleanup
#
########################################################################

--source include/have_replication_observers_example_plugin.inc
--source include/have_group_replication_plugin.inc
--source include/group_replication.inc

--echo
--echo # 1. Load plugin replication observers example on server1

--source include/install_replication_observers_example.inc

--echo
--echo # 2. Load plugin replication observers example on server2

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

--source include/install_replication_observers_example.inc

--echo
--echo # 3. Create a string with more than 4k characters

--let $big_string=`SELECT REPEAT('A', 4001)`

--echo
--echo # 4. On server 1 execute UDF that will transmit tag and a big message
--echo #    over GR send service

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

--eval SELECT group_replication_service_message_send("tag", "$big_string")

--echo
--echo # 5. Execute UDF that will transmit a big tag and a message over GR
--echo #    send service

--eval SELECT group_replication_service_message_send("$big_string", "message")

--echo
--echo # 6. Execute UDF that will transmit a big tag and a big message over GR
--echo #    send service

--eval SELECT group_replication_service_message_send("$big_string", "$big_string")

--echo
--echo # 7. To decrease failure rate on assert_grep we do a transaction with
--echo #    AFTER consistency to add some rounds on GCS communication and stop GR on
--echo #    server1, which will make it wait for the delivery of new view, and
--echo #    that will happen only after delivery of service message. This will
--echo #    give some time to server to receive and write it to error log.

SET @@SESSION.group_replication_consistency= 'AFTER';
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY , b INT);
DROP TABLE test.t1;
--source include/stop_group_replication.inc

--echo
--echo # 8. Assert server1 received all the messages transmitted by GR message
--echo #    delivery

--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service_big_message.1.err
--let $assert_count = 1
--let $assert_select = Plugin replication_observers_example reported: 'Service message recv TAG: "tag", TAG_SIZE: 3, MSG: over 4k bytes, MSG_SIZE: 4001.'
--let $assert_text = Server 1 received message from itself.
--source include/assert_grep.inc

--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service_big_message.1.err
--let $assert_count = 1
--let $assert_select = Plugin replication_observers_example reported: 'Service message recv TAG: over 4k bytes, TAG_SIZE: 4001, MSG: "message", MSG_SIZE: 7.'
--let $assert_text = Server 1 received message from itself.
--source include/assert_grep.inc

--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service_big_message.1.err
--let $assert_count = 1
--let $assert_select = Plugin replication_observers_example reported: 'Service message recv TAG: over 4k bytes, TAG_SIZE: 4001, MSG: over 4k bytes, MSG_SIZE: 4001.'
--let $assert_text = Server 1 received message from itself.
--source include/assert_grep.inc

--echo
--echo # 9. Assert server2 received all the messages transmitted by GR message
--echo #    delivery

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

--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service_big_message.2.err
--let $assert_count = 1
--let $assert_select = Plugin replication_observers_example reported: 'Service message recv TAG: "tag", TAG_SIZE: 3, MSG: over 4k bytes, MSG_SIZE: 4001.'
--let $assert_text = Server 2 received message from server 1.
--source include/assert_grep.inc

--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service_big_message.2.err
--let $assert_count = 1
--let $assert_select = Plugin replication_observers_example reported: 'Service message recv TAG: over 4k bytes, TAG_SIZE: 4001, MSG: "message", MSG_SIZE: 7.'
--let $assert_text = Server 2 received message from server 1.
--source include/assert_grep.inc

--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service_big_message.2.err
--let $assert_count = 1
--let $assert_select = Plugin replication_observers_example reported: 'Service message recv TAG: over 4k bytes, TAG_SIZE: 4001, MSG: over 4k bytes, MSG_SIZE: 4001.'
--let $assert_text = Server 2 received message from server 1.
--source include/assert_grep.inc

--echo
--echo # 10. Cleanup

--source include/uninstall_replication_observers_example.inc

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

--source include/start_group_replication.inc

--source include/uninstall_replication_observers_example.inc

--source include/group_replication_end.inc