diff options
Diffstat (limited to 'mysql-test/main/pool_of_threads.test')
-rw-r--r-- | mysql-test/main/pool_of_threads.test | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/mysql-test/main/pool_of_threads.test b/mysql-test/main/pool_of_threads.test new file mode 100644 index 00000000000..f13a096985c --- /dev/null +++ b/mysql-test/main/pool_of_threads.test @@ -0,0 +1,93 @@ +# Start with thread_handling=pool-of-threads +# and run a number of tests + +-- source include/have_pool_of_threads.inc +SET @save_optimizer_switch=@@optimizer_switch; +SET optimizer_switch='outer_join_with_cache=off'; +# Slow test, don't run during staging part +-- source include/not_staging.inc +-- source include/long_test.inc +-- source include/common-tests.inc +SET optimizer_switch=@save_optimizer_switch; + +# Test that we cannot have more simultaneous connections than +# --thread-pool-size on the standard port, but _can_ have additional +# connections on the extra port. + +# First set two connections running, and check that extra connection +# on normal port fails due to --thread-pool-max-threads=2. +# We can afford using a really long sleep, because we won't wait +# till it ends, we'll interrupt it as soon as we don't need it anymore + +connection default; +--let $con1_id= `SELECT CONNECTION_ID()` + +send SELECT sleep(50); +--sleep 1 + +connect(con2,localhost,root,,); +--let $con2_id= `SELECT CONNECTION_ID()` + +send SELECT sleep(50); +--sleep 0.5 + +--disable_abort_on_error +--disable_result_log +--disable_query_log +connect(con3,localhost,root,,,,,connect_timeout=2); +--enable_query_log +--enable_result_log +--enable_abort_on_error +let $error = $mysql_errno; +if (!$error) +{ + --echo # -- Error: managed to establish more than --thread_pool_max_threads connections +} +if ($error) +{ + --echo # -- Success: more than --thread_pool_max_threads normal connections not possible +} + +connect(extracon,127.0.0.1,root,,test,$MASTER_EXTRA_PORT,); +connection extracon; +SELECT 'Connection on extra port ok'; + +# Here, sleep just for slightly longer than 5 sec to trigger MDEV-4566 +# (abort in interruptible wait connection check). +send SELECT sleep(5.5); + + +connect(extracon2,127.0.0.1,root,,test,$MASTER_EXTRA_PORT,); +connection extracon2; +SELECT 'Connection on extra port 2 ok'; + +--disable_abort_on_error +--disable_result_log +--disable_query_log +connect(extracon3,127.0.0.1,root,,test,$MASTER_EXTRA_PORT,,connect_timeout=2); +--enable_query_log +--enable_result_log +--enable_abort_on_error +let $error = $mysql_errno; +if (!$error) +{ + --echo # -- Error: managed to establish more than --extra-max-connections + 1 connections +} +if ($error) +{ + --echo # -- Success: more than --extra-max-connections + 1 normal connections not possible +} + +connection extracon2; +--replace_result $con1_id <default_connection_ID> +eval KILL QUERY $con1_id; +--replace_result $con2_id <con2_connection_ID> +eval KILL QUERY $con2_id; + +connection default; +--reap +connection con2; +--reap + +connection extracon; +--reap |