########################################################################### # # This test suite checks the following statements: # - CREATE INSTANCE [option1[=option1_value], ...]; # - DROP INSTANCE ; # # 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;