summaryrefslogtreecommitdiff
path: root/mysql-test/main/pool_of_threads.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/main/pool_of_threads.test')
-rw-r--r--mysql-test/main/pool_of_threads.test93
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