146 lines
6.3 KiB
Plaintext
146 lines
6.3 KiB
Plaintext
## UNIX Socket connections
|
|
|
|
## Preamble
|
|
--source include/not_windows.inc
|
|
--source ../include/have_performance_schema_threads.inc
|
|
--source include/xplugin_preamble.inc
|
|
--source include/xplugin_create_user.inc
|
|
|
|
## Test starts here
|
|
--write_file $MYSQL_TMP_DIR/check_unixsocket.tmp
|
|
## Test data
|
|
#Ensure that each of following uses UNIX Socket
|
|
-->stmtsql SELECT CONNECTION_TYPE from performance_schema.threads where processlist_command='Query';
|
|
-->recvresult
|
|
EOF
|
|
|
|
--write_file $MYSQL_TMP_DIR/file.sock
|
|
EOF
|
|
|
|
--write_file $MYSQL_TMP_DIR/check_connection.tmp
|
|
EOF
|
|
|
|
--exec $MYSQLXTEST --socket=$MASTER_X_MYSOCK -ux_root --password='' --file=$MYSQL_TMP_DIR/check_unixsocket.tmp 2>&1
|
|
|
|
# Read only variable 'mysqlx_socket'
|
|
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
|
SET GLOBAL mysqlx_socket=null;
|
|
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
|
SET @@global.mysqlx_socket='invalid';
|
|
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
|
SET GLOBAL mysqlx_socket=$MYSQL_TMP_DIR/socket_mysqlx.sock;
|
|
|
|
--let UNIX_SOCKET_REGEX= /( |=)\/.*\.(sock|socket)/\1 SOCKET/
|
|
|
|
call mtr.add_suppression("Plugin mysqlx reported: .Setup of socket: '' failed, the socket file path is empty");
|
|
let $restart_parameters = restart: --loose-mysqlx-socket=;
|
|
--let $wait_for_unixsocket_status = undefined_value
|
|
--source include/restart_mysqld.inc
|
|
|
|
--replace_regex $UNIX_SOCKET_REGEX
|
|
--error 1
|
|
--exec $MYSQLXTEST --socket=$MASTER_X_MYSOCK -ux_root --password='' --file=$MYSQL_TMP_DIR/check_unixsocket.tmp 2>&1
|
|
|
|
|
|
call mtr.add_suppression("Plugin mysqlx reported: .Setup of socket: '\(.+\)' failed, can't create lock file /dev/null/mysqlx\.sock\.lock");
|
|
let $restart_parameters = restart: --loose-mysqlx-socket="/dev/null/mysqlx.sock";
|
|
--let $wait_for_unixsocket_status = undefined_value
|
|
--source include/restart_mysqld.inc
|
|
|
|
--replace_regex $UNIX_SOCKET_REGEX
|
|
--error 1
|
|
--exec $MYSQLXTEST --socket=$MASTER_X_MYSOCK -ux_root --password='' --file=$MYSQL_TMP_DIR/check_unixsocket.tmp 2>&1
|
|
|
|
--replace_regex $UNIX_SOCKET_REGEX
|
|
--error 1
|
|
--exec $MYSQLXTEST --socket="/dev/null/mysqlx.sock" -ux_root --password='' --file=$MYSQL_TMP_DIR/check_unixsocket.tmp 2>&1
|
|
|
|
# Use the same socket as mysqld uses
|
|
# X Plugin should fail with allocation
|
|
call mtr.add_suppression("Plugin mysqlx reported: .Setup of socket: '\(.+\)' failed, lock file wasn't allocated by X Plugin");
|
|
|
|
--replace_regex $UNIX_SOCKET_REGEX
|
|
let $restart_parameters = restart: --loose-mysqlx-socket=$MASTER_MYSOCK;
|
|
|
|
# There is no X Plugin installed, skip waiting
|
|
--let $wait_for_tcpsocket_status = no_wait
|
|
--let $wait_for_unixsocket_status = no_wait
|
|
--source include/restart_mysqld.inc
|
|
|
|
--let $wait_for_unixsocket_status = undefined_value
|
|
--source include/xplugin_reset_and_wait.inc
|
|
|
|
# The legacy UNIX socket should be still valid
|
|
connect(socket_con,localhost,x_root,,,,$MASTER_MYSOCK);
|
|
connection default;
|
|
disconnect socket_con;
|
|
|
|
|
|
# Try to use a file as UNIX socket
|
|
--replace_regex $UNIX_SOCKET_REGEX
|
|
let $restart_parameters = restart: --loose-mysqlx-socket=$MYSQL_TMP_DIR/file.sock;
|
|
--let $wait_for_unixsocket_status = valid_value
|
|
--source include/restart_mysqld.inc
|
|
|
|
--exec $MYSQLXTEST --socket=$MYSQL_TMP_DIR/file.sock -ux_root --password='' --file=$MYSQL_TMP_DIR/check_unixsocket.tmp 2>&1
|
|
|
|
|
|
# Try to use directory as UNIX socket
|
|
--let DIR_NAME= d.sock
|
|
call mtr.add_suppression("Plugin mysqlx reported: .Setup of socket: '\(.+\)' failed, .bind... on UNIX socket failed with error");
|
|
--mkdir $MYSQL_TMP_DIR/$DIR_NAME
|
|
--replace_regex $UNIX_SOCKET_REGEX
|
|
let $restart_parameters = restart: --loose-mysqlx-socket=$MYSQL_TMP_DIR/$DIR_NAME;
|
|
--let $wait_for_unixsocket_status = undefined_value
|
|
--source include/restart_mysqld.inc
|
|
|
|
--replace_regex /ERROR: (Connection refused|Socket operation on non-socket), while connecting to \/.*\.(sock|socket)/ERROR: Connection refused, while connecting to SOCKET/
|
|
--error 1
|
|
--exec $MYSQLXTEST --socket=$MYSQL_TMP_DIR/$DIR_NAME -ux_root --password='' --file=$MYSQL_TMP_DIR/check_unixsocket.tmp 2>&1
|
|
|
|
|
|
# Try to create a UNIX socket inside directory without permissions to it
|
|
call mtr.add_suppression("Plugin mysqlx reported: .Setup of socket: '\(.+\)' failed, can't create lock file .+\.lock");
|
|
--chmod 0000 $MYSQL_TMP_DIR/$DIR_NAME/
|
|
--replace_regex $UNIX_SOCKET_REGEX
|
|
let $restart_parameters = restart: --loose-mysqlx-socket=$MYSQL_TMP_DIR/$DIR_NAME/x.sock;
|
|
--let $wait_for_unixsocket_status = undefined_value
|
|
--source include/restart_mysqld.inc
|
|
|
|
--replace_regex $UNIX_SOCKET_REGEX
|
|
--error 1
|
|
--exec $MYSQLXTEST --socket=$MYSQL_TMP_DIR/$DIR_NAME/x.sock -ux_root --password='' --file=$MYSQL_TMP_DIR/check_unixsocket.tmp 2>&1
|
|
--chmod 0777 $MYSQL_TMP_DIR/$DIR_NAME/
|
|
|
|
|
|
call mtr.add_suppression("Plugin mysqlx reported: .Setup of socket: '\(.+\)' failed, can't create lock file .*ne/x.sock.lock");
|
|
--replace_regex $UNIX_SOCKET_REGEX
|
|
# Following directory /no_existing/ was shorten to /ne/
|
|
let $restart_parameters = restart: --loose-mysqlx-socket=$MYSQL_TMP_DIR/$DIR_NAME/ne/x.sock;
|
|
--let $wait_for_unixsocket_status = undefined_value
|
|
--source include/restart_mysqld.inc
|
|
|
|
--replace_regex $UNIX_SOCKET_REGEX
|
|
--error 1
|
|
--exec $MYSQLXTEST --socket=$MYSQL_TMP_DIR/$DIR_NAME/ne/x.sock -ux_root --password='' --file=$MYSQL_TMP_DIR/check_unixsocket.tmp 2>&1
|
|
|
|
|
|
--mkdir $MYSQL_TMP_DIR/long_dir012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
|
|
call mtr.add_suppression("Plugin mysqlx reported: .Setup of socket: '\(.+\)' failed, the socket file path is too long");
|
|
--replace_regex $UNIX_SOCKET_REGEX
|
|
let $restart_parameters = restart: --loose-mysqlx-socket=$MYSQL_TMP_DIR/long_dir012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789/x.sock;
|
|
--let $wait_for_unixsocket_status = undefined_value
|
|
--source include/restart_mysqld.inc
|
|
|
|
--replace_regex /ERROR: UNIX Socket file name too long, size should be less or equal [0-9]+/ERROR: UNIX Socket file name too long, size should be less or equal LENGTH/
|
|
--error 1
|
|
--exec $MYSQLXTEST --socket=$MYSQL_TMP_DIR/long_dir012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789/x.sock -ux_root --password='' --file=$MYSQL_TMP_DIR/check_unixsocket.tmp 2>&1
|
|
|
|
## Cleanup
|
|
--rmdir $MYSQL_TMP_DIR/$DIR_NAME
|
|
--rmdir $MYSQL_TMP_DIR/long_dir012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
|
|
--remove_file $MYSQL_TMP_DIR/check_unixsocket.tmp
|
|
--remove_file $MYSQL_TMP_DIR/check_connection.tmp
|
|
--source include/xplugin_drop_user.inc
|
|
|