config root man

Current Path : /home/usr.opt/mysql57/mysql-test/suite/rpl/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //home/usr.opt/mysql57/mysql-test/suite/rpl/t/rpl_binlog_sender_fseek.test

# ==== Purpose ====
#
# This test case test verifies that no unwanted fseeks are done by dump threads
# reading the binary log file sequentially. Dump threads should not change
# COUNT_MISC after started dumping a binary log file, until moving to dumping
# another binary log file.
#
# This test will create a set of transactions which event headers would,
# sometimes, cross the IO_CACHE block size. After running the workload, the test
# case will verify the P_S counter COUNT_MISC for "wait/io/file/sql/binlog"
# EVENT_NAME at performance_schema.file_summary_by_event_name. In a single
# binary log file case, the counter should not be more than 6 (as there are some
# real file operations opening the binary log file and pointing it to the first
# event position) or 9 in the case of GTIDs be enabled with auto positioning.
#
# ==== Related Bugs and Worklogs ====
#
# BUG#24763579 BINLOG SENDER IS GENERATING UNWANTED FSEEKS ON BINARY LOG FILE
#
# It was noticed that the binlog sender was reading the event reader (19 bytes)
# to get the event size and was doing a "fseek" on the IO_CACHE to the beginning
# of the event, as the event would be fully read later, after adjusting the
# network packet size to fit the whole event.
#
# As the IO_CACHE read the files using an 8K block (for reads smaller than 8K),
# when the event header crossed the block boundaries, the "fseek" needed to
# be performed on file level (and not only at IO_CACHE buffer level), generating
# a call to the OS that resulted in an unwanted wait.
#

# This test case was designed to run with SBR
--source include/have_binlog_format_statement.inc
--let $rpl_skip_start_slave= 1
--source include/master-slave.inc
--source include/stop_dump_threads.inc

##################################################
# Some variable to help calculating the workload #
##################################################
# IO_CACHE block size
--let $block_size= 8192
# How many bytes of the header should be at the end of a block
--let $border= 2
# We must fit many events into a block size
--let $event_factor= 8

################################################
# Preparing the master for the larger workload #
################################################
--eval CREATE TABLE t1 (c1 TEXT($block_size))

# Get current binlog position
--let $init_master_pos= query_get_value(SHOW MASTER STATUS, Position, 1)

--let $ref_size= `SELECT $block_size DIV $event_factor`
--let $content= `SELECT REPEAT('x', $ref_size)`
--disable_query_log
--echo Inserting a reference transaction to calculate the content size
--eval INSERT INTO t1 VALUES ("$content")
--enable_query_log

# Calculate the "transaction payload" (all but the insert content)
--let $master_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
--let $trx_base_size= `SELECT ($master_pos - $init_master_pos) - $ref_size`

# Prepare a transaction to left the binlog at the border of a block
--let $content_size= `SELECT (($block_size - $border) - $trx_base_size) - $master_pos`
--let $content= `SELECT REPEAT('x', $content_size)`
--disable_query_log
--echo Filling binary log up to the border of the $block_size block
--eval INSERT INTO t1 VALUES ("$content")
--enable_query_log

--let $master_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
--let $assert_text= The binary log is at the expected border of a $block_size block
--let $assert_cond= $border = ($block_size - ( $master_pos % $block_size ))
--source include/assert.inc

# Prepare a transaction content for the large workload
--let $content_size= `SELECT (($block_size DIV $event_factor) - $trx_base_size)`
--let $content= `SELECT REPEAT('x', $content_size)`

######################
# The large workload #
######################
--let $counter=100
--echo Filling the binary log $counter transactions
--disable_query_log
while ($counter)
{
  --eval INSERT INTO t1 VALUES ("$content")
  --dec $counter
}
--enable_query_log

################################################
# Sync slave I/O thread and check the counters #
################################################
TRUNCATE performance_schema.file_summary_by_event_name;

# Sync slave I/O thread
--source include/rpl_connection_slave.inc
--source include/start_slave_io.inc
--source include/rpl_connection_master.inc
--source include/sync_slave_io_with_master.inc

# Check the COUNT_MISC counter
--source include/rpl_connection_master.inc
# In a first run, the counter tops 6 without GTIDs, and tops 9 when GTIDs are
# enabled, because of the process of searching the binary log file that
# contains the first GTID not yet retrieved/executed by the slave.
--let $expected_count_misc= 6
if ($use_gtids)
{
  --let $expected_count_misc= 9
}

--let $current_count_misc=`SELECT COUNT_MISC FROM performance_schema.file_summary_by_event_name WHERE EVENT_NAME = "wait/io/file/sql/binlog"`

--let $assert_text= COUNT_MISC for "wait/io/file/sql/binlog" should be minimal
--let $assert_cond= $current_count_misc = $expected_count_misc
--let $extra_debug_eval= $current_count_misc AS current_count_misc, $expected_count_misc as expected_count_misc
--let $extra_debug_info= COUNT_MISC should be 6 for non-GTID and 9 for GTID enabled servers
--source include/assert.inc

# Cleanup
--source include/rpl_connection_slave.inc
--source include/start_slave_sql.inc
--source include/rpl_connection_master.inc
DROP TABLE t1;
--source include/rpl_end.inc

Man Man