mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Make wait_timeout test not timing dependent
mysql-test/t/wait_timeout.test: Remove sleeps from wait_timeout in order to make it timing independent. Instead get the status variable "aborted_clients" in a seconds connection.
This commit is contained in:
@ -4,10 +4,41 @@
|
|||||||
#
|
#
|
||||||
# Bug #8731: wait_timeout does not work on Mac OS X
|
# Bug #8731: wait_timeout does not work on Mac OS X
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# Connect with another connection and reset counters
|
||||||
|
--disable_query_log
|
||||||
|
connect (wait_con,localhost,root,,test,,);
|
||||||
|
flush status; # Reset counters
|
||||||
|
connection wait_con;
|
||||||
|
let $retries=300;
|
||||||
|
let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`;
|
||||||
|
set @aborted_clients= 0;
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
# Disable reconnect and do the query
|
||||||
|
connection default;
|
||||||
--disable_reconnect
|
--disable_reconnect
|
||||||
select 1;
|
select 1;
|
||||||
# wait_timeout is 1, so we should get disconnected now
|
|
||||||
--sleep 2
|
# Switch to wait_con and wait until server has aborted the connection
|
||||||
|
--disable_query_log
|
||||||
|
connection wait_con;
|
||||||
|
while (!`select @aborted_clients`)
|
||||||
|
{
|
||||||
|
sleep 0.1;
|
||||||
|
let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`;
|
||||||
|
eval set @aborted_clients= SUBSTRING('$aborted_clients', 16)+0;
|
||||||
|
|
||||||
|
dec $retries;
|
||||||
|
if (!$retries)
|
||||||
|
{
|
||||||
|
Failed to detect that client has been aborted;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
connection default;
|
||||||
# When the connection is closed in this way, the error code should
|
# When the connection is closed in this way, the error code should
|
||||||
# be consistent see bug#2845 for an explanation
|
# be consistent see bug#2845 for an explanation
|
||||||
--error 2006
|
--error 2006
|
||||||
@ -15,12 +46,41 @@ select 2;
|
|||||||
--enable_reconnect
|
--enable_reconnect
|
||||||
select 3;
|
select 3;
|
||||||
|
|
||||||
|
#
|
||||||
# Do the same test as above on a TCP connection
|
# Do the same test as above on a TCP connection
|
||||||
|
# (which we get by specifying a ip adress)
|
||||||
|
|
||||||
|
# Connect with another connection and reset counters
|
||||||
|
--disable_query_log
|
||||||
|
connection wait_con;
|
||||||
|
flush status; # Reset counters
|
||||||
|
let $retries=300;
|
||||||
|
let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`;
|
||||||
|
set @aborted_clients= 0;
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
connect (con1,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
connect (con1,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
||||||
--disable_reconnect
|
--disable_reconnect
|
||||||
select 1;
|
select 1;
|
||||||
# wait_timeout is 1, so we should get disconnected now
|
|
||||||
--sleep 2
|
# Switch to wait_con and wait until server has aborted the connection
|
||||||
|
--disable_query_log
|
||||||
|
connection wait_con;
|
||||||
|
while (!`select @aborted_clients`)
|
||||||
|
{
|
||||||
|
sleep 0.1;
|
||||||
|
let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`;
|
||||||
|
eval set @aborted_clients= SUBSTRING('$aborted_clients', 16)+0;
|
||||||
|
|
||||||
|
dec $retries;
|
||||||
|
if (!$retries)
|
||||||
|
{
|
||||||
|
Failed to detect that client has been aborted;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
connection con1;
|
||||||
# When the connection is closed in this way, the error code should
|
# When the connection is closed in this way, the error code should
|
||||||
# be consistent see bug#2845 for an explanation
|
# be consistent see bug#2845 for an explanation
|
||||||
--error 2006
|
--error 2006
|
||||||
|
Reference in New Issue
Block a user