Skip to content

Commit

Permalink
Improve an MDEV-9011 test of innodb_encrypt_log.
Browse files Browse the repository at this point in the history
Test crash recovery from an encrypted redo log with innodb_encrypt_log=0.
Previously, we did a clean shutdown, so only the log checkpoint
information would have been read from the redo log. With this change,
we will be reading and applying encrypted redo log records.

include/start_mysqld.inc: Observe $restart_parameters.

encryption.innodb-log-encrypt: Remove some unnecessary statements,
and instead of restarting the server and concurrently accessing
the files while the server is running, kill the server, check the
files, and finally start up the server.

innodb.log_data_file_size: Use start_mysqld.inc with $restart_parameters.
  • Loading branch information
dr-m committed Jan 12, 2017
1 parent 4507f1e commit 2dc5d8b
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 31 deletions.
9 changes: 8 additions & 1 deletion mysql-test/include/start_mysqld.inc
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
# Include this script only after using shutdown_mysqld.inc
# where $_expect_file_name was initialized.
# Write file to make mysql-test-run.pl start up the server again
--exec echo "restart" > $_expect_file_name
if ($restart_parameters)
{
--exec echo "restart: $restart_parameters" > $_expect_file_name
}
if (!$restart_parameters)
{
--exec echo "restart" > $_expect_file_name
}

# Turn on reconnect
--enable_reconnect
Expand Down
4 changes: 2 additions & 2 deletions mysql-test/suite/encryption/r/innodb-log-encrypt.result
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ set current_num = current_num + 1;
end while;
end//
commit;
set autocommit=0;
begin;
call innodb_insert_proc(2000);
commit;
set autocommit=1;
update t1 set c1 = c1 +1;
select count(*) from t1;
count(*)
2000
# Kill the server
# ibdata1 yes on expecting NOT FOUND
NOT FOUND /privatejanprivate/ in ibdata1
# t1 yes on expecting NOT FOUND
Expand Down
25 changes: 4 additions & 21 deletions mysql-test/suite/encryption/t/innodb-log-encrypt.test
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,6 @@
# MDEV-9011: Redo log encryption does not work
#

--disable_query_log
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
--enable_query_log

--disable_query_log
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
--enable_query_log

SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;

Expand All @@ -35,16 +25,13 @@ end//
delimiter ;//
commit;

set autocommit=0;
begin;
call innodb_insert_proc(2000);
commit;
set autocommit=1;

update t1 set c1 = c1 +1;
select count(*) from t1;

-- source include/restart_mysqld.inc

--let $MYSQLD_DATADIR=`select @@datadir`
--let ib1_IBD = $MYSQLD_DATADIR/ibdata1
--let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd
Expand All @@ -53,6 +40,8 @@ select count(*) from t1;
--let SEARCH_RANGE = 10000000
--let SEARCH_PATTERN=privatejanprivate

-- source include/kill_mysqld.inc

--echo # ibdata1 yes on expecting NOT FOUND
-- let SEARCH_FILE=$ib1_IBD
-- source include/search_pattern_in_file.inc
Expand All @@ -68,7 +57,7 @@ select count(*) from t1;

--echo # Restart mysqld --innodb_encrypt_log=0
-- let $restart_parameters=--innodb_encrypt_log=0
-- source include/restart_mysqld.inc
-- source include/start_mysqld.inc

insert into t1 values(5000, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
insert into t1 values(5001, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
Expand Down Expand Up @@ -106,9 +95,3 @@ insert into t1 values(5004, substring(MD5(RAND()), -64), REPEAT('publicmessage',

drop procedure innodb_insert_proc;
drop table t1;

# reset system
--disable_query_log
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
--enable_query_log
11 changes: 4 additions & 7 deletions mysql-test/suite/innodb/t/log_data_file_size.test
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ perl;
use Fcntl 'SEEK_CUR', 'SEEK_END';

my $page_size = $ENV{'INNODB_PAGE_SIZE'};
my $restart = 'restart';
my $restart;
if ($ENV{'MYSQLD_IS_DEBUG'})
{
# It is impractical to ensure that CREATE TABLE t will extend ibdata1.
Expand All @@ -37,17 +37,14 @@ if ($ENV{'MYSQLD_IS_DEBUG'})
while(<FILE>) { unless (/\0*/gso) { $empty_tail= 0; last } }
if ($empty_tail)
{
$restart = 'restart: --innodb-data-file-size-debug=' . $size;
$restart = "--innodb-data-file-size-debug=$size";
truncate(FILE, $page_size * $root);
}
close FILE;
}
open(FILE, ">$ENV{MYSQLTEST_VARDIR}/log/start_mysqld.txt") || die;
print FILE '--exec echo "', $restart, '" > $_expect_file_name
--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect
';
print FILE "--let \$restart_parameters=$restart\n" if $restart;
print FILE "--source include/start_mysqld.inc\n";
close FILE;
open(FILE, "+<", "$ENV{'MYSQLD_DATADIR'}test/ibd4.ibd") or die;
truncate(FILE, $page_size * 4);
Expand Down

0 comments on commit 2dc5d8b

Please sign in to comment.