polardbxengine/mysql-test/suite/ndb_rpl/t/ndb_rpl_circular_2ch.test

171 lines
4.2 KiB
Plaintext

#############################################################
# Author: Serge Kozlov <skozlov@mysql.com>
# Date: 03/17/2008
# Purpose: Testing cluster circular replication based on two
# independent channels between two clusters
#############################################################
--source include/have_ndb.inc
--source suite/ndb_rpl/ndb_master-slave_2ch.inc
--source include/have_binlog_format_mixed_or_row.inc
--echo
# Check server_id and set auto_increment_* variables
--echo *** Check server_id of mysqld servers ***
--connection master
SHOW VARIABLES LIKE "server_id";
SET auto_increment_offset = 1;
SET auto_increment_increment = 2;
--connection master1
SHOW VARIABLES LIKE "server_id";
SET auto_increment_offset = 1;
SET auto_increment_increment = 2;
--connection slave
SHOW VARIABLES LIKE "server_id";
SET auto_increment_offset = 2;
SET auto_increment_increment = 2;
--connection slave1
SHOW VARIABLES LIKE "server_id";
SET auto_increment_offset = 2;
SET auto_increment_increment = 2;
--echo
# Preparing data.
--echo *** Preparing data ***
--connection master
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT, b VARCHAR(100), c INT NOT NULL, PRIMARY KEY(a)) ENGINE=ndb;
let $wait_binlog_event= CREATE TABLE t1;
--source include/wait_for_binlog_event.inc
--connection master1
--source include/wait_for_binlog_event.inc
--connection slave
--source include/wait_for_binlog_event.inc
--connection slave1
--source include/wait_for_binlog_event.inc
--echo
#
# Testing
#
--echo *** Basic testing ***
# insert data via all hosts
--echo Insert rows via all hosts
--disable_query_log
let $counter= 10;
while ($counter) {
--connection master
INSERT INTO t1(b,c) VALUES('master',1);
--connection master1
INSERT INTO t1(b,c) VALUES('master1',1);
--connection slave
INSERT INTO t1(b,c) VALUES('slave',1);
--connection slave1
INSERT INTO t1(b,c) VALUES('slave1',1);
dec $counter;
}
--connection master
--enable_query_log
# Wait replication between clusters
let $wait_condition= SELECT COUNT(*)=40 FROM t1 WHERE c = 1;
--source include/wait_condition.inc
--connection slave
--source include/wait_condition.inc
# Check data
--echo Check data on both clusters
let $diff_tables= master:t1, slave:t1;
source include/diff_tables.inc;
--echo *** Transaction testing ***
# Start transaction for one mysqld and do mass of inserts for other.
# Do it for for both clusters
--connection master
BEGIN;
--connection slave1
BEGIN;
let $counter= 100;
--connection master
--disable_query_log
while ($counter) {
--connection master
INSERT INTO t1(b,c) VALUES('master',2);
--connection master1
INSERT INTO t1(b,c) VALUES('master1',2);
--connection slave
INSERT INTO t1(b,c) VALUES('slave',2);
--connection slave1
INSERT INTO t1(b,c) VALUES('slave1',2);
dec $counter;
}
--connection master
--enable_query_log
COMMIT;
--connection slave1
COMMIT;
# Wait replication between clusters
--connection master
let $wait_condition= SELECT COUNT(*)=400 FROM t1 WHERE c = 2;
--source include/wait_condition.inc
--connection slave
--source include/wait_condition.inc
--echo Check data on both clusters
let $diff_tables= master:t1, slave:t1;
source include/diff_tables.inc;
# Start transaction and then roll back
--connection master
BEGIN;
--connection slave1
BEGIN;
let $counter= 100;
--connection master
--disable_query_log
while ($counter) {
--connection master
INSERT INTO t1(b,c) VALUES('master',3);
--connection master1
INSERT INTO t1(b,c) VALUES('master1',3);
--connection slave
INSERT INTO t1(b,c) VALUES('slave',3);
--connection slave1
INSERT INTO t1(b,c) VALUES('slave1',3);
dec $counter;
}
--connection master
--enable_query_log
ROLLBACK;
--connection slave1
ROLLBACK;
# Wait replication between clusters
--connection master
let $wait_condition= SELECT COUNT(*)=200 FROM t1 WHERE c = 3;
--source include/wait_condition.inc
--connection slave
--source include/wait_condition.inc
--echo Check data on both clusters
let $diff_tables= master:t1, slave:t1;
source include/diff_tables.inc;
# Clean up
--connection master
DROP TABLE IF EXISTS t1;
--connection slave
# Wait until table is dropped on slave.
--let $query= SELECT COUNT(*) FROM t1
--source include/wait_for_query_to_fail.inc
--echo
--connection master
# End of test 5.1
--source suite/ndb_rpl/ndb_master-slave_2ch_end.inc