mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-24 07:13:33 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			260 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			260 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ###########################################################################
 | |
| #
 | |
| # This test suite checks the following statements:
 | |
| #   - CREATE INSTANCE <instance_name> [option1[=option1_value], ...];
 | |
| #   - DROP INSTANCE <instance_name>;
 | |
| #
 | |
| # For CREATE INSTANCE we check that:
 | |
| #   - CREATE INSTANCE succeeds for non-existing instance;
 | |
| #   - CREATE INSTANCE fails for existing instance;
 | |
| #   - CREATE INSTANCE can get additional options with and w/o values;
 | |
| #   - CREATE INSTANCE parses options and handles grammar errors correctly.
 | |
| #     Check that strings with spaces are handled correctly, unknown (for
 | |
| #     mysqld) options should also be handled;
 | |
| #   - CREATE INSTANCE updates both config file and internal configuration cache;
 | |
| #   - CREATE INSTANCE allows to create instances only with properly formed
 | |
| #     names (mysqld*);
 | |
| #
 | |
| # For DROP INSTANCE we check that:
 | |
| #   - DROP INSTANCE succeeds for existing instance;
 | |
| #   - DROP INSTANCE fails for non-existing instance;
 | |
| #   - DROP INSTANCE fails for active instance.
 | |
| #   - DROP INSTANCE updates both config file and internal configuration cache;
 | |
| #
 | |
| # 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 that the configuration file contains only instances that we expect.
 | |
| 
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep server_id $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| # Check that mysqld1 is reported as running.
 | |
| 
 | |
| --sleep 3
 | |
| # should be longer than monitoring interval and enough to start instance.
 | |
| 
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| # Check that the expected mysqld instance is actually run (check that we can
 | |
| # connect and execute something).
 | |
| 
 | |
| --echo
 | |
| --echo ---> connection: mysql1_con
 | |
| --connect (mysql1_con,localhost,root,,mysql,$IM_MYSQLD1_PORT,$IM_MYSQLD1_SOCK)
 | |
| --connection mysql1_con
 | |
| 
 | |
| SHOW VARIABLES LIKE 'server_id';
 | |
| 
 | |
| --disconnect mysql1_con
 | |
| 
 | |
| --echo
 | |
| --echo ---> connection: default
 | |
| --connection default
 | |
| 
 | |
| ###########################################################################
 | |
| #
 | |
| # CREATE INSTANCE tests.
 | |
| #
 | |
| ###########################################################################
 | |
| 
 | |
| # Check that CREATE INSTANCE succeeds for non-existing instance and also check
 | |
| # that both config file and internal configuration cache have been updated.
 | |
| 
 | |
| CREATE INSTANCE mysqld3
 | |
|   server_id = 3,
 | |
|   socket = "$MYSQL_TMP_DIR/mysqld_3.sock";
 | |
| 
 | |
| SHOW INSTANCES;
 | |
|  
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep server_id $MYSQLTEST_VARDIR/im.cnf ;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| # Check that CREATE INSTANCE fails for existing instance. Let's all three
 | |
| # existing instances (running one, stopped one and just created one). Just in
 | |
| # case...
 | |
| 
 | |
| --error 3012 # ER_CREATE_EXISTING_INSTANCE
 | |
| CREATE INSTANCE mysqld1;
 | |
| 
 | |
| --error 3012 # ER_CREATE_EXISTING_INSTANCE
 | |
| CREATE INSTANCE mysqld2;
 | |
| 
 | |
| --error 3012 # ER_CREATE_EXISTING_INSTANCE
 | |
| CREATE INSTANCE mysqld3;
 | |
| 
 | |
| # Check that CREATE INSTANCE can get additional options with and w/o values.
 | |
| # Ensure that config file is updated properly.
 | |
| 
 | |
| #   - without values;
 | |
| 
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep nonguarded $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| CREATE INSTANCE mysqld4
 | |
|   nonguarded,
 | |
|   server_id = 4,
 | |
|   socket = "$MYSQL_TMP_DIR/mysqld_4.sock";
 | |
| 
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep nonguarded $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| #   - with value;
 | |
| 
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-A $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-B $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| CREATE INSTANCE mysqld5
 | |
|   test-A = 000,
 | |
|   test-B = test,
 | |
|   server_id = 5,
 | |
|   socket = "$MYSQL_TMP_DIR/mysqld_5.sock";
 | |
| 
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-A $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-B $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| # Check that CREATE INSTANCE parses options and handles grammar errors
 | |
| # correctly. Check that strings with spaces are handled correctly,
 | |
| # unknown (for mysqld) options should also be handled.
 | |
| 
 | |
| #   - check handling of extra spaces;
 | |
| 
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-C $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| CREATE INSTANCE mysqld6
 | |
|   test-C1  =  10  ,
 | |
|   test-C2  =  02  ,
 | |
|   server_id = 6,
 | |
|   socket = "$MYSQL_TMP_DIR/mysqld_6.sock";
 | |
| 
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-C1 $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-C2 $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| #   - check handling of grammar error;
 | |
| 
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-D $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-E $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| --error ER_SYNTAX_ERROR
 | |
| CREATE INSTANCE mysqld7  test-D  =  test-D-value  ;
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| --error ER_SYNTAX_ERROR
 | |
| CREATE INSTANCE mysqld8  test-E  0  ;
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| --error ER_SYNTAX_ERROR
 | |
| CREATE INSTANCE mysqld8  test-F  =  ;
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-D $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-E $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| #   - check parsing of string option values
 | |
| 
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-1 $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-2 $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-3 $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-4 $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| CREATE INSTANCE mysqld9
 | |
|   test-1=" hello world ",
 | |
|   test-2='  ',
 | |
|   server_id = 9,
 | |
|   socket = "$MYSQL_TMP_DIR/mysqld_9.sock";
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| CREATE INSTANCE mysqld10
 | |
|   test-3='\b\babc\sdef',
 | |
|   server_id = 10,
 | |
|   socket = "$MYSQL_TMP_DIR/mysqld_10.sock";
 | |
| # test-3='abc def'
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| CREATE INSTANCE mysqld11
 | |
|   test-4='abc\tdef',
 | |
|   test-5='abc\ndef',
 | |
|   server_id = 11,
 | |
|   socket = "$MYSQL_TMP_DIR/mysqld_11.sock";
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| CREATE INSTANCE mysqld12
 | |
|   test-6="abc\rdef",
 | |
|   test-7="abc\\def",
 | |
|   server_id = 12,
 | |
|   socket = "$MYSQL_TMP_DIR/mysqld_12.sock";
 | |
| # test-6=abc
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| --error ER_SYNTAX_ERROR
 | |
| CREATE INSTANCE mysqld13 test-bad=' \ ';
 | |
| SHOW INSTANCES;
 | |
| 
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-1 $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-2 $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-3 $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-4 $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-5 $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-6 $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-7 $MYSQLTEST_VARDIR/im.cnf;
 | |
| --echo --------------------------------------------------------------------
 | |
| --exec grep test-bad $MYSQLTEST_VARDIR/im.cnf || true;
 | |
| --echo --------------------------------------------------------------------
 | |
| 
 | |
| 
 | |
| # Check that CREATE INSTANCE allows to create instances only with properly
 | |
| # formed names (mysqld*).
 | |
| 
 | |
| --error 3014 # ER_MALFORMED_INSTANCE_NAME
 | |
| CREATE INSTANCE qqq1;
 | |
| 
 | 
