File: initialize-bug20504142.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (143 lines) | stat: -rw-r--r-- 3,556 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
--source include/big_test.inc


let BASEDIR= `select @@basedir`;
let DDIR=$MYSQL_TMP_DIR/installdb_test;
let MYSQLD_LOG=$MYSQL_TMP_DIR/server.log;
let extra_args=--no-defaults --innodb_dedicated_server=OFF --console --loose-skip-auto_generate_certs --loose-skip-sha256_password_auto_generate_rsa_keys --skip-ssl --basedir=$BASEDIR --lc-messages-dir=$MYSQL_SHAREDIR;
let BOOTSTRAP_SQL=$MYSQL_TMP_DIR/tiny_bootstrap.sql;
let PASSWD_FILE=$MYSQL_TMP_DIR/password_file.txt;

--echo # Save the count of columns in mysql
--let $mysql_cnt=`SELECT COUNT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='mysql'`

--echo # shut server down
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server
--source include/wait_until_disconnected.inc
--echo # Server is down


--echo #
--echo # Start of test for Bug #20504142
--echo #   MYSQLD OPTION --INITIALIZE SHOULD WORK WITH EMPTY DATADIR
--echo #

--echo #
--echo # Try --initialize-insecure with an existing empty data dir
--echo #

--echo # create bootstrap file
write_file $BOOTSTRAP_SQL;
CREATE DATABASE test;
CREATE TABLE mysql.t1(a INT) ENGINE=innodb;
INSERT INTO mysql.t1 VALUES (1);
INSERT INTO mysql.t1 VALUES (2);
EOF

--echo # make the data dir
mkdir $DDIR;

--echo # Run the server with --initialize-insecure
--exec $MYSQLD $extra_args --initialize-insecure --datadir=$DDIR --init-file=$BOOTSTRAP_SQL > $MYSQLD_LOG 2>&1


--echo # Restart the server against DDIR
--exec echo "restart:--datadir=$DDIR " > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--enable_reconnect
--source include/wait_until_connected_again.inc

--echo # connect as root
connect(root_con,localhost,root,,mysql);

--echo # must pass: no password expiration
SELECT 1;

--echo # shut server down
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server
--source include/wait_until_disconnected.inc
--echo # Server is down

--echo # close the test connection
connection default;
disconnect root_con;

--echo # delete mysqld log
remove_file $MYSQLD_LOG;

--echo # delete bootstrap file
remove_file $BOOTSTRAP_SQL;

--echo # delete datadir
--force-rmdir $DDIR


--echo #
--echo # Try --initialize-insecure with an exising non-empty data dir
--echo #

--echo # make the data dir
mkdir $DDIR;

let $AFILE=$DDIR/afile;

--echo # add afile to the data dir
write_file $AFILE;
some text
EOF

--echo # Run the server with --initialize-insecure
--error 1
--exec $MYSQLD $extra_args --initialize-insecure --datadir=$DDIR > $MYSQLD_LOG 2>&1

--echo # look for the mysql directory. should not be there
perl;
   use strict;
   my $mysqldir="$ENV{'DDIR'}/mysql";
   if (opendir(my $dh, $mysqldir))
   {
     print "Data directory $mysqldir not empty\n";
     closedir($dh);
   }
EOF

--echo # delete mysqld log
remove_file $MYSQLD_LOG;

--echo # delete datadir
--force-rmdir $DDIR


--echo #
--echo # Try --initialize-insecure with an exising file as datadir
--echo #

--echo # add a file as the data dir
write_file $DDIR;
some text
EOF

--echo # Run the server with --initialize-insecure
--error 1
--exec $MYSQLD $extra_args --initialize-insecure --datadir=$DDIR > $MYSQLD_LOG 2>&1

--echo # delete mysqld log
remove_file $MYSQLD_LOG;

--echo # delete datadir
--remove_file $DDIR

--echo #
--echo # End of test for Bug #20504142
--echo #   MYSQLD OPTION --INITIALIZE SHOULD WORK WITH EMPTY DATADIR
--echo #


--echo #
--echo # Cleanup
--echo #
--echo # Restarting the server
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--enable_reconnect
--source include/wait_until_connected_again.inc