mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 14:02:32 +01:00
5d8598a405
The problem was in dummy grep on AIX and HPUX. The fix is to use more portable patterns. The patch is only for test suite (i.e. does not touch server codebase).
274 lines
9.8 KiB
Text
274 lines
9.8 KiB
Text
###########################################################################
|
|
#
|
|
# This test suite checks the following statements:
|
|
# - SET <instance id>.<option name> = <option value>;
|
|
# - UNSET <instance id>.<option name> = <option value>;
|
|
# - FLUSH INSTANCES;
|
|
#
|
|
# For SET/UNSET we check that:
|
|
# - SET ignores spaces correctly;
|
|
# - UNSET does not allow option-value part (= <option value>);
|
|
# - SET/UNSET can be applied several times w/o error;
|
|
# - SET/UNSET is allowed only for stopped instances;
|
|
# - SET/UNSET updates both the configuration cache in IM and
|
|
# the configuration file;
|
|
#
|
|
# For FLUSH INSTANCES we check that:
|
|
# - FLUSH INSTANCES is allowed only when all instances are stopped;
|
|
#
|
|
# According to the IM implementation details, we should play at least with the
|
|
# following options:
|
|
# - server_id
|
|
# - port
|
|
# - nonguarded
|
|
#
|
|
# Let's test SET statement on the option 'server_id'. It's expected that
|
|
# originally the instances have the following server ids and states:
|
|
# - mysqld1: server_id: 1; running (online)
|
|
# - mysqld2: server_id: 2; stopped (offline)
|
|
#
|
|
# NOTE: each CREATE INSTANCE statement must specify socket-file-name, otherwise
|
|
# this results of the test can be affected by another running test suite.
|
|
#
|
|
###########################################################################
|
|
|
|
--source include/im_check_os.inc
|
|
|
|
###########################################################################
|
|
#
|
|
# Check starting conditions.
|
|
#
|
|
###########################################################################
|
|
|
|
# - check the configuration file;
|
|
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf ;
|
|
--echo --------------------------------------------------------------------
|
|
|
|
# - check the running instances.
|
|
|
|
--connect (mysql1_con,localhost,root,,mysql,$IM_MYSQLD1_PORT,$IM_MYSQLD1_SOCK)
|
|
|
|
--connection mysql1_con
|
|
|
|
SHOW VARIABLES LIKE 'server_id';
|
|
|
|
--connection default
|
|
|
|
# - check the internal cache.
|
|
|
|
SHOW INSTANCES;
|
|
|
|
###########################################################################
|
|
#
|
|
# Check that SET/UNSET is allowed only for stopped instances.
|
|
#
|
|
###########################################################################
|
|
|
|
# - check that SET/UNSET is denied for running instances;
|
|
|
|
--error 3015 # ER_INSTANCE_IS_ACTIVE
|
|
UNSET mysqld1.server_id;
|
|
|
|
--error 3015 # ER_INSTANCE_IS_ACTIVE
|
|
SET mysqld1.server_id = 11;
|
|
|
|
# - check that SET/UNSET is denied for active instances:
|
|
# - create dummy misconfigured instance;
|
|
# - start it;
|
|
# - try to set/unset options;
|
|
|
|
CREATE INSTANCE mysqld3
|
|
datadir = '/',
|
|
server_id = 3,
|
|
socket = "$MYSQL_TMP_DIR/mysqld_3.sock";
|
|
START INSTANCE mysqld3;
|
|
|
|
# FIXME: START INSTANCE should be synchronous.
|
|
--sleep 3
|
|
# should be longer than monitoring interval and enough to start instance.
|
|
|
|
# NOTE: We can not analyze state of the instance here -- it can be Failed or
|
|
# Starting because Instance Manager is trying to start the misconfigured
|
|
# instance several times.
|
|
|
|
--error 3015 # ER_INSTANCE_IS_ACTIVE
|
|
UNSET mysqld3.server_id;
|
|
|
|
--error 3015 # ER_INSTANCE_IS_ACTIVE
|
|
SET mysqld3.server_id = 11;
|
|
|
|
STOP INSTANCE mysqld3;
|
|
|
|
# FIXME: STOP INSTANCE should be synchronous.
|
|
--sleep 3
|
|
# should be longer than monitoring interval and enough to stop instance.
|
|
|
|
--replace_column 3 VERSION_NUMBER 4 VERSION
|
|
SHOW INSTANCE STATUS mysqld3;
|
|
|
|
# - check that SET/UNSET succeed for stopped instances;
|
|
# - check that SET/UNSET can be applied multiple times;
|
|
|
|
UNSET mysqld2.server_id;
|
|
UNSET mysqld2.server_id;
|
|
|
|
--replace_column 2 option_value
|
|
SHOW INSTANCE OPTIONS mysqld2;
|
|
|
|
SET mysqld2.server_id = 2;
|
|
SET mysqld2.server_id = 2;
|
|
|
|
--replace_column 2 option_value
|
|
SHOW INSTANCE OPTIONS mysqld2;
|
|
|
|
# - check that UNSET does not allow option-value part (= <option value>);
|
|
|
|
--error ER_SYNTAX_ERROR
|
|
UNSET mysqld2.server_id = 11;
|
|
|
|
# - check that SET/UNSET working properly with multiple options;
|
|
|
|
SET mysqld2.aaa, mysqld3.bbb, mysqld2.ccc = 0010, mysqld3.ddd = 0020;
|
|
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf ;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf ;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^ccc[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf ;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^ddd[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf ;
|
|
--echo --------------------------------------------------------------------
|
|
|
|
UNSET mysqld2.aaa, mysqld3.bbb, mysqld2.ccc, mysqld3.ddd;
|
|
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^ccc[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^ddd[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
|
|
# - check that if some instance name is invalid or the active is active,
|
|
# whole SET-statement will not be executed;
|
|
|
|
--error 3000 # ER_BAD_INSTANCE_NAME
|
|
SET mysqld2.aaa, mysqld3.bbb, mysqld.ccc = 0010;
|
|
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^ccc[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
|
|
--error 3015 # ER_INSTANCE_IS_ACTIVE
|
|
SET mysqld2.aaa, mysqld3.bbb, mysqld1.ccc = 0010;
|
|
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^ccc[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
|
|
# - check that if some instance name is invalid or the active is active,
|
|
# whole UNSET-statement will not be executed;
|
|
|
|
--error 3000 # ER_BAD_INSTANCE_NAME
|
|
UNSET mysqld2.server_id, mysqld3.server_id, mysqld.ccc;
|
|
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
|
|
--echo --------------------------------------------------------------------
|
|
|
|
--error 3015 # ER_INSTANCE_IS_ACTIVE
|
|
UNSET mysqld2.server_id, mysqld3.server_id, mysqld1.ccc;
|
|
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
|
|
--echo --------------------------------------------------------------------
|
|
|
|
DROP INSTANCE mysqld3;
|
|
|
|
# - check that spaces are handled correctly;
|
|
|
|
SET mysqld2.server_id=222;
|
|
SET mysqld2.server_id = 222;
|
|
SET mysqld2.server_id = 222 ;
|
|
SET mysqld2 . server_id = 222 ;
|
|
SET mysqld2 . server_id = 222 , mysqld2 . aaa , mysqld2 . bbb ;
|
|
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf ;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf ;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf ;
|
|
--echo --------------------------------------------------------------------
|
|
|
|
UNSET mysqld2 . aaa , mysqld2 . bbb ;
|
|
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf ;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^aaa\$" $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep "^bbb\$" $MYSQLTEST_VARDIR/im.cnf || true;
|
|
--echo --------------------------------------------------------------------
|
|
|
|
###########################################################################
|
|
#
|
|
# Check that SET/UNSET updates both the configuration cache in IM and
|
|
# the configuration file.
|
|
#
|
|
###########################################################################
|
|
|
|
# - check that the configuration file has been updated (i.e. contains
|
|
# server_id=SERVER_ID for mysqld2);
|
|
|
|
--echo --------------------------------------------------------------------
|
|
--exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf ;
|
|
--echo --------------------------------------------------------------------
|
|
|
|
# - (for mysqld1) check that the running instance has not been affected:
|
|
# connect to the instance and check that 'SHOW VARIABLES LIKE 'server_id''
|
|
# returns zero;
|
|
|
|
--connection mysql1_con
|
|
|
|
SHOW VARIABLES LIKE 'server_id';
|
|
|
|
--connection default
|
|
|
|
# - check that internal cache of Instance Manager has been affected;
|
|
# TODO: we should check only server_id option here.
|
|
|
|
# SHOW INSTANCE OPTIONS mysqld2;
|
|
|
|
###########################################################################
|
|
#
|
|
# Check that FLUSH INSTANCES is allowed only when all instances are stopped.
|
|
#
|
|
###########################################################################
|
|
|
|
SHOW INSTANCES;
|
|
|
|
--error 3016 # ER_THERE_IS_ACTIVE_INSTACE
|
|
FLUSH INSTANCES;
|
|
|
|
STOP INSTANCE mysqld1;
|
|
# FIXME: STOP INSTANCE should be synchronous.
|
|
--sleep 3
|
|
# should be longer than monitoring interval and enough to stop instance.
|
|
|
|
SHOW INSTANCES;
|
|
|
|
FLUSH INSTANCES;
|