File: rpl_ndb_circular_2ch.test

package info (click to toggle)
mysql-5.1 5.1.73-1%2Bdeb6u1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze-lts
  • size: 197,132 kB
  • ctags: 93,377
  • sloc: cpp: 579,952; ansic: 429,462; perl: 49,053; sh: 21,692; pascal: 21,272; yacc: 12,801; makefile: 4,545; xml: 4,114; sql: 3,297; lex: 1,265; asm: 1,023
file content (167 lines) | stat: -rw-r--r-- 4,259 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#############################################################
# 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 include/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

# End of test 5.1
--source include/rpl_end.inc