######################################################################## # # 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