im_instance_conf.imtest 9.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
###########################################################################
#
# 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;
#
24 25 26
# NOTE: each CREATE INSTANCE statement must specify socket-file-name, otherwise
# this results of the test can be affected by another running test suite.
#
27 28
###########################################################################

unknown's avatar
unknown committed
29
--source include/im_check_env.inc
30 31 32 33 34 35 36 37 38 39

###########################################################################
#
# Check starting conditions.
#
###########################################################################

# Check that the configuration file contains only instances that we expect.

--echo --------------------------------------------------------------------
40
--exec grep '^server_id[^a-zA-Z0-9_\-]' $MYSQLTEST_VARDIR/im.cnf;
41 42 43 44 45 46 47 48 49 50 51
--echo --------------------------------------------------------------------

###########################################################################
#
# 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.

52 53 54
CREATE INSTANCE mysqld3
  server_id = 3,
  socket = "$MYSQL_TMP_DIR/mysqld_3.sock";
55 56 57 58

SHOW INSTANCES;
 
--echo --------------------------------------------------------------------
59
--exec grep '^server_id[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
--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 --------------------------------------------------------------------
81
--exec grep "^nonguarded\$" $MYSQLTEST_VARDIR/im.cnf;
82 83
--echo --------------------------------------------------------------------

84 85 86 87
CREATE INSTANCE mysqld4
  nonguarded,
  server_id = 4,
  socket = "$MYSQL_TMP_DIR/mysqld_4.sock";
88 89 90 91

SHOW INSTANCES;

--echo --------------------------------------------------------------------
92
--exec grep "^nonguarded\$" $MYSQLTEST_VARDIR/im.cnf;
93 94 95 96 97
--echo --------------------------------------------------------------------

#   - with value;

--echo --------------------------------------------------------------------
98
--exec grep '^test-A[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
99
--echo --------------------------------------------------------------------
100
--exec grep '^test-B[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
101 102
--echo --------------------------------------------------------------------

103 104 105 106 107
CREATE INSTANCE mysqld5
  test-A = 000,
  test-B = test,
  server_id = 5,
  socket = "$MYSQL_TMP_DIR/mysqld_5.sock";
108 109 110 111

SHOW INSTANCES;

--echo --------------------------------------------------------------------
112
--exec grep '^test-A[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
113
--echo --------------------------------------------------------------------
114
--exec grep '^test-B[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
115 116 117 118 119 120 121 122 123
--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 --------------------------------------------------------------------
124 125 126
--exec grep '^test-C1[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
--echo --------------------------------------------------------------------
--exec grep '^test-C2[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
127 128
--echo --------------------------------------------------------------------

129 130 131 132 133
CREATE INSTANCE mysqld6
  test-C1  =  10  ,
  test-C2  =  02  ,
  server_id = 6,
  socket = "$MYSQL_TMP_DIR/mysqld_6.sock";
134 135 136 137

SHOW INSTANCES;

--echo --------------------------------------------------------------------
138
--exec grep '^test-C1[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
139
--echo --------------------------------------------------------------------
140
--exec grep '^test-C2[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
141 142 143 144 145
--echo --------------------------------------------------------------------

#   - check handling of grammar error;

--echo --------------------------------------------------------------------
146
--exec grep '^test-D[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
147
--echo --------------------------------------------------------------------
148
--exec grep '^test-E[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
--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 --------------------------------------------------------------------
164
--exec grep '^test-D[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
165
--echo --------------------------------------------------------------------
166
--exec grep '^test-E[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
167 168 169 170 171
--echo --------------------------------------------------------------------

#   - check parsing of string option values

--echo --------------------------------------------------------------------
172 173 174 175 176 177 178
--exec grep '^test-1[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
--echo --------------------------------------------------------------------
--exec grep '^test-2[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
--echo --------------------------------------------------------------------
--exec grep '^test-3[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
--echo --------------------------------------------------------------------
--exec grep '^test-4[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
179
--echo --------------------------------------------------------------------
180
--exec grep '^test-5[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
181
--echo --------------------------------------------------------------------
182
--exec grep '^test-6[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
183
--echo --------------------------------------------------------------------
184
--exec grep '^test-7[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf || true;
185 186
--echo --------------------------------------------------------------------

187 188 189 190 191
CREATE INSTANCE mysqld9
  test-1=" hello world ",
  test-2='  ',
  server_id = 9,
  socket = "$MYSQL_TMP_DIR/mysqld_9.sock";
192 193
SHOW INSTANCES;

194 195 196 197
CREATE INSTANCE mysqld10
  test-3='\b\babc\sdef',
  server_id = 10,
  socket = "$MYSQL_TMP_DIR/mysqld_10.sock";
198 199 200
# test-3='abc def'
SHOW INSTANCES;

201 202 203 204 205
CREATE INSTANCE mysqld11
  test-4='abc\tdef',
  test-5='abc\ndef',
  server_id = 11,
  socket = "$MYSQL_TMP_DIR/mysqld_11.sock";
206 207
SHOW INSTANCES;

208 209 210 211 212
CREATE INSTANCE mysqld12
  test-6="abc\rdef",
  test-7="abc\\def",
  server_id = 12,
  socket = "$MYSQL_TMP_DIR/mysqld_12.sock";
213 214 215 216
# test-6=abc
SHOW INSTANCES;

--error ER_SYNTAX_ERROR
217
CREATE INSTANCE mysqld13 test-bad=' \ ';
218 219 220
SHOW INSTANCES;

--echo --------------------------------------------------------------------
221
--exec grep '^test-1[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
222
--echo --------------------------------------------------------------------
223
--exec grep '^test-2[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
224
--echo --------------------------------------------------------------------
225
--exec grep '^test-3[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
226
--echo --------------------------------------------------------------------
227
--exec grep '^test-4[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
228
--echo --------------------------------------------------------------------
229
--exec grep '^test-5[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
230
--echo --------------------------------------------------------------------
231
--exec grep '^test-6[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
232
--echo --------------------------------------------------------------------
233
--exec grep '^test-7[^a-zA-Z0-9_-]' $MYSQLTEST_VARDIR/im.cnf;
234
--echo --------------------------------------------------------------------
235
--exec grep '^test-bad' $MYSQLTEST_VARDIR/im.cnf || true;
236 237 238 239 240 241 242 243 244
--echo --------------------------------------------------------------------


# Check that CREATE INSTANCE allows to create instances only with properly
# formed names (mysqld*).

--error 3014 # ER_MALFORMED_INSTANCE_NAME
CREATE INSTANCE qqq1;