summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/perfschema/t/rpl_threads.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/perfschema/t/rpl_threads.test')
-rw-r--r--mysql-test/suite/perfschema/t/rpl_threads.test85
1 files changed, 85 insertions, 0 deletions
diff --git a/mysql-test/suite/perfschema/t/rpl_threads.test b/mysql-test/suite/perfschema/t/rpl_threads.test
new file mode 100644
index 00000000..a5ca51a9
--- /dev/null
+++ b/mysql-test/suite/perfschema/t/rpl_threads.test
@@ -0,0 +1,85 @@
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/have_log_bin.inc
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+--source include/master-slave.inc
+
+--disable_warnings
+drop table if exists test.t1;
+--sync_slave_with_master
+reset master;
+--enable_warnings
+
+create table test.t1(a int);
+drop table test.t1;
+
+--source include/show_binlog_events.inc
+
+# Notes
+#
+# The point of this test is to make sure code is properly instrumented,
+# for replication threads.
+# Each time an ID is assigned to a replication thread,
+# visible in the INFORMATION_SCHEMA.PROCESSLIST table,
+# the same PROCESSLIST_ID should be visible in table performance_schema.threads
+
+connection master;
+-- echo "============ Performance schema on master ============"
+
+# Read the ID of the binlog dump connection,
+# as exposed in PROCESSLIST.
+--enable_prepare_warnings
+select ID from INFORMATION_SCHEMA.PROCESSLIST
+ where COMMAND = "Binlog Dump"
+ into @master_dump_pid;
+--disable_prepare_warnings
+
+select COMMAND, STATE
+ from INFORMATION_SCHEMA.PROCESSLIST
+ where ID = @master_dump_pid;
+
+# Make sure the performance schema also knows this PROCESSLIST_ID
+select NAME, TYPE, PROCESSLIST_COMMAND, PROCESSLIST_STATE
+ from performance_schema.threads
+ where PROCESSLIST_ID = @master_dump_pid;
+
+sync_slave_with_master;
+-- echo "============ Performance schema on slave ============"
+
+# Read the ID of the SLAVE IO thread,
+# as exposed in PROCESSLIST.
+--enable_prepare_warnings
+select ID from INFORMATION_SCHEMA.PROCESSLIST
+ where STATE like "Waiting for master to send event%"
+ into @slave_io_pid;
+--disable_prepare_warnings
+
+select COMMAND, STATE
+ from INFORMATION_SCHEMA.PROCESSLIST
+ where ID = @slave_io_pid;
+
+# Make sure the performance schema also knows this PROCESSLIST_ID
+select NAME, TYPE, PROCESSLIST_COMMAND, PROCESSLIST_STATE
+ from performance_schema.threads
+ where PROCESSLIST_ID = @slave_io_pid;
+
+# Read the ID of the SLAVE SQL thread,
+# as exposed in PROCESSLIST.
+--enable_prepare_warnings
+select ID from INFORMATION_SCHEMA.PROCESSLIST
+ where STATE like "Slave has read all relay log%"
+ into @slave_sql_pid;
+--disable_prepare_warnings
+
+select COMMAND, STATE
+ from INFORMATION_SCHEMA.PROCESSLIST
+ where ID = @slave_sql_pid;
+
+# Make sure the performance schema also knows this PROCESSLIST_ID
+select NAME, TYPE, PROCESSLIST_COMMAND, PROCESSLIST_STATE
+ from performance_schema.threads
+ where PROCESSLIST_ID = @slave_sql_pid;
+
+--source include/rpl_end.inc
+