mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-24 07:13:33 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			249 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			249 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ###########################################################################
 | |
| #
 | |
| # 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 suite/im/t/im_check_env.inc
 | |
| 
 | |
| ###########################################################################
 | |
| #
 | |
| # 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;
 | 
