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
|
########################################################################
#
# Only a member that does support the receive service, can receive messages.
# This test simulate a non-supported versions.
#
# Test:
# 0. This test requires two servers
# 1. Load plugin replication observers example on server1
# 2. Execute UDF that will transmit tag and message over GR send
# service. Only server 1 registered service.
# 3. Verify both servers are ONLINE
# 4. Load plugin replication observers example on server2
# 5. On server 2 execute UDF that will transmit tag and message over GR
# send service
# 6. 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.
# 7. Assert server1 received two messages
# 8. Assert server2 one messages transmitted by GR message delivery
# 9. 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. Execute UDF that will transmit tag and message over GR send
--echo # service. Only server 1 registered service.
SELECT group_replication_service_message_send("tag", "Server1 sent a message");
--echo
--echo # 3. Verify both servers are ONLINE
--let $assert_text = Verify both servers are online
--let $assert_cond= "[SELECT COUNT(*) from performance_schema.replication_group_members WHERE MEMBER_STATE=\"ONLINE\"]" = 2
--source include/assert.inc
--echo
--echo # 4. 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 # 5. On server 2 execute UDF that will transmit tag and message over GR
--echo # send service
SELECT group_replication_service_message_send("tag", "Server2 sent a message");
--echo
--echo # 6. 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 # 7. Assert server1 received two messages
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service_disabled_recv.1.err
--let $assert_count = 2
--let $assert_select = Plugin replication_observers_example reported: 'Service message recv .*.'
--let $assert_text = Server 1 received two messages
--source include/assert_grep.inc
--echo
--echo # 8. Assert server2 one messages transmitted by GR message delivery
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service_disabled_recv.2.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 2 received message from itself.
--source include/assert_grep.inc
--echo
--echo # 9. Cleanup
--source include/start_group_replication.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
|