1# ==== Purpose ====
2#
3# Test that the sync chain generated by
4# include/rpl_change_topology.inc (sourced from include/rpl_init.inc)
5# is correct.
6#
7# We test a number of different topologies.  Each topology is tested
8# in include/rpl_test_framework.inc.  See
9# include/rpl_test_framework.inc for details on how the sync
10# chain is tested.
11#
12# ==== Related bugs ====
13#
14# BUG#49978: Replication tests don't clean up replication state at the end
15
16
17# We only need to execute this test once. Also, we rely on 'DELETE
18# FROM t1' to remove rows in slave tables that don't exist in master
19# tables (see include/rpl_test_framework.inc for details).
20--source include/have_binlog_format_statement.inc
21
22
23--echo ==== Create t1 on all servers. ====
24if ($mtr_supports_more_than_10_servers)
25{
26  --let $rpl_server_count= 15
27  --let $rpl_topology= 1->2->3->4->5->6->7->8->9->10->11->12->13->14->15
28}
29if (!$mtr_supports_more_than_10_servers)
30{
31  --let $rpl_server_count= 9
32  --let $rpl_topology= 1->2->3->4->5->6->7->8->9
33}
34--source include/rpl_init.inc
35CREATE TABLE t1 (a INT);
36--source include/rpl_end.inc
37
38# Initialize $next_number before first call to
39# include/rpl_test_framework.text
40--let $next_number= 0
41
42
43--echo ==== Test 3-server topologies ====
44
45--let $rpl_server_count= 3
46
47--let $rpl_topology= 1 -> 2
48--let $masters= 1,3
49--source include/rpl_test_framework.inc
50
51--let $rpl_topology= 2 -> 3
52--let $masters= 1,2
53--source include/rpl_test_framework.inc
54
55--let $rpl_topology= none
56--let $masters= 1,2,3
57--source include/rpl_test_framework.inc
58
59--let $rpl_topology= 1->2, 2->1
60--let $masters= 1,3
61--source include/rpl_test_framework.inc
62
63--let $rpl_topology= 1->2->1
64--let $masters= 2,3
65--source include/rpl_test_framework.inc
66
67--let $rpl_topology= 2->1->2
68--let $masters= 1,3
69--source include/rpl_test_framework.inc
70
71--let $rpl_topology= 1->2->3
72--let $masters= 1
73--source include/rpl_test_framework.inc
74
75--let $rpl_topology= 2->3->2->1
76--let $masters= 3
77--source include/rpl_test_framework.inc
78
79--let $rpl_topology= 1->2,2->3,3->1
80--let $masters= 3
81--source include/rpl_test_framework.inc
82
83--let $rpl_topology= 1->3->2->1
84--let $masters= 3
85--source include/rpl_test_framework.inc
86
87
88--echo ==== Test 6-server topologies ====
89
90--let $rpl_server_count= 6
91
92--let $rpl_topology= 1->2->3->4->1->5->6
93--let $masters= 1
94--source include/rpl_test_framework.inc
95
96--let $rpl_topology= 3->4->5->6->3->1->2
97--let $masters= 4
98--source include/rpl_test_framework.inc
99
100--let $rpl_topology= 6->5->4->3->2->1
101--let $masters= 6
102--source include/rpl_test_framework.inc
103
104--let $rpl_topology= 1->2->3->1,4->5->6
105--let $masters= 3,4
106--source include/rpl_test_framework.inc
107
108
109--echo ==== Test 9-server topology ====
110
111--let $rpl_server_count= 9
112
113--let $rpl_topology= 1->2, 2->3, 3->4, 4->5, 5->1, 1->6, 6->7, 6->8, 8->9
114--let $masters= 2
115--source include/rpl_test_framework.inc
116
117if ($mtr_supports_more_than_10_servers) {
118--echo ==== Test 15-server topologies ====
119
120--let $rpl_server_count= 15
121
122--let $rpl_topology= 1->2->3->4->5->6->7->8->9->10->11->12->13->14->15->1
123--let $masters= 2
124--source include/rpl_test_framework.inc
125
126# This is a binary tree
127--let $rpl_topology= 1->2->4->8,1->3->6->12,2->5->10,3->7->14,4->9,5->11,6->13,7->15
128--let $masters= 1
129--source include/rpl_test_framework.inc
130}
131
132--echo ==== Clean up ====
133
134if ($mtr_supports_more_than_10_servers) {
135  --let $rpl_topology= 1->2->3->4->5->6->7->8->9->10->11->12->13->14->15
136}
137if (!$mtr_supports_more_than_10_servers) {
138  --let $rpl_topology= 1->2->3->4->5->6->7->8->9
139}
140--source include/rpl_init.inc
141--connection server_1
142DROP TABLE t1;
143--source include/rpl_end.inc
144