-
Notifications
You must be signed in to change notification settings - Fork 484
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
61 changed files
with
4,809 additions
and
86 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
# WL#9290 InnoDB: Support transparent tablespace data encryption for redo log | ||
# This test case will test basic redo log encryption support features. | ||
|
||
--source include/no_valgrind_without_big.inc | ||
--source include/have_innodb.inc | ||
--source include/not_embedded.inc | ||
--source include/have_innodb_max_16k.inc | ||
|
||
--disable_query_log | ||
call mtr.add_suppression("\\[Error\\] InnoDB: Encryption can't find master key, please check the keyring plugin is loaded."); | ||
call mtr.add_suppression("\\[ERROR\\] InnoDB: Failed to find tablespace for table `\.\.*`\.`\.\.*` in the cache."); | ||
call mtr.add_suppression("\\[ERROR\\] InnoDB: Operating system error number 2 in a file operation."); | ||
call mtr.add_suppression("\\[ERROR\\] InnoDB: The error means the system cannot find the path specified."); | ||
call mtr.add_suppression("\\[ERROR\\] InnoDB: Could not find a valid tablespace file for"); | ||
call mtr.add_suppression("ibd can't be decrypted , please confirm the keyfile is match and keyring plugin is loaded."); | ||
call mtr.add_suppression("\\[Warning\\] InnoDB: Ignoring tablespace .* because it could not be opened"); | ||
call mtr.add_suppression("\\[ERROR\\] InnoDB: If you are installing InnoDB, remember that you must create directories yourself, InnoDB does not create them."); | ||
call mtr.add_suppression("\\[ERROR\\] InnoDB: Can't set redo log tablespace to be encrypted."); | ||
--enable_query_log | ||
|
||
#Enable redo log encryption, should report error in server log, since keyring is not loaded. | ||
eval SET GLOBAL innodb_redo_log_encrypt = $redo_log_mode; | ||
|
||
# Create a table with encryption, should fail since keyring is not | ||
# loaded. | ||
--error ER_CANNOT_FIND_KEY_IN_KEYRING | ||
CREATE TABLE t1(c1 INT, c2 char(20)) ENCRYPTION="Y" ENGINE = InnoDB; | ||
|
||
CREATE TABLE t1(c1 INT, c2 char(20)) ENGINE = InnoDB; | ||
|
||
--error ER_CANNOT_FIND_KEY_IN_KEYRING | ||
ALTER TABLE t1 ENCRYPTION="Y", algorithm=copy; | ||
|
||
let $restart_parameters = restart: $KEYRING_PARAMS --general-log --log-output=FILE --general_log_file=$MYSQL_TMP_DIR/keyring_query_log $KEYRING_PLUGIN_OPT; | ||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR $KEYRING_PLUGIN_OPT --plugin-dir=KEYRING_PLUGIN_PATH | ||
--replace_regex /\.dll/.so/ | ||
--source include/restart_mysqld.inc | ||
|
||
#Enable redo log encryption | ||
eval SET GLOBAL innodb_redo_log_encrypt = $redo_log_mode; | ||
|
||
SHOW CREATE TABLE t1; | ||
|
||
INSERT INTO t1 VALUES(0, "aaaaa"); | ||
INSERT INTO t1 VALUES(1, "bbbbb"); | ||
INSERT INTO t1 VALUES(2, "ccccc"); | ||
INSERT INTO t1 VALUES(3, "ddddd"); | ||
INSERT INTO t1 VALUES(4, "eeeee"); | ||
INSERT INTO t1 VALUES(5, "fffff"); | ||
INSERT INTO t1 VALUES(6, "ggggg"); | ||
INSERT INTO t1 VALUES(7, "hhhhh"); | ||
INSERT INTO t1 VALUES(8, "iiiii"); | ||
INSERT INTO t1 VALUES(9, "jjjjj"); | ||
INSERT INTO t1 select * from t1; | ||
INSERT INTO t1 select * from t1; | ||
INSERT INTO t1 select * from t1; | ||
INSERT INTO t1 select * from t1; | ||
INSERT INTO t1 select * from t1; | ||
INSERT INTO t1 select * from t1; | ||
|
||
SELECT * FROM t1 ORDER BY c1 LIMIT 10; | ||
|
||
# Restart to confirm the encryption info can be retrieved properly. | ||
let $restart_parameters = restart: $KEYRING_PARAMS --general-log --log-output=FILE --general_log_file=$MYSQL_TMP_DIR/keyring_query_log --innodb_redo_log_encrypt=$redo_log_mode; | ||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR $KEYRING_PLUGIN_OPT --plugin-dir=KEYRING_PLUGIN_PATH | ||
--replace_regex /\.dll/.so/ | ||
--source include/restart_mysqld.inc | ||
|
||
SELECT * FROM t1 ORDER BY c1 LIMIT 10; | ||
|
||
DROP TABLE t1; | ||
|
||
# Crash/recovery test. | ||
CREATE TABLE t1(c1 INT, c2 char(20)) ENGINE = InnoDB; | ||
|
||
INSERT INTO t1 VALUES(0, "aaaaa"); | ||
INSERT INTO t1 VALUES(1, "bbbbb"); | ||
INSERT INTO t1 VALUES(2, "ccccc"); | ||
INSERT INTO t1 VALUES(3, "ddddd"); | ||
INSERT INTO t1 VALUES(4, "eeeee"); | ||
INSERT INTO t1 VALUES(5, "fffff"); | ||
INSERT INTO t1 VALUES(6, "ggggg"); | ||
INSERT INTO t1 VALUES(7, "hhhhh"); | ||
INSERT INTO t1 VALUES(8, "iiiii"); | ||
INSERT INTO t1 VALUES(9, "jjjjj"); | ||
|
||
# Restart to confirm the encryption info can be retrieved properly. | ||
--source include/kill_mysqld.inc | ||
--exec echo "restart: $KEYRING_PARAMS" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect | ||
--enable_reconnect | ||
--source include/wait_until_connected_again.inc | ||
--disable_reconnect | ||
|
||
SELECT * FROM t1 ORDER BY c1 LIMIT 10; | ||
DELETE FROM t1; | ||
|
||
START TRANSACTION; | ||
INSERT INTO t1 VALUES(0, "aaaaa"); | ||
INSERT INTO t1 VALUES(1, "bbbbb"); | ||
INSERT INTO t1 VALUES(2, "ccccc"); | ||
INSERT INTO t1 VALUES(3, "ddddd"); | ||
INSERT INTO t1 VALUES(4, "eeeee"); | ||
INSERT INTO t1 VALUES(5, "fffff"); | ||
INSERT INTO t1 VALUES(6, "ggggg"); | ||
INSERT INTO t1 VALUES(7, "hhhhh"); | ||
INSERT INTO t1 VALUES(8, "iiiii"); | ||
INSERT INTO t1 VALUES(9, "jjjjj"); | ||
|
||
# Restart to confirm the encryption info can be retrieved properly. | ||
let $restart_parameters = restart: $KEYRING_PARAMS --general-log --log-output=FILE --general_log_file=$MYSQL_TMP_DIR/keyring_query_log --innodb_redo_log_encrypt=$redo_log_mode; | ||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR $KEYRING_PLUGIN_OPT --plugin-dir=KEYRING_PLUGIN_PATH | ||
--replace_regex /\.dll/.so/ | ||
--source include/restart_mysqld.inc | ||
|
||
SELECT * FROM t1 ORDER BY c1 LIMIT 10; | ||
|
||
INSERT INTO t1 VALUES(0, "aaaaa"); | ||
INSERT INTO t1 VALUES(1, "bbbbb"); | ||
INSERT INTO t1 VALUES(2, "ccccc"); | ||
INSERT INTO t1 VALUES(3, "ddddd"); | ||
INSERT INTO t1 VALUES(4, "eeeee"); | ||
INSERT INTO t1 VALUES(5, "fffff"); | ||
INSERT INTO t1 VALUES(6, "ggggg"); | ||
INSERT INTO t1 VALUES(7, "hhhhh"); | ||
INSERT INTO t1 VALUES(8, "iiiii"); | ||
INSERT INTO t1 VALUES(9, "jjjjj"); | ||
|
||
SELECT * FROM t1 ORDER BY c1 LIMIT 10; | ||
|
||
# Cleanup | ||
DROP TABLE t1; |
Oops, something went wrong.