1# Created: Horst Hunger 2014-05-09
2# WL#3836:  Method to bring servers off line
3
4-- source include/not_embedded.inc
5-- source include/not_threadpool.inc
6
7# Save the global value to be used to restore the original value.
8SET @global_saved_tmp =  @@global.offline_mode;
9
10--enable_connect_log
11# This count may not be 1, because of the probably existing connections
12# from the previous/parallel test runs
13let $user_count= `SELECT COUNT(USER) FROM INFORMATION_SCHEMA.PROCESSLIST`;
14
15# test case 2.1.1 1)
16# Create 3 non-super users
17
18CREATE USER 'user1'@'localhost';
19CREATE USER 'user2'@'localhost';
20CREATE USER 'user3'@'localhost';
21--connect(conu1,localhost,user1)
22--connect(conu2,localhost,user2)
23--connect(conu3,localhost,user3)
24
25--error ER_SPECIFIC_ACCESS_DENIED_ERROR
26SET GLOBAL offline_mode = ON;
27
28--connection default
29
30SELECT COUNT(USER) FROM INFORMATION_SCHEMA.PROCESSLIST;
31SHOW STATUS LIKE 'threads_connected';
32
33SET GLOBAL offline_mode = ON;
34
35# Wait until all non super user have been disconnected (for slow machines)
36let $count_sessions= $user_count;
37--source include/wait_until_count_sessions.inc
38
39SELECT COUNT(USER) FROM INFORMATION_SCHEMA.PROCESSLIST;
40SHOW STATUS LIKE 'threads_connected';
41
42# test case 2.1.1 6)
43--echo error ER_SERVER_OFFLINE_MODE
44--error ER_SERVER_OFFLINE_MODE
45--connection conu1
46
47--connection default
48SELECT COUNT(USER) FROM INFORMATION_SCHEMA.PROCESSLIST;
49SHOW STATUS LIKE 'threads_connected';
50SET GLOBAL offline_mode = OFF;
51
52# test case 2.1.1 2)
53# Create another super user session to see if it also survies.
54--connect(conu4,localhost,root)
55SELECT COUNT(USER) FROM INFORMATION_SCHEMA.PROCESSLIST;
56SHOW STATUS LIKE 'threads_connected';
57
58# test case 2.1.1 6)
59--connection default
60SET GLOBAL offline_mode = OFF;
61SELECT COUNT(USER) FROM INFORMATION_SCHEMA.PROCESSLIST;
62SHOW STATUS LIKE 'threads_connected';
63
64# Disconnect cleanup session infos on client side to be able to reconnect.
65--disconnect conu1
66--disconnect conu2
67--disconnect conu3
68--connect(conu1,localhost,user1)
69--connect(conu2,localhost,user2)
70--connect(conu3,localhost,user3)
71
72--connection default
73echo $user_count;
74SELECT COUNT(USER) FROM INFORMATION_SCHEMA.PROCESSLIST;
75SHOW STATUS LIKE 'threads_connected';
76
77SET GLOBAL offline_mode = ON;
78
79# Wait until all non super user have been disconnected (for slow machines)
80let $count_sessions= 1 + $user_count;
81--source include/wait_until_count_sessions.inc
82
83SELECT COUNT(USER) FROM INFORMATION_SCHEMA.PROCESSLIST;
84SHOW STATUS LIKE 'threads_connected';
85
86# Clean up
87--disconnect conu1
88--disconnect conu2
89--disconnect conu3
90--disconnect conu4
91
92# Wait until all users have been disconnected (for slow machines)
93let $count_sessions= $user_count;
94--source include/wait_until_count_sessions.inc
95
96DROP USER 'user1'@'localhost';
97DROP USER 'user2'@'localhost';
98DROP USER 'user3'@'localhost';
99
100--echo # Restoring the original values.
101SET @@global.offline_mode = @global_saved_tmp;
102
103