call mtr.add_suppression("Plugin mysqlx reported: 'Unable to switch context to user mysql.session'"); call mtr.add_suppression("Plugin mysqlx reported: 'Unable to accept connection, disconnecting client'"); call mtr.add_suppression("Plugin mysqlx reported: 'Could not open internal MySQL session'"); call mtr.add_suppression("Plugin mysqlx reported: '.*: Error initializing session for connection: Could not open session'"); call mtr.add_suppression("Plugin 'mysqlx' has ref_count=5 after shutdown"); call mtr.add_suppression("Plugin 'mysqlx' will be forced to shutdown"); # # Login with valid account # RUN SELECT PLUGIN_NAME,PLUGIN_VERSION,PLUGIN_STATUS,PLUGIN_TYPE from information_schema.plugins where PLUGIN_NAME LIKE '%mysqlx%' PLUGIN_NAME PLUGIN_VERSION PLUGIN_STATUS PLUGIN_TYPE mysqlx 1.0 ACTIVE DAEMON mysqlx_cache_cleaner 1.0 ACTIVE AUDIT 0 rows affected RUN create user xplugin@localhost identified by 'xplugin' 0 rows affected RUN alter user xplugin@localhost password expire 0 rows affected RUN create user nonblank@localhost identified by 'nonblank' 0 rows affected RUN create user blank@localhost identified by '' 0 rows affected RUN CREATE USER 'abc'@'localhost' IDENTIFIED BY 'abc' ACCOUNT LOCK 0 rows affected RUN create user ''@localhost identified by 'ramana' 0 rows affected RUN create user special@localhost identified by '1aram@&Tpu' 0 rows affected RUN create user session@localhost identified by 'session' 0 rows affected RUN grant all on *.* to session@localhost 0 rows affected RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 0 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 1 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Variable_name Value Mysqlx_sessions 1 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 0 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 0 rows affected Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_connections_closed' == 1 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 1 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 1 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 # # Try to login with bogus accounts that could match a valid account by collation # Application terminated with expected error: Authentication failed, check username and password or try a secure connection (code 2510) ok Application terminated with expected error: Authentication failed, check username and password or try a secure connection (code 2510) ok # Syncing with status [ 'Mysqlx_sessions_rejected' == 2 ] # Syncing with status [ 'Mysqlx_connections_closed' == 3 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 3 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 3 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 2 # # Try login with user having special characters in password when mysqlxplugin installed # RUN select user(),current_user(),@@bind_address user() current_user() @@bind_address special@localhost special@localhost * 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 3 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 4 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected Got expected error (code 0) RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Variable_name Value Mysqlx_sessions 1 Mysqlx_sessions_accepted 2 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 2 0 rows affected Got expected error (code 0) Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_sessions_rejected' == 2 ] # Syncing with status [ 'Mysqlx_connections_closed' == 4 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 4 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 4 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 2 Mysqlx_sessions_closed 2 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 2 # # try login with invalid host when mysqx plugin is installed # Application terminated with expected error: No such host is known 'invalid' (code 2005) ok # Syncing with status [ 'Mysqlx_sessions_rejected' == 2 ] # Syncing with status [ 'Mysqlx_connections_closed' == 4 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 4 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 4 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 2 Mysqlx_sessions_closed 2 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 2 # # Trying with valid user when mysqlx is not installed # # restart: --skip-mysqlx Application terminated with expected error:ERROR: Connection refused connecting to HOST:PORT (code 2002) ok show status like 'Mysqlx_connections_closed'; Variable_name Value show status like 'Mysqlx_connections_accepted'; Variable_name Value show status like 'Mysqlx_connection_accept_errors'; Variable_name Value show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value # # Try login using mysqlx protocol when server and mysqlx loaded with super user # # restart: RUN select user(),current_user(),@@bind_address user() current_user() @@bind_address x_root@localhost x_root@localhost * 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 0 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 1 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected Got expected error (code 0) RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Variable_name Value Mysqlx_sessions 1 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 0 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 0 rows affected Got expected error (code 0) Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_connections_closed' == 1 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 1 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 1 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 # # Try login with valid user but incorrect password # Application terminated with expected error: Authentication failed, check username and password or try a secure connection (code 2510) ok # Syncing with status [ 'Mysqlx_sessions_rejected' == 1 ] # Syncing with status [ 'Mysqlx_connections_closed' == 2 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 2 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 2 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 1 # # Try login with user doesn't exists when mysqlx installed # Application terminated with expected error: Authentication failed, check username and password or try a secure connection (code 2510) ok # Syncing with status [ 'Mysqlx_sessions_rejected' == 2 ] # Syncing with status [ 'Mysqlx_connections_closed' == 3 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 3 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 3 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 2 # # Try login with user whose password expired when mysqlx installed # Application terminated with expected error: Your password has expired. To log in you must change it using a client that supports expired passwords. (code 1862) ok # Syncing with status [ 'Mysqlx_sessions_rejected' == 3 ] # Syncing with status [ 'Mysqlx_connections_closed' == 4 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 4 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 4 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 3 # # Try login with user whose account is locked when mysqlx installed # Application terminated with expected error: Access denied for user 'abc'@'localhost'. Account is locked. (code 3118) ok # Syncing with status [ 'Mysqlx_sessions_rejected' == 4 ] # Syncing with status [ 'Mysqlx_connections_closed' == 5 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 5 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 5 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 4 # # Try login with internal user account and expect account is locked error # Application terminated with expected error: Authentication failed, check username and password or try a secure connection (code 2510) # Syncing with status [ 'Mysqlx_sessions_rejected' == 5 ] # Syncing with status [ 'Mysqlx_connections_closed' == 6 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 6 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 6 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 5 # # Login with valid user and valid password when mysqlx installed # RUN select user(),current_user(),@@bind_address user() current_user() @@bind_address nonblank@localhost nonblank@localhost * 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 6 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 7 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected Got expected error (code 0) RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Variable_name Value Mysqlx_sessions 1 Mysqlx_sessions_accepted 2 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 5 0 rows affected Got expected error (code 0) Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_sessions_closed' == 2 ] # Syncing with status [ 'Mysqlx_connections_closed' == 7 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 7 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 7 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 2 Mysqlx_sessions_closed 2 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 5 # # Login with valid user and blank password when mysqlx installed # RUN select user(),current_user(),@@bind_address user() current_user() @@bind_address blank@localhost blank@localhost * 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 7 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 8 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected Got expected error (code 0) RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Variable_name Value Mysqlx_sessions 1 Mysqlx_sessions_accepted 3 Mysqlx_sessions_closed 2 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 5 0 rows affected Got expected error (code 0) Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_sessions_closed' == 3 ] # Syncing with status [ 'Mysqlx_connections_closed' == 8 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 8 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 8 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 3 Mysqlx_sessions_closed 3 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 5 # # Try login with valid user when server started with localhost as bind-address and mysqlx loaded # # restart: --bind-address=localhost RUN select user(),current_user(),@@bind_address user() current_user() @@bind_address nonblank@localhost nonblank@localhost localhost 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 0 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 1 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected Got expected error (code 0) RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Variable_name Value Mysqlx_sessions 1 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 0 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 0 rows affected Got expected error (code 0) Mysqlx.Ok { msg: "bye!" } ok RUN select user(),current_user(),@@bind_address user() current_user() @@bind_address nonblank@localhost nonblank@localhost localhost 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 1 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 2 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected Got expected error (code 0) RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Variable_name Value Mysqlx_sessions 1 Mysqlx_sessions_accepted 2 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 0 rows affected Got expected error (code 0) Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_sessions_closed' == 2 ] # Syncing with status [ 'Mysqlx_connections_closed' == 2 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 2 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 2 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 2 Mysqlx_sessions_closed 2 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 # # Try login with valid user when server started with 127.0.0.1 as bind-address and mysqlx loaded # # restart: --bind-address=127.0.0.1 RUN select user(),current_user(),@@bind_address user() current_user() @@bind_address nonblank@localhost nonblank@localhost 127.0.0.1 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 0 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 1 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected Got expected error (code 0) RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Variable_name Value Mysqlx_sessions 1 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 0 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 0 rows affected Got expected error (code 0) Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_sessions_closed' == 1 ] # Syncing with status [ 'Mysqlx_connections_closed' == 1 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 1 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 1 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 RUN select user(),current_user(),@@bind_address user() current_user() @@bind_address nonblank@localhost nonblank@localhost 127.0.0.1 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 1 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 2 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected Got expected error (code 0) RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Variable_name Value Mysqlx_sessions 1 Mysqlx_sessions_accepted 2 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 0 rows affected Got expected error (code 0) Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_sessions_closed' == 2 ] # Syncing with status [ 'Mysqlx_connections_closed' == 2 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 2 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 2 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 2 Mysqlx_sessions_closed 2 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 # # Try login with valid non-super and super user when server is in offline mode and mysqlx loaded # # restart: --offline_mode=ON Application terminated with expected error: The server is currently in offline mode (code 3032) ok # Syncing with status [ 'Mysqlx_sessions_rejected' == 1 ] # Syncing with status [ 'Mysqlx_connections_closed' == 1 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 1 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 1 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 0 Mysqlx_sessions_closed 0 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 1 RUN select user(),current_user(),@@bind_address user() current_user() @@bind_address x_root@localhost x_root@localhost * 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 1 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 2 0 rows affected Got expected error (code 0) RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected Got expected error (code 0) RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Variable_name Value Mysqlx_sessions 1 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 0 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 1 0 rows affected Got expected error (code 0) Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_sessions_closed' == 1 ] # Syncing with status [ 'Mysqlx_connections_closed' == 2 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 2 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 2 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 1 # # Start server with session tracking variables and monitor them using xprotocol # # restart: RUN SET @@session.session_track_system_variables='mysqlx_port,mysqlx_idle_worker_thread_timeout,mysqlx_max_allowed_packet,mysqlx_max_connections,mysqlx_min_worker_threads' 0 rows affected RUN show variables like '%session_track%' Variable_name Value session_track_gtids OFF session_track_index OFF session_track_schema ON session_track_state_change OFF session_track_system_variables mysqlx_port,mysqlx_idle_worker_thread_timeout,mysqlx_max_allowed_packet,mysqlx_max_connections,mysqlx_min_worker_threads session_track_transaction_info OFF 0 rows affected RUN uninstall plugin mysqlx; Got expected error: Command not supported by pluggable protocols (code 3130) RUN show warnings Level Code Message Error 3130 Command not supported by pluggable protocols 0 rows affected RUN show variables like '%mysqlx_max_connections%' Variable_name Value mysqlx_max_connections 100 0 rows affected RUN set @@global.mysqlx_max_connections=100 0 rows affected RUN show variables like '%mysqlx_max_connections%' Variable_name Value mysqlx_max_connections 100 0 rows affected RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 0 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 1 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Variable_name Value Mysqlx_sessions 1 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 0 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 0 rows affected Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_sessions_closed' == 1 ] # Syncing with status [ 'Mysqlx_connections_closed' == 1 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 1 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 1 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 # # Try login with user whose password expired when mysqlx installed and when server started with skip-disconnect-on-expired-password option # # restart: --skip-disconnect-on-expired-password NOTICE: Account password expired RUN select user(),current_user(),@@bind_address Got expected error: You must reset your password using ALTER USER statement before executing this statement. (code 1820) RUN show status like 'Mysqlx_connections_closed' Got expected error: You must reset your password using ALTER USER statement before executing this statement. (code 1820) RUN show status like 'Mysqlx_connections_accepted' Got expected error: You must reset your password using ALTER USER statement before executing this statement. (code 1820) RUN show status like 'Mysqlx_connection_accept_errors' Got expected error: You must reset your password using ALTER USER statement before executing this statement. (code 1820) RUN show status where `Variable_name` like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error' Got expected error: You must reset your password using ALTER USER statement before executing this statement. (code 1820) Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_sessions_closed' == 1 ] # Syncing with status [ 'Mysqlx_connections_closed' == 1 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 1 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 1 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 show status where `Variable_name`like 'Mysqlx_sessions%' and not `Variable_name` like 'Mysqlx_sessions_fatal_error'; Variable_name Value Mysqlx_sessions 0 Mysqlx_sessions_accepted 1 Mysqlx_sessions_closed 1 Mysqlx_sessions_killed 0 Mysqlx_sessions_rejected 0 # # Try to open xprotocol sessions more than mysqlx_max_connections, # expect error for last connection # # restart: --mysqlx_max_connections=2 RUN create user con1@localhost identified by 'con1' 0 rows affected RUN create user con2@localhost identified by 'con2' 0 rows affected RUN grant all on *.* to con2@localhost 0 rows affected Test data send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } expect Mysqlx.Sql.StmtExecuteOk client_id user host 1 x_root localhost command ok Namespace 'xplugin' is deprecated, please use 'mysqlx' instead create and activate new session con1 connecting... active session is now 'con1' send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } expect Mysqlx.Sql.StmtExecuteOk client_id user host 2 con1 localhost command ok Namespace 'xplugin' is deprecated, please use 'mysqlx' instead open 3rd xprotocol connection where 2 sessions already opened (may fail) connecting... active session is now 'con2' closing session con2 switched to session default send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } client_id user host 1 x_root localhost 2 con1 localhost command ok RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 0 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 2 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_connections_closed' == 2 ] # Syncing with status [ 'Mysqlx_connections_accepted' == 2 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 2 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 2 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 # # Try to open xprotocol sessions as that of mysqlx_max_connections set # drop user con1@localhost; drop user con2@localhost; # restart: --mysqlx_max_connections=3 RUN create user con1@localhost identified by 'con1' 0 rows affected RUN create user con2@localhost identified by 'con2' 0 rows affected RUN grant all on *.* to con2@localhost 0 rows affected Test data send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } expect Mysqlx.Sql.StmtExecuteOk client_id user host 1 x_root localhost command ok Namespace 'xplugin' is deprecated, please use 'mysqlx' instead create and activate new session con1 connecting... active session is now 'con1' send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } expect Mysqlx.Sql.StmtExecuteOk client_id user host 2 con1 localhost command ok Namespace 'xplugin' is deprecated, please use 'mysqlx' instead open 3rd xprotocol connection where 2 sessions already opened connecting... active session is now 'con2' send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } client_id user host 1 x_root localhost 2 con1 localhost 3 con2 localhost command ok Namespace 'xplugin' is deprecated, please use 'mysqlx' instead RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 0 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 3 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected closing session con2 Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_connections_closed' == 3 ] # Syncing with status [ 'Mysqlx_connections_accepted' == 3 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 3 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 3 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 # # Open max allowed connections and expect error for new connections and changes value and connect again,expect success # RUN create user xcon1@localhost identified by 'xcon1' 0 rows affected RUN create user xcon2@localhost identified by 'xcon2' 0 rows affected RUN grant all on *.* to xcon2@localhost 0 rows affected RUN set @@global.mysqlx_max_connections=2 0 rows affected Test data send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } expect Mysqlx.Sql.StmtExecuteOk client_id user host 4 x_root localhost command ok Namespace 'xplugin' is deprecated, please use 'mysqlx' instead RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 3 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 4 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected create and activate new session con1 connecting... active session is now 'xcon1' send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } expect Mysqlx.Sql.StmtExecuteOk client_id user host 5 xcon1 localhost command ok Namespace 'xplugin' is deprecated, please use 'mysqlx' instead RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 3 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 5 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected open 3rd xprotocol connection where 2 sessions already opened this scenario is related to Bug#21374656 connecting... active session is now 'xcon2' closing session xcon2 switched to session default switched to session default send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } client_id user host 4 x_root localhost 5 xcon1 localhost command ok RUN set @@global.mysqlx_max_connections=3 0 rows affected RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 3 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 5 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected connecting... active session is now 'xcon2' send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } client_id user host 4 x_root localhost 5 xcon1 localhost 7 xcon2 localhost command ok Namespace 'xplugin' is deprecated, please use 'mysqlx' instead RUN drop user xcon1@localhost 0 rows affected RUN drop user xcon2@localhost 0 rows affected RUN set @@global.mysqlx_max_connections=100 0 rows affected RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 3 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 6 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected closing session xcon2 Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_connections_closed' == 6 ] # Syncing with status [ 'Mysqlx_connections_accepted' == 6 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 6 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 6 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 kill xprotocol session when some operations are going on there using mysqx protocol RUN create user xcon1@localhost identified by 'xcon1' 0 rows affected RUN create user xcon2@localhost identified by 'xcon2' 0 rows affected RUN grant all on *.* to xcon2@localhost 0 rows affected RUN SET GLOBAL mysqlx_connect_timeout = 300 0 rows affected Test data send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } expect Mysqlx.Sql.StmtExecuteOk client_id user host 8 x_root localhost command ok Namespace 'xplugin' is deprecated, please use 'mysqlx' instead RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 6 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 7 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected create and activate new session con1 connecting... active session is now 'xcon1' RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 6 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 8 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } expect Mysqlx.Sql.StmtExecuteOk client_id user host 9 xcon1 localhost command ok Namespace 'xplugin' is deprecated, please use 'mysqlx' instead send Mysqlx.Sql.StmtExecute { stmt: "select sleep(100);" } open 3rd xprotocol connection where 2 sessions already opened connecting... active session is now 'xcon2' RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 6 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 9 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected switched to session default send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } client_id user host 8 x_root localhost 9 xcon1 localhost 10 xcon2 localhost command ok RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 6 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 9 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected connecting... active session is now 'xcon3' send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } client_id user host 8 x_root localhost 9 xcon1 localhost 10 xcon2 localhost 11 xcon2 localhost command ok Namespace 'xplugin' is deprecated, please use 'mysqlx' instead send Mysqlx.Sql.StmtExecute { stmt: "kill_client" args { type: SCALAR scalar { type: V_UINT v_unsigned_int: 9 } } namespace: "xplugin" } expect Mysqlx.Sql.StmtExecuteOk command ok switched to session xcon1 Server disconnected closing session xcon1 switched to session default send Mysqlx.Sql.StmtExecute { stmt: "list_clients" namespace: "xplugin" } client_id user host 8 x_root localhost 10 xcon2 localhost 11 xcon2 localhost command ok RUN drop user xcon1@localhost 0 rows affected RUN drop user xcon2@localhost 0 rows affected RUN show status like 'Mysqlx_connections_closed' Variable_name Value Mysqlx_connections_closed 7 0 rows affected RUN show status like 'Mysqlx_connections_accepted' Variable_name Value Mysqlx_connections_accepted 10 0 rows affected RUN show status like 'Mysqlx_connection_accept_errors' Variable_name Value Mysqlx_connection_accept_errors 0 0 rows affected Mysqlx.Ok { msg: "bye!" } ok # Syncing with status [ 'Mysqlx_connections_closed' == 10 ] # Syncing with status [ 'Mysqlx_connections_accepted' == 10 ] show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 10 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 10 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 connecting... Got expected error: Access denied for user 'abc'@'localhost'. Account is locked. (code 3118) ok drop user xplugin@localhost; drop user nonblank@localhost; drop user blank@localhost; drop user abc@localhost; drop user con1@localhost; drop user con2@localhost; show status like 'Mysqlx_connections_closed'; Variable_name Value Mysqlx_connections_closed 12 show status like 'Mysqlx_connections_accepted'; Variable_name Value Mysqlx_connections_accepted 12 show status like 'Mysqlx_connection_accept_errors'; Variable_name Value Mysqlx_connection_accept_errors 0 SET GLOBAL mysqlx_connect_timeout = DEFAULT;