summaryrefslogtreecommitdiff
path: root/mysql-test/suite/sys_vars/t/wait_timeout_func.test
blob: 6b7c8d016d25ede030e6e5323357a920340d8c70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
############## mysql-test\t\wait_timeout_func.test ############################
#                                                                             #
# Variable Name: wait_timeout                                                 #
# Scope: GLOBAL | SESSION                                                     #
# Access Type: Dynamic                                                        #
# Data Type: numeric                                                          #
# Default Value:                                                              #
# Range:                                                                      #
#                                                                             #
#                                                                             #
# Creation Date: 2008-03-07                                                   #
# Author:  Salman Rawala                                                      #
#                                                                             #
# Modified: HHunger 2008-08-27 Simplified the test and replaced the sleeps.   #
#                                                                             #
# Description: Test Cases of Dynamic System Variable wait_timeout             #
#              that checks the functionality of this variable                 #
#                                                                             #
# Reference:                                                                  #
#  http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html        #
#                                                                             #
###############################################################################

--source include/not_embedded.inc

SET @start_value= @@global.wait_timeout;


--echo '#--------------------FN_DYNVARS_186_01-------------------------#'
#######################################################################
# 1. test of scope session
#######################################################################

SET @start_time= UNIX_TIMESTAMP();
--echo connect (test_con1, localhost, root,,);
connect (test_con1, localhost, root,,);
connection test_con1;

# If not explicitly changed, @@session.wait_timeout equals @@global.wait_timeout.
SELECT @@session.wait_timeout = @@global.wait_timeout AS 'Expect 1';

# Find a small value <> @@global.wait_timeout.
let $session_value =
`SELECT IF(@@global.wait_timeout <> 2 OR @@global.wait_timeout IS NULL, 2, 3)`;
--replace_result $session_value <session_value>
eval SET @@session.wait_timeout = $session_value;

--echo connect (test_con2, localhost, root,,);
connect (test_con2, localhost, root,,);
connection test_con2;

--replace_result $session_value <session_value>
eval SET @@session.wait_timeout = $session_value - 1;

--echo connection default;
connection default;

--echo wait until connections ready
let $wait_condition= SELECT COUNT(*) = 1 FROM information_schema.processlist;
--source include/wait_condition.inc
SELECT info FROM information_schema.processlist;

--echo '#--------------------FN_DYNVARS_186_03-------------------------#'
#######################################################################
# 2. test of scope global
#######################################################################

# Find a small value <> @@global.wait_timeout.
let $global_value = $session_value + 1;
--replace_result $global_value <global_value>
eval SET @@global.wait_timeout= $global_value;

# Changing the @@global.wait_timeout has no influence on the
# @@session.wait_timeout of already established sessions.
SELECT @@session.wait_timeout = @start_value AS 'Expect 1';

--echo connect (test_con3, localhost, root,,);
connect (test_con3, localhost, root,,);
connection test_con3;

# If not explicitly changed, @@session.wait_timeout equals @@global.wait_timeout.
SELECT @@session.wait_timeout = @@global.wait_timeout AS 'Expect 1';

--echo connection default;
connection default;
# We can be sure that the connections test_con1 and test_con2 must be
# established because both have already executed a SET @@session.wait_timeout.
# This means they are or at least were visible within the processlist.
# Therefore we can now simply wait till both disappear from the processlist.
let $wait_condition= SELECT COUNT(*) = 1 FROM information_schema.processlist;
--source include/wait_condition.inc
SELECT info FROM information_schema.processlist;

--replace_result $global_value <global_value> $session_value <session_value>;
eval SELECT UNIX_TIMESTAMP() - @start_time >= $global_value + $session_value;
SET @@global.wait_timeout= @start_value;