143 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			143 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								# Last modification:
							 | 
						||
| 
								 | 
							
								# 2009-01-19 H.Hunger Fix Bug#39108 main.wait_timeout fails sporadically
							 | 
						||
| 
								 | 
							
								#                       - Increase wait timeout to 2 seconds
							 | 
						||
| 
								 | 
							
								#                       - Eliminated the corresponding opt file,
							 | 
						||
| 
								 | 
							
								#                         set global wait timeout within the test.
							 | 
						||
| 
								 | 
							
								#                       - Replaced sleeps by wait condition
							 | 
						||
| 
								 | 
							
								#                       - Minor improvements
							 | 
						||
| 
								 | 
							
								###############################################################################
							 | 
						||
| 
								 | 
							
								# These tests cannot run with the embedded server
							 | 
						||
| 
								 | 
							
								-- source include/not_embedded.inc
							 | 
						||
| 
								 | 
							
								-- source include/one_thread_per_connection.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Save the initial number of concurrent sessions
							 | 
						||
| 
								 | 
							
								--source include/count_sessions.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#8731 wait_timeout does not work on Mac OS X
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let $start_value= `SELECT @@global.wait_timeout`;
							 | 
						||
| 
								 | 
							
								SET @@global.wait_timeout= 2;
							 | 
						||
| 
								 | 
							
								--echo disconnect default;
							 | 
						||
| 
								 | 
							
								disconnect default;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Connect with another connection and reset counters
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								connect (wait_con,localhost,root,,test,,);
							 | 
						||
| 
								 | 
							
								--echo connection wait_con;
							 | 
						||
| 
								 | 
							
								connection wait_con;
							 | 
						||
| 
								 | 
							
								SET SESSION wait_timeout=100;
							 | 
						||
| 
								 | 
							
								let $retries=300;
							 | 
						||
| 
								 | 
							
								SET @aborted_clients= 0;
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Disable reconnect and do the query
							 | 
						||
| 
								 | 
							
								connect (default,localhost,root,,test,,);
							 | 
						||
| 
								 | 
							
								--echo connection default;
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								--echo --disable_reconnect;
							 | 
						||
| 
								 | 
							
								--disable_reconnect
							 | 
						||
| 
								 | 
							
								SELECT 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Switch to wait_con and wait until server has aborted the connection
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								--echo connection wait_con;
							 | 
						||
| 
								 | 
							
								connection wait_con;
							 | 
						||
| 
								 | 
							
								while (!`select @aborted_clients`)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  real_sleep 0.1;
							 | 
						||
| 
								 | 
							
								  let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`;
							 | 
						||
| 
								 | 
							
								  eval SET @aborted_clients= SUBSTRING('$aborted_clients', 16)+0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  dec $retries;
							 | 
						||
| 
								 | 
							
								  if (!$retries)
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    die Failed to detect that client has been aborted;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								# The server has disconnected, add small sleep to make sure
							 | 
						||
| 
								 | 
							
								# the disconnect has reached client
							 | 
						||
| 
								 | 
							
								let $wait_condition= SELECT COUNT(*)=1 FROM information_schema.processlist;
							 | 
						||
| 
								 | 
							
								--source include/wait_condition.inc
							 | 
						||
| 
								 | 
							
								--echo connection default;
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								# When the connection is closed in this way, the error code should
							 | 
						||
| 
								 | 
							
								# be consistent see Bug#2845 for an explanation
							 | 
						||
| 
								 | 
							
								# depending on platform/client, either errno 2006 or 2013 can occur below
							 | 
						||
| 
								 | 
							
								--error 2006,2013
							 | 
						||
| 
								 | 
							
								SELECT 2;
							 | 
						||
| 
								 | 
							
								--echo --enable_reconnect;
							 | 
						||
| 
								 | 
							
								--enable_reconnect
							 | 
						||
| 
								 | 
							
								SELECT 3;
							 | 
						||
| 
								 | 
							
								# Disconnect so that we will not be confused by a future abort from this
							 | 
						||
| 
								 | 
							
								# connection.
							 | 
						||
| 
								 | 
							
								--echo disconnection default;
							 | 
						||
| 
								 | 
							
								disconnect default;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Do the same test as above on a TCP connection
							 | 
						||
| 
								 | 
							
								# (which we get by specifying an ip adress)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Connect with another connection and reset counters
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								--echo connection wait_con;
							 | 
						||
| 
								 | 
							
								connection wait_con;
							 | 
						||
| 
								 | 
							
								FLUSH STATUS; # Reset counters
							 | 
						||
| 
								 | 
							
								let $retries=300;
							 | 
						||
| 
								 | 
							
								SET @aborted_clients= 0;
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo connection con1;
							 | 
						||
| 
								 | 
							
								connect (con1,127.0.0.1,root,,test,$MASTER_MYPORT,);
							 | 
						||
| 
								 | 
							
								--echo --disable_reconnect;
							 | 
						||
| 
								 | 
							
								--disable_reconnect
							 | 
						||
| 
								 | 
							
								SELECT 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Switch to wait_con and wait until server has aborted the connection
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								--echo connection wait_con;
							 | 
						||
| 
								 | 
							
								connection wait_con;
							 | 
						||
| 
								 | 
							
								while (!`select @aborted_clients`)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  real_sleep 0.1;
							 | 
						||
| 
								 | 
							
								  let $aborted_clients = `SHOW STATUS LIKE 'aborted_clients'`;
							 | 
						||
| 
								 | 
							
								  eval SET @aborted_clients= SUBSTRING('$aborted_clients', 16)+0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  dec $retries;
							 | 
						||
| 
								 | 
							
								  if (!$retries)
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    die Failed to detect that client has been aborted;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								# The server has disconnected, add small sleep to make sure
							 | 
						||
| 
								 | 
							
								# the disconnect has reached client
							 | 
						||
| 
								 | 
							
								let $wait_condition= SELECT COUNT(*)=1 FROM information_schema.processlist;
							 | 
						||
| 
								 | 
							
								--source include/wait_condition.inc
							 | 
						||
| 
								 | 
							
								disconnect wait_con;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo connection con1;
							 | 
						||
| 
								 | 
							
								connection con1;
							 | 
						||
| 
								 | 
							
								# When the connection is closed in this way, the error code should
							 | 
						||
| 
								 | 
							
								# be consistent see Bug#2845 for an explanation
							 | 
						||
| 
								 | 
							
								# depending on platform/client, either errno 2006 or 2013 can occur below
							 | 
						||
| 
								 | 
							
								--error 2006,2013
							 | 
						||
| 
								 | 
							
								SELECT 2;
							 | 
						||
| 
								 | 
							
								--echo --enable_reconnect;
							 | 
						||
| 
								 | 
							
								--enable_reconnect
							 | 
						||
| 
								 | 
							
								SELECT 3;
							 | 
						||
| 
								 | 
							
								--replace_result $start_value <start_value>
							 | 
						||
| 
								 | 
							
								eval SET @@global.wait_timeout= $start_value;
							 | 
						||
| 
								 | 
							
								--echo disconnection con1;
							 | 
						||
| 
								 | 
							
								disconnect con1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The last connect is to keep tools checking the current test happy.
							 | 
						||
| 
								 | 
							
								connect (default,localhost,root,,test,,);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Wait till all disconnects are completed
							 | 
						||
| 
								 | 
							
								--source include/wait_until_count_sessions.inc
							 | 
						||
| 
								 | 
							
								
							 |