File: gr_message_service_fail_recv.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 (97 lines) | stat: -rw-r--r-- 3,659 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
########################################################################
#
# This test validate that if a recv subscriber fails, group replication will
# change is status to ERROR.
#
# 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. Enable debug point that causes a failure on recv subscriber
#   4. Execute UDF that will transmit tag and message over GR send service
#   5. Assert server2 logged error when failed notification on recv service
#   6. Assert server1 received message transmitted by GR message delivery
#   7. Assert server2 do not received any message and is read only
#   8. Cleanup
#
########################################################################

--source include/have_debug.inc
--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. Enable debug point that causes a failure on recv subscriber

--let $debug_point= gr_message_service_fail_recv
--source include/add_debug_point.inc

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

SELECT group_replication_service_message_send("tag", "Server2 sent a message");


--let $group_replication_member_state= ERROR
--source include/gr_wait_for_member_state.inc

--echo
--echo # 5. Assert server2 logged error when failed notification on recv service

--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service_fail_recv.2.err
--let $assert_count = 1
--let $assert_select = A message sent through the Group Replication message deliver service was not delivered successfully. The server will now leave the group. Try to add the server back to the group and check if the problem persists, or check previous messages in the log for hints of what could be the problem.
--let $assert_text = Server 2 logged failure to notify recv service.
--source include/assert_grep.inc

--echo
--echo # 6. Assert server1 received message transmitted by GR message delivery

--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service_fail_recv.1.err
--let $assert_count = 1
--let $assert_select = Plugin replication_observers_example reported: 'Service message recv TAG: "tag", TAG_SIZE: 3, MSG: "Server2 sent a message", MSG_SIZE: 22.'
--let $assert_text = Server 1 received message from server 2.
--source include/assert_grep.inc

--echo
--echo # 7. Assert server2 do not received any message and is read only

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

--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service_fail_recv.2.err
--let $assert_count = 0
--let $assert_select = Plugin replication_observers_example reported: 'Service message recv:*.'
--let $assert_text = Server 2 received 0 messages.
--source include/assert_grep.inc

--source include/assert_and_disable_read_only.inc

--echo
--echo # 8. Cleanup

--let $debug_point= gr_message_service_fail_recv
--source include/remove_debug_point.inc

--source include/uninstall_replication_observers_example.inc

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

--source include/uninstall_replication_observers_example.inc

--source include/group_replication_end.inc