polardbxengine/mysql-test/suite/group_replication/t/gr_message_service.test

117 lines
4.6 KiB
Plaintext

########################################################################
#
# This test validate that all servers that register the recv service
# shall receive the messages sent by send service.
#
# 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. Execute UDF that will transmit tag and message over GR send service
# 4. On server 1 execute UDF that will transmit tag and message over GR
# send service
# 5. 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.
# 6. Assert server1 received both messages transmitted by GR message
# delivery
# 7. Assert server2 received both messages transmitted by GR message
# delivery
# 8. 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. Execute UDF that will transmit tag and message over GR send service
SELECT group_replication_service_message_send("tag", "Server2 sent a message");
--echo
--echo # 4. On server 1 execute UDF that will transmit tag and message over GR
--echo # send service
--let $rpl_connection_name= server1
--source include/rpl_connection.inc
SELECT group_replication_service_message_send("tag", "Server1 sent a message");
--echo
--echo # 5. 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 # 6. Assert server1 received both messages transmitted by GR message
--echo # delivery
--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service.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
--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service.1.err
--let $assert_count = 1
--let $assert_select = Plugin replication_observers_example reported: 'Service message recv TAG: "tag", TAG_SIZE: 3, MSG: "Server1 sent a message", MSG_SIZE: 22.'
--let $assert_text = Server 1 received message from itself.
--source include/assert_grep.inc
--echo
--echo # 7. Assert server2 received both 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.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
--let $assert_file= $MYSQLTEST_VARDIR/tmp/gr_message_service.2.err
--let $assert_count = 1
--let $assert_select = Plugin replication_observers_example reported: 'Service message recv TAG: "tag", TAG_SIZE: 3, MSG: "Server1 sent a message", MSG_SIZE: 22.'
--let $assert_text = Server 2 received message from server 1.
--source include/assert_grep.inc
--echo
--echo # 8. 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