1
0
mirror of https://github.com/MariaDB/server.git synced 2025-04-26 11:49:09 +03:00
mariadb/mysql-test/suite/innodb/t/innodb_buffer_pool_dump_pct.test
Marko Mäkelä 9f5078a1d7 MDEV-20139 innodb.innodb_buffer_pool_dump_pct failed in buildbot with timeout
This test was using a sleep of 1 second in an attempt to ensure that the
timestamp that is part of an InnoDB status string would increase.
This not only prolongs the test execution time by 1+1 seconds, but it
also is inaccurate. It is possible that the actual sleep duration is
less than a second.

Let us wait for the creation of the file ib_buffer_pool and then wait
for the buffer pool dump completion. In that way, the test can complete
in a dozen or two milliseconds (1% of the previous duration) and work
more reliably.
2023-12-12 11:43:23 +02:00

91 lines
3.0 KiB
Plaintext

# ************************************************************
# wl6504: This testcase is to check the functionality of the
# innodb_buffer_pool_dump_pct flag
# step 1.Set innodb_buffer_pool_dump_pct=100 and take the dump
# step 2.Set innodb_buffer_pool_dump_pct=1 and take the dump
# step 3.Compare the size of both the dump files
#*************************************************************
--source include/have_innodb.inc
--source include/have_innodb_16k.inc
let MYSQLD_DATADIR = `SELECT @@datadir`;
CREATE TABLE tab5 (col1 int auto_increment primary key,
col2 VARCHAR(25), col3 varchar(25)) ENGINE=InnoDB;
CREATE INDEX idx1 ON tab5(col2(10));
CREATE INDEX idx2 ON tab5(col3(10));
SET GLOBAL innodb_buffer_pool_dump_pct=100;
#***********************************************************
# SELECT *
# FROM information_schema.global_status
# WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS'
# gives
# a) VARIABLE_NAME VARIABLE_VALUE
# INNODB_BUFFER_POOL_DUMP_STATUS not started
# in case there was no innodb_buffer_pool_dump since server start.
# b) Something like
# VARIABLE_NAME VARIABLE_VALUE
# INNODB_BUFFER_POOL_DUMP_STATUS Buffer pool(s) dump completed at 130711 13:43:24
# in case there was a innodb_buffer_pool_dump since server start.
# Attention:
# - There is no guarantee that the current test is the first test which
# made an innodb_buffer_pool_dump since server startup.
# - The granularity of the timestamp is one second.
# - There could have been some dump caused by some previous test
# just a few milliseconds before.
#***********************************************************
--error 0,1
--remove_file $MYSQLD_DATADIR/ib_buffer_pool
SET GLOBAL innodb_buffer_pool_dump_now=ON;
perl;
my $f="$ENV{MYSQLD_DATADIR}/ib_buffer_pool";
my $count=300;
until (-e $f)
{
select(undef, undef, undef, .1);
die "File $f was not created\n" if (0 > --$count);
}
EOF
let $wait_condition = SELECT count(*) = 1
FROM information_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS'
AND variable_value like 'Buffer pool(s) dump completed at%';
--source include/wait_condition.inc
--move_file $MYSQLD_DATADIR/ib_buffer_pool $MYSQLD_DATADIR/ib_buffer_pool100
SET GLOBAL innodb_buffer_pool_dump_pct=1;
SET GLOBAL innodb_buffer_pool_dump_now=ON;
perl;
my $f="$ENV{MYSQLD_DATADIR}/ib_buffer_pool";
my $count=300;
until (-e $f)
{
select(undef, undef, undef, .1);
die "File $f was not created\n" if (0 > --$count);
}
EOF
let $wait_condition = SELECT count(*) = 1
FROM information_schema.global_status
WHERE variable_name = 'INNODB_BUFFER_POOL_DUMP_STATUS'
AND variable_value like 'Buffer pool(s) dump completed at%';
--source include/wait_condition.inc
--file_exists $MYSQLD_DATADIR/ib_buffer_pool
perl;
my $size1 = -s "$ENV{MYSQLD_DATADIR}/ib_buffer_pool";
my $size100 = -s "$ENV{MYSQLD_DATADIR}/ib_buffer_pool100";
die "$size100<=$size1\n" unless $size100 > $size1;
EOF
SET GLOBAL innodb_buffer_pool_dump_pct=DEFAULT;
--remove_file $MYSQLD_DATADIR/ib_buffer_pool100
DROP TABLE tab5;