config root man

Current Path : /usr/opt/mysql57/mysql-test/suite/group_replication/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 : //usr/opt/mysql57/mysql-test/suite/group_replication/t/gr_compression_options.test

################################################################################
# WL#9052 - GCS compression options
#
# This test case checks compression options for group replication
#
# Test:
# 0. The test requires two servers: M1 and M2.
# 1. When GROUP is OFFLINE. Set variable group_replication_compression_threshold
#    to 0 i.e. disabled.
# 2. Check it asserts that:
#  - The variable does not take invalid inputs.
#  - The variable does not take over the max inputs.
#  - The variable does not take negative inputs.
#  - The variable can be set to valid value.
#  - The default value is 0.
# 3. Set variable to valid value. Bootstrap M1 and start M2 to make them ONLINE.
# 4. Assert that on running member variable cannot be changed.
# 5. Then the test checks if two servers with and without compression enabled
#    are able to exchange messages and still comunicate with each other.
################################################################################

--source ../inc/have_group_replication_plugin.inc
--let $rpl_skip_group_replication_start= 1
--source ../inc/group_replication.inc

--let $saved_threshold= `SELECT @@group_replication_compression_threshold`
--let $sound_threshold= 512
--let $double_sound_threshold= `SELECT $sound_threshold * 2`
--let $half_sound_threshold= `SELECT $sound_threshold / 2`
--let $default_threshold= 1000000
--let $incorrect_threshold= "AAAA"
--let $overflow_threshold= 4294967297
--let $negative_threshold= -1

##
## Set group_replication_compression_threshold to 0 initially on both
## servers
##
# make sure that compression is disabled
--let $rpl_connection_name= server2
--source include/rpl_connection.inc

SET GLOBAL group_replication_compression_threshold= 0;

--let $rpl_connection_name= server1
--source include/rpl_connection.inc

SET GLOBAL group_replication_compression_threshold= 0;

##
## Perform tests
##

--let $rpl_connection_name= server1
--source include/rpl_connection.inc

#
# Assert that the wrong input results in an error
#
--error ER_WRONG_TYPE_FOR_VAR
--eval SET GLOBAL group_replication_compression_threshold=$incorrect_threshold

#
# Assert that a wrong value - over the max - for the variable results in an error
#
--error ER_WRONG_VALUE_FOR_VAR
--eval SET GLOBAL group_replication_compression_threshold=$overflow_threshold

#
# Assert that a wrong value - lower than the minimum results in an error
#
--error ER_WRONG_VALUE_FOR_VAR
--eval SET GLOBAL group_replication_compression_threshold=$negative_threshold

#
# Assert that we can set compression to a sound value
#
--eval SET GLOBAL group_replication_compression_threshold=$sound_threshold

#
# Assert that the threshold was actually changed
#
--let $threshold= `SELECT @@group_replication_compression_threshold`
--let $assert_cond= $threshold = $sound_threshold
--let $assert_text= Assert that the compression_threshold is set to the default
--source include/assert.inc

#
# We are not allowed to use DEFAULT as a value.
#
--error ER_WRONG_VALUE_FOR_VAR
SET GLOBAL group_replication_compression_threshold=DEFAULT;

##
## Now lets test with the system running
##
--eval SET GLOBAL group_replication_compression_threshold=$sound_threshold

## Start GR on server1
--source ../inc/start_and_bootstrap_group_replication.inc

## Start GR on server2
--let $rpl_connection_name= server2
--source include/rpl_connection.inc
--source include/start_group_replication.inc

## Go back to server1
--let $rpl_connection_name= server1
--source include/rpl_connection.inc

#
# Assert that we cannot change the variable while group replication
# is running
#
--error ER_GROUP_REPLICATION_RUNNING
--eval SET GLOBAL group_replication_compression_threshold=$double_sound_threshold

#
# Assert that despite the error the value remains unchanged
#
--let $threshold= `SELECT @@group_replication_compression_threshold`
--let $assert_cond= $threshold = $sound_threshold
--let $assert_text= Assert that the compression_threshold remains unchanged
--source include/assert.inc

##
## Now lets verify that the data goes across, both when it
## is compressed and not compressed
##

CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB) ENGINE=InnoDB;

## This will trigger on the wire compression since we are generating
## a row insert larger than the compression threshold
--eval INSERT INTO t1 VALUES(1, REPEAT('A', $double_sound_threshold))

## This will not be compressed on the wire
--eval INSERT INTO t1 VALUES(2, REPEAT('B', $half_sound_threshold))

--let $rpl_connection_name= server2
--source include/rpl_connection.inc

--source include/rpl_sync.inc

#
# Assert that compression is disabled on server2
# given that we had set threshold to 0 earlier in the test
#
--let $threshold= `SELECT @@group_replication_compression_threshold`
--let $assert_cond= $threshold = 0
--let $assert_text= Assert that the compression_threshold is disabled
--source include/assert.inc

# Server2 has no compression enabled, so lets see if it
# is able to speak with server1 which has compression on
--eval INSERT INTO t1 VALUES(3, REPEAT('C', $double_sound_threshold))

--source include/rpl_sync.inc

#
# Assert that the data made it through
#
--let $diff_tables= server1:test.t1,server2:test.t1
--source include/diff_tables.inc

#
# One last assert - entries in the error log are correct
#

#
# Assert that GR on server1 was started with compression enabled
# It was only started once
#
--let $assert_file=$MYSQLTEST_VARDIR/tmp/group_replication_compression_options_mysqld.1.err
--let $assert_text= LZ4 compression was active and logged to the error log
--let $assert_select=.*group_replication_compression_threshold: 512.*
--let $assert_count= 1
--source include/assert_grep.inc

#
# Assert that GR on server1 was never started with compression disabled
#
--let $assert_file=$MYSQLTEST_VARDIR/tmp/group_replication_compression_options_mysqld.1.err
--let $assert_text= LZ4 compression was disabled and logged to the error log
--let $assert_select=.*group_replication_compression_threshold: 0.*
--let $assert_count= 0
--source include/assert_grep.inc

#
# Assert that GR on server2 was never started with compression enabled
# It was started twice, btw
#
--let $assert_file=$MYSQLTEST_VARDIR/tmp/group_replication_compression_options_mysqld.2.err
--let $assert_text= LZ4 compression was disabled always
--let $assert_select=.*group_replication_compression_threshold: 0.*
--let $assert_count= 1
--source include/assert_grep.inc

##
## Clean up
##

DROP TABLE t1;

--source include/rpl_sync.inc

--let $rpl_connection_name= server1
--source include/rpl_connection.inc

--source include/stop_group_replication.inc
--replace_result $saved_threshold SAVED_THRESHOLD
--eval SET GLOBAL group_replication_compression_threshold= $saved_threshold
--source include/start_group_replication.inc

--let $rpl_connection_name= server2
--source include/rpl_connection.inc

--source include/stop_group_replication.inc
--replace_result $saved_threshold SAVED_THRESHOLD
--eval SET GLOBAL group_replication_compression_threshold= $saved_threshold
--source include/start_group_replication.inc

## This is the end... My only friend the end!
--source ../inc/group_replication_end.inc

Man Man