Commit 04c664bd authored by Vlad Lesin's avatar Vlad Lesin

MDEV-32512 log_page_corruption.test fails on windows build

Some calls of extend_space() perl function miss the last parameter. Some
cases in the test check corrupted pages info absence in the output
file if the table is dropped. We should also test if the
corruption presents before testing its absence.

Reviewed by: Vladislav Vaintroub
parent f53321cb
......@@ -26,6 +26,17 @@ INSERT INTO t7_corrupted_to_alter VALUES (3), (4), (5), (6), (7), (8), (9);
# Backup must fail due to page corruption
FOUND 1 /Database page corruption detected.*/ in backup.log
# "innodb_corrupted_pages" file must not exist
# Backup must not fail, but "innodb_corrupted_pages" file must be created due to --log-innodb-page-corruption option, and the file must contain all corrupted pages info, including those, which are supposed to be absent in the next test due to "DROP TABLE" execution during backup
--- "innodb_corrupted_pages" file content: ---
test/t1_corrupted
4 6 7
test/t2_corrupted
5 6 8
test/t5_corrupted_to_rename
4
test/t6_corrupted_to_drop
4
------
# Backup must not fail, but "innodb_corrupted_pages" file must be created due to --log-innodb-page-corruption option
FOUND 1 /Database page corruption detected.*/ in backup.log
FOUND 1 /completed OK!/ in backup.log
......@@ -45,6 +56,23 @@ INSERT INTO t1_inc_corrupted VALUES (3), (4), (5), (6), (7), (8), (9);
INSERT INTO t2_inc_corrupted VALUES (3), (4), (5), (6), (7), (8), (9);
INSERT INTO t3_inc VALUES (3), (4), (5), (6), (7), (8), (9);
# restart
# Backup must not fail, but "innodb_corrupted_pages" file must be created due to --log-innodb-page-corruption option, and the file must contain all corrupted pages info, including those, which are supposed to be absent in the next test due to "DROP TABLE" execution during backup
--- "innodb_corrupted_pages" file content: ---
test/t1_corrupted
4 6 7
test/t1_inc_corrupted
4 6 7
test/t2_corrupted
5 6 8
test/t2_inc_corrupted
5 6 8
test/t5_corrupted_to_rename_renamed
4
test/t5_inc_corrupted_to_rename
4
test/t6_inc_corrupted_to_drop
4
------
# Backup must not fail, but "innodb_corrupted_pages" file must be created due to --log-innodb-page-corruption option
--- "innodb_corrupted_pages" file content: ---
test/t1_corrupted
......
......@@ -49,7 +49,7 @@ corrupt_space_page_id("$schema/t2_corrupted.ibd",
$last_page_no = extend_space("$schema/t5_corrupted_to_rename.ibd", 1);
corrupt_space_page_id("$schema/t5_corrupted_to_rename.ibd", $last_page_no);
$last_page_no = extend_space("$schema/t6_corrupted_to_drop.ibd", );
$last_page_no = extend_space("$schema/t6_corrupted_to_drop.ibd", 1);
corrupt_space_page_id("$schema/t6_corrupted_to_drop.ibd", $last_page_no);
EOF
--source include/start_mysqld.inc
......@@ -74,6 +74,21 @@ exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=
--file_exists $corrupted_pages_file
--rmdir $targetdir
--echo # Backup must not fail, but "innodb_corrupted_pages" file must be created due to --log-innodb-page-corruption option, and the file must contain all corrupted pages info, including those, which are supposed to be absent in the next test due to "DROP TABLE" execution during backup
--disable_result_log
--exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --log-innodb-page-corruption --target-dir=$targetdir
--enable_result_log
--echo --- "innodb_corrupted_pages" file content: ---
perl;
do "$ENV{MTR_SUITE_DIR}/include/corrupt-page.pl";
print_corrupted_pages_file($ENV{corrupted_pages_file},
$ENV{corrupted_pages_file_filt});
EOF
--cat_file $corrupted_pages_file_filt
--echo ------
--rmdir $targetdir
--let after_load_tablespaces=CREATE TABLE test.t4_corrupted_new ENGINE=INNODB SELECT UUID() from test.seq_1_to_10
--let add_corrupted_page_for_test_t4_corrupted_new=1
--let after_copy_test_t5_corrupted_to_rename=RENAME TABLE test.t5_corrupted_to_rename TO test.t5_corrupted_to_rename_renamed
......@@ -134,7 +149,7 @@ $last_page_no = extend_space("$schema/t5_inc_corrupted_to_rename.ibd", 1);
corrupt_space_page_id("$schema/t5_inc_corrupted_to_rename.ibd", $last_page_no);
print $fh "$last_page_no\n";
$last_page_no = extend_space("$schema/t6_inc_corrupted_to_drop.ibd", );
$last_page_no = extend_space("$schema/t6_inc_corrupted_to_drop.ibd", 1);
corrupt_space_page_id("$schema/t6_inc_corrupted_to_drop.ibd", $last_page_no);
close $fh;
......@@ -143,6 +158,23 @@ EOF
--let incdir=$MYSQLTEST_VARDIR/tmp/backup_inc
--echo # Backup must not fail, but "innodb_corrupted_pages" file must be created due to --log-innodb-page-corruption option, and the file must contain all corrupted pages info, including those, which are supposed to be absent in the next test due to "DROP TABLE" execution during backup
--disable_result_log
--exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --log-innodb-page-corruption --target-dir=$incdir --incremental-basedir=$targetdir --dbug=+d,mariabackup_events,mariabackup_inject_code
--disable_result_log
--let corrupted_pages_file = $incdir/innodb_corrupted_pages
--echo --- "innodb_corrupted_pages" file content: ---
perl;
do "$ENV{MTR_SUITE_DIR}/include/corrupt-page.pl";
print_corrupted_pages_file($ENV{corrupted_pages_file},
$ENV{corrupted_pages_file_filt});
EOF
--cat_file $corrupted_pages_file_filt
--echo ------
--remove_file $corrupted_pages_file_filt
--rmdir $incdir
--let after_load_tablespaces=CREATE TABLE test.t4_inc_corrupted_new ENGINE=INNODB SELECT UUID() from test.seq_1_to_10
--let add_corrupted_page_for_test_t4_inc_corrupted_new=1
--let after_copy_test_t5_inc_corrupted_to_rename=RENAME TABLE test.t5_inc_corrupted_to_rename TO test.t5_inc_corrupted_to_rename_renamed
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment