mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			221 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			221 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
###########################################################################
 | 
						|
#
 | 
						|
# This file contains test for (1.1) test suite.
 | 
						|
#
 | 
						|
# Consult WL#2789 for more information.
 | 
						|
#
 | 
						|
###########################################################################
 | 
						|
 | 
						|
--source include/im_check_os.inc
 | 
						|
 | 
						|
###########################################################################
 | 
						|
#
 | 
						|
# 1.1.1. Check that Instance Manager is able:
 | 
						|
#  - to read definitions of two mysqld-instances;
 | 
						|
#  - to start the first instance;
 | 
						|
#  - to understand 'nonguarded' option and keep the second instance down;
 | 
						|
#
 | 
						|
###########################################################################
 | 
						|
 | 
						|
--echo
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
--echo -- 1.1.1.
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
 | 
						|
# Wait for mysqld1 (guarded instance) to start.
 | 
						|
 | 
						|
--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD1_PATH_PID 30 started
 | 
						|
 | 
						|
# Let IM detect that mysqld1 is online. This delay should be longer than
 | 
						|
# monitoring interval.
 | 
						|
 | 
						|
--sleep 3
 | 
						|
 | 
						|
# Check that start conditions are as expected.
 | 
						|
 | 
						|
SHOW INSTANCES;
 | 
						|
 | 
						|
###########################################################################
 | 
						|
#
 | 
						|
# 1.1.2. Check 'START INSTANCE' command:
 | 
						|
#  - start the second instance;
 | 
						|
#  - check that it is reported as online;
 | 
						|
#  - execute some SQL-statement on mysqld2 to ensure that it is really up and
 | 
						|
#    running;
 | 
						|
#
 | 
						|
###########################################################################
 | 
						|
 | 
						|
--echo
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
--echo -- 1.1.2.
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
 | 
						|
START INSTANCE mysqld2;
 | 
						|
# FIXME: START INSTANCE should be synchronous.
 | 
						|
--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 started
 | 
						|
 | 
						|
# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is
 | 
						|
# synchronous. Even waiting for mysqld to start by looking at its pid file is
 | 
						|
# not enough, because IM may not detect that mysqld has started.
 | 
						|
# SHOW INSTANCES;
 | 
						|
 | 
						|
--connect (mysql_con,localhost,root,,mysql,$IM_MYSQLD2_PORT,$IM_MYSQLD2_SOCK)
 | 
						|
--connection mysql_con
 | 
						|
 | 
						|
--replace_result $IM_MYSQLD2_PORT IM_MYSQLD2_PORT
 | 
						|
SHOW VARIABLES LIKE 'port';
 | 
						|
 | 
						|
--connection default
 | 
						|
--disconnect mysql_con
 | 
						|
 | 
						|
###########################################################################
 | 
						|
#
 | 
						|
# 1.1.3. Check 'STOP INSTANCE' command:
 | 
						|
#  - stop the second instance;
 | 
						|
#  - check that it is reported as offline;
 | 
						|
#  - TODO: try to execute some SQL-statement to ensure that it is really down;
 | 
						|
#
 | 
						|
###########################################################################
 | 
						|
 | 
						|
--echo
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
--echo -- 1.1.3.
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
 | 
						|
STOP INSTANCE mysqld2;
 | 
						|
# FIXME: STOP INSTANCE should be synchronous.
 | 
						|
--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 stopped
 | 
						|
 | 
						|
# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is
 | 
						|
# synchronous. Even waiting for mysqld to start by looking at its pid file is
 | 
						|
# not enough, because IM may not detect that mysqld has started.
 | 
						|
# SHOW INSTANCES;
 | 
						|
 | 
						|
###########################################################################
 | 
						|
#
 | 
						|
# 1.1.4. Check that Instance Manager reports correct errors for 'START
 | 
						|
# INSTANCE' command:
 | 
						|
#   - if the client tries to start unregistered instance;
 | 
						|
#   - if the client tries to start already started instance;
 | 
						|
#   - if the client submits invalid arguments;
 | 
						|
#
 | 
						|
###########################################################################
 | 
						|
 | 
						|
--echo
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
--echo -- 1.1.4.
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
 | 
						|
--error 3000 # ER_BAD_INSTANCE_NAME
 | 
						|
START INSTANCE mysqld3;
 | 
						|
 | 
						|
--error 3002 # ER_INSTANCE_ALREADY_STARTED
 | 
						|
START INSTANCE mysqld1;
 | 
						|
 | 
						|
###########################################################################
 | 
						|
#
 | 
						|
# 1.1.5. Check that Instance Manager reports correct errors for 'STOP INSTANCE'
 | 
						|
# command:
 | 
						|
#   - if the client tries to start unregistered instance;
 | 
						|
#   - if the client tries to start already stopped instance;
 | 
						|
#   - if the client submits invalid arguments;
 | 
						|
#
 | 
						|
###########################################################################
 | 
						|
 | 
						|
--echo
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
--echo -- 1.1.5.
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
 | 
						|
--error 3000 # ER_BAD_INSTANCE_NAME
 | 
						|
STOP INSTANCE mysqld3;
 | 
						|
 | 
						|
# TODO: IM should be fixed.
 | 
						|
# BUG#12673: Instance Manager allows to stop the instance many times
 | 
						|
# --error 3002 # ER_INSTANCE_ALREADY_STARTED
 | 
						|
# STOP INSTANCE mysqld2;
 | 
						|
 | 
						|
###########################################################################
 | 
						|
#
 | 
						|
# 1.1.6. Check that Instance Manager is able to restart guarded instances.
 | 
						|
#
 | 
						|
###########################################################################
 | 
						|
 | 
						|
--echo
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
--echo -- 1.1.6.
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
 | 
						|
SHOW INSTANCES;
 | 
						|
 | 
						|
--exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_MYSQLD1_PATH_PID restarted 30
 | 
						|
 | 
						|
# Give some time to IM to detect that mysqld was restarted. It should be longer
 | 
						|
# than monitoring interval.
 | 
						|
 | 
						|
--sleep 3
 | 
						|
 | 
						|
SHOW INSTANCES;
 | 
						|
 | 
						|
###########################################################################
 | 
						|
#
 | 
						|
# 1.1.7. Check that Instance Manager does not restart non-guarded instance.
 | 
						|
#
 | 
						|
###########################################################################
 | 
						|
 | 
						|
--echo
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
--echo -- 1.1.7.
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
 | 
						|
START INSTANCE mysqld2;
 | 
						|
# FIXME: START INSTANCE should be synchronous.
 | 
						|
--exec $MYSQL_TEST_DIR/t/wait_for_process.sh $IM_MYSQLD2_PATH_PID 30 started
 | 
						|
 | 
						|
# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is
 | 
						|
# synchronous. Even waiting for mysqld to start by looking at its pid file is
 | 
						|
# not enough, because IM may not detect that mysqld has started.
 | 
						|
# SHOW INSTANCES;
 | 
						|
 | 
						|
--exec $MYSQL_TEST_DIR/t/kill_n_check.sh $IM_MYSQLD2_PATH_PID killed 10
 | 
						|
 | 
						|
# FIXME: SHOW INSTANCES is not deterministic unless START INSTANCE is
 | 
						|
# synchronous. Even waiting for mysqld to start by looking at its pid file is
 | 
						|
# not enough, because IM may not detect that mysqld has started.
 | 
						|
# SHOW INSTANCES;
 | 
						|
 | 
						|
###########################################################################
 | 
						|
#
 | 
						|
# 1.1.8. Check that Instance Manager returns an error on
 | 
						|
# incomplete SHOW INSTANCE STATUS command.
 | 
						|
#
 | 
						|
###########################################################################
 | 
						|
 | 
						|
--echo
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
--echo -- 1.1.8.
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
 | 
						|
--error ER_SYNTAX_ERROR
 | 
						|
SHOW INSTANCE STATUS;
 | 
						|
 | 
						|
#
 | 
						|
# Tests for bug fixes
 | 
						|
#
 | 
						|
 | 
						|
#
 | 
						|
# Bug #12813    Instance Manager: START/STOP INSTANCE commands accept
 | 
						|
#                                 a list as argument.
 | 
						|
#
 | 
						|
 | 
						|
--echo
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
--echo -- BUG#12813
 | 
						|
--echo --------------------------------------------------------------------
 | 
						|
 | 
						|
--error ER_SYNTAX_ERROR
 | 
						|
START INSTANCE mysqld1,mysqld2,mysqld3;
 | 
						|
 | 
						|
--error ER_SYNTAX_ERROR
 | 
						|
STOP INSTANCE mysqld1,mysqld2,mysqld3;
 |