diff options
author | Vladislav Vaintroub <wlad@mariadb.com> | 2019-05-26 15:55:14 +0200 |
---|---|---|
committer | Vladislav Vaintroub <wlad@mariadb.com> | 2019-05-26 19:20:35 +0200 |
commit | ff10e0f6461f875967728228f71c8909eeaf41c4 (patch) | |
tree | 14b21ed976606f21d0e2380991a0169922ab8841 | |
parent | 307ca6935669ae9621aa36239ff3803b60640622 (diff) | |
download | mariadb-git-ff10e0f6461f875967728228f71c8909eeaf41c4.tar.gz |
MDEV-19313 Add test for thread_pool_info
-rw-r--r-- | mysql-test/main/mysqld--help.test | 3 | ||||
-rw-r--r-- | mysql-test/main/thread_pool_info.opt | 1 | ||||
-rw-r--r-- | mysql-test/main/thread_pool_info.result | 89 | ||||
-rw-r--r-- | mysql-test/main/thread_pool_info.test | 41 |
4 files changed, 133 insertions, 1 deletions
diff --git a/mysql-test/main/mysqld--help.test b/mysql-test/main/mysqld--help.test index 4c55c99929f..f0603e4e59d 100644 --- a/mysql-test/main/mysqld--help.test +++ b/mysql-test/main/mysqld--help.test @@ -32,7 +32,8 @@ perl; connect null-audit aria oqgraph sphinx thread-handling test-sql-discovery query-cache-info in-predicate-conversion-threshold query-response-time metadata-lock-info locales unix-socket - wsrep file-key-management cracklib-password-check user-variables/; + wsrep file-key-management cracklib-password-check user-variables + thread-pool-groups thread-pool-queues thread-pool-stats thread-pool-waits/; # And substitute the content some environment variables with their # names: diff --git a/mysql-test/main/thread_pool_info.opt b/mysql-test/main/thread_pool_info.opt new file mode 100644 index 00000000000..4094287a9bf --- /dev/null +++ b/mysql-test/main/thread_pool_info.opt @@ -0,0 +1 @@ +--thread-handling=pool-of-threads --loose-thread-pool-mode=generic --loose-thread-pool-groups=ON --loose-thread-pool-queues=ON --thread-pool-stats=ON --thread-pool-waits=ON
\ No newline at end of file diff --git a/mysql-test/main/thread_pool_info.result b/mysql-test/main/thread_pool_info.result new file mode 100644 index 00000000000..05cb8de5bb9 --- /dev/null +++ b/mysql-test/main/thread_pool_info.result @@ -0,0 +1,89 @@ +DESC INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +Field Type Null Key Default Extra +GROUP_ID int(6) NO 0 +CONNECTIONS int(6) NO 0 +THREADS int(6) NO 0 +ACTIVE_THREADS int(6) NO 0 +STANDBY_THREADS int(6) NO 0 +QUEUE_LENGTH int(6) NO 0 +HAS_LISTENER tinyint(1) NO 0 +IS_STALLED tinyint(1) NO 0 +SELECT COUNT(*)=@@thread_pool_size FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +COUNT(*)=@@thread_pool_size +1 +SELECT SUM(CONNECTIONS) FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +SUM(CONNECTIONS) +1 +SELECT SUM(THREADS) > 0 FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +SUM(THREADS) > 0 +1 +SELECT SUM(ACTIVE_THREADS) > 0 FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +SUM(ACTIVE_THREADS) > 0 +1 +SELECT SUM(QUEUE_LENGTH) FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +SUM(QUEUE_LENGTH) +0 +SELECT SUM(IS_STALLED) FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +SUM(IS_STALLED) +0 +DESC INFORMATION_SCHEMA.THREAD_POOL_QUEUES; +Field Type Null Key Default Extra +GROUP_ID int(6) NO 0 +POSITION int(6) NO 0 +PRIORITY int(1) NO 0 +CONNECTION_ID bigint(19) NO 0 +QUEUEING_TIME_MICROSECONDS bigint(19) NO 0 +DESC INFORMATION_SCHEMA.THREAD_POOL_STATS; +Field Type Null Key Default Extra +GROUP_ID int(6) NO 0 +THREAD_CREATIONS bigint(19) NO 0 +THREAD_CREATIONS_DUE_TO_STALL bigint(19) NO 0 +WAKES bigint(19) NO 0 +WAKES_DUE_TO_STALL bigint(19) NO 0 +THROTTLES bigint(19) NO 0 +STALLS bigint(19) NO 0 +POLLS_BY_LISTENER bigint(19) NO 0 +POLLS_BY_WORKER bigint(19) NO 0 +DEQUEUES_BY_LISTENER bigint(19) NO 0 +DEQUEUES_BY_WORKER bigint(19) NO 0 +SELECT SUM(DEQUEUES_BY_LISTENER+DEQUEUES_BY_WORKER) > 0 FROM INFORMATION_SCHEMA.THREAD_POOL_STATS; +SUM(DEQUEUES_BY_LISTENER+DEQUEUES_BY_WORKER) > 0 +1 +SELECT SUM(POLLS_BY_LISTENER+POLLS_BY_WORKER) > 0 FROM INFORMATION_SCHEMA.THREAD_POOL_STATS; +SUM(POLLS_BY_LISTENER+POLLS_BY_WORKER) > 0 +1 +FLUSH THREAD_POOL_STATS; +SELECT SUM(DEQUEUES_BY_LISTENER+DEQUEUES_BY_WORKER) FROM INFORMATION_SCHEMA.THREAD_POOL_STATS; +SUM(DEQUEUES_BY_LISTENER+DEQUEUES_BY_WORKER) +1 +SELECT SUM(POLLS_BY_LISTENER+POLLS_BY_WORKER) FROM INFORMATION_SCHEMA.THREAD_POOL_STATS; +SUM(POLLS_BY_LISTENER+POLLS_BY_WORKER) +2 +DESC INFORMATION_SCHEMA.THREAD_POOL_WAITS; +Field Type Null Key Default Extra +REASON varchar(16) NO +COUNT bigint(19) NO 0 +SELECT REASON FROM INFORMATION_SCHEMA.THREAD_POOL_WAITS; +REASON +UNKNOWN +SLEEP +DISKIO +ROW_LOCK +GLOBAL_LOCK +META_DATA_LOCK +TABLE_LOCK +USER_LOCK +BINLOG +GROUP_COMMIT +SYNC +NET +SELECT COUNT FROM INFORMATION_SCHEMA.THREAD_POOL_WAITS WHERE REASON='Sleep'; +COUNT +0 +SELECT SLEEP(0.01); +SLEEP(0.01) +0 +SELECT COUNT FROM INFORMATION_SCHEMA.THREAD_POOL_WAITS WHERE REASON='Sleep'; +COUNT +1 +FLUSH THREAD_POOL_WAITS; diff --git a/mysql-test/main/thread_pool_info.test b/mysql-test/main/thread_pool_info.test new file mode 100644 index 00000000000..fe8acb6099a --- /dev/null +++ b/mysql-test/main/thread_pool_info.test @@ -0,0 +1,41 @@ +source include/not_embedded.inc; + +let $have_plugin = `SELECT COUNT(*) FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_STATUS='ACTIVE' AND PLUGIN_NAME = 'THREAD_POOL_GROUPS'`; +if(!$have_plugin) +{ + --skip Need thread_pool_groups plugin +} + +#I_S.THREAD_POOL_GROUPS +DESC INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +SELECT COUNT(*)=@@thread_pool_size FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +SELECT SUM(CONNECTIONS) FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +SELECT SUM(THREADS) > 0 FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +SELECT SUM(ACTIVE_THREADS) > 0 FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +SELECT SUM(QUEUE_LENGTH) FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; +SELECT SUM(IS_STALLED) FROM INFORMATION_SCHEMA.THREAD_POOL_GROUPS; + +# I_S.THREAD_POOL_QUEUES +DESC INFORMATION_SCHEMA.THREAD_POOL_QUEUES; +#Todo - figure out how to populate queue with debug test + +# I_S.THREAD_POOL_STATS +DESC INFORMATION_SCHEMA.THREAD_POOL_STATS; +# The following query does not reliably give results, after FLUSH +# so if the test runs with --repeat, it would fail +#SELECT SUM(THREAD_CREATIONS) > 0 FROM INFORMATION_SCHEMA.THREAD_POOL_STATS; +SELECT SUM(DEQUEUES_BY_LISTENER+DEQUEUES_BY_WORKER) > 0 FROM INFORMATION_SCHEMA.THREAD_POOL_STATS; +SELECT SUM(POLLS_BY_LISTENER+POLLS_BY_WORKER) > 0 FROM INFORMATION_SCHEMA.THREAD_POOL_STATS; +--disable_ps_protocol +FLUSH THREAD_POOL_STATS; +SELECT SUM(DEQUEUES_BY_LISTENER+DEQUEUES_BY_WORKER) FROM INFORMATION_SCHEMA.THREAD_POOL_STATS; +SELECT SUM(POLLS_BY_LISTENER+POLLS_BY_WORKER) FROM INFORMATION_SCHEMA.THREAD_POOL_STATS; +--enable_ps_protocol + +#I_S.THREAD_POOL_WAITS +DESC INFORMATION_SCHEMA.THREAD_POOL_WAITS; +SELECT REASON FROM INFORMATION_SCHEMA.THREAD_POOL_WAITS; +SELECT COUNT FROM INFORMATION_SCHEMA.THREAD_POOL_WAITS WHERE REASON='Sleep'; +SELECT SLEEP(0.01); +SELECT COUNT FROM INFORMATION_SCHEMA.THREAD_POOL_WAITS WHERE REASON='Sleep'; +FLUSH THREAD_POOL_WAITS; |