81
79
self.res_fname = "result.txt"
83
master_str = "--master=%s" % \
84
self.build_connection_string(self.server_list[2])
85
slave_str = " --slave=%s" % \
86
self.build_connection_string(self.server_list[1])
87
relay_slave_slave = " --slave=%s" % \
88
self.build_connection_string(self.server_list[3])
89
relay_slave_master = " --master=%s" % \
90
self.build_connection_string(self.server_list[3])
91
slave_leaf = " --slave=%s" % \
92
self.build_connection_string(self.server_list[4])
94
cmd_str = "mysqlrplshow.py --disco=root:root " + master_str
96
comment = "Test case 1 - show topology of master with no slaves"
97
cmd_opts = " --show-list --recurse "
98
res = mutlib.System_test.run_test_case(self, 0, cmd_str+cmd_opts,
101
raise MUTLibError("%s: failed" % comment)
103
conn_str = master_str + slave_str
105
cmd = "mysqlreplicate.py --rpl-user=rpl:rpl "
107
res = self.exec_util(cmd+master_str+slave_str,
109
res = self.exec_util(cmd+master_str+relay_slave_slave,
111
res = self.exec_util(cmd+relay_slave_master+slave_leaf,
115
raise MUTLibError(e.errmsg)
117
cmd_str = "mysqlrplshow.py --disco=root:root " + master_str
119
comment = "Test case 2 - show topology"
120
cmd_opts = " --show-list --recurse "
121
res = mutlib.System_test.run_test_case(self, 0, cmd_str+cmd_opts,
124
raise MUTLibError("%s: failed" % comment)
126
comment = "Test case 3 - show topology with --max-depth"
127
cmd_opts = " --show-list --recurse --max-depth=1"
128
res = mutlib.System_test.run_test_case(self, 0, cmd_str+cmd_opts,
131
raise MUTLibError("%s: failed" % comment)
134
circle_master = " --master=%s" % \
135
self.build_connection_string(self.server_list[4])
136
circle_slave = " --slave=%s" % \
137
self.build_connection_string(self.server_list[2])
138
res = self.exec_util(cmd+circle_master+circle_slave,
142
raise MUTLibError(e.errmsg)
144
comment = "Test case 4 - show topology with circular replication"
145
cmd_opts = " --show-list --recurse "
146
res = mutlib.System_test.run_test_case(self, 0, cmd_str+cmd_opts,
149
raise MUTLibError("%s: failed" % comment)
151
# Create a master:master toplogy
152
cmd = "mysqlreplicate.py --rpl-user=rpl:rpl "
154
cmd_str = cmd + "--master=%s --slave=%s" % \
155
(self.build_connection_string(self.server_list[5]),
156
self.build_connection_string(self.server_list[6]))
157
res = self.exec_util(cmd_str, self.res_fname)
158
cmd_str = cmd + "--master=%s --slave=%s" % \
159
(self.build_connection_string(self.server_list[6]),
160
self.build_connection_string(self.server_list[5]))
161
res = self.exec_util(cmd_str, self.res_fname)
163
raise MUTLibError(e.errmsg)
165
comment = "Test case 5 - show topology with master:master replication"
166
cmd_str = "mysqlrplshow.py --master=%s --disco=root:root " % \
167
self.build_connection_string(self.server_list[5])
168
cmd_opts = " --show-list --recurse "
169
res = mutlib.System_test.run_test_case(self, 0, cmd_str+cmd_opts,
172
raise MUTLibError("%s: failed" % comment)
81
master_con = self.build_connection_string(self.server_list[2])
82
master_str = "--master={0}".format(master_con)
84
slave_con = self.build_connection_string(self.server_list[1])
85
slave_str = "--slave={0}".format(slave_con)
87
relay_slave_con = self.build_connection_string(self.server_list[3])
88
relay_slave_slave = "--slave={0}".format(relay_slave_con)
89
relay_slave_master = "--master={0}".format(relay_slave_con)
91
slave_leaf_con = self.build_connection_string(self.server_list[4])
92
slave_leaf = " --slave={0}".format(slave_leaf_con)
96
comment = ("Test case {0} - show topology of master with no "
97
"slaves").format(test_num)
98
cmd_str = ("mysqlrplshow.py --disco=root:root {0} "
99
"--show-list --recurse").format(master_str)
100
res = self.run_test_case(0, cmd_str, comment)
102
raise MUTLibError("%s: failed" % comment)
104
cmd = "mysqlreplicate.py --rpl-user=rpl:rpl {0} {1}"
106
res = self.exec_util(cmd.format(master_str, slave_str),
108
res = self.exec_util(cmd.format(master_str, relay_slave_slave),
110
res = self.exec_util(cmd.format(relay_slave_master, slave_leaf),
113
raise MUTLibError(e.errmsg)
117
comment = "Test case {0} - show topology".format(test_num)
118
cmd_str = ("mysqlrplshow.py --disco=root:root {0} "
119
"--show-list --recurse").format(master_str)
120
res = self.run_test_case(0, cmd_str, comment)
122
raise MUTLibError("%s: failed" % comment)
126
comment = ("Test case {0} - show topology with "
127
"--max-depth").format(test_num)
128
cmd_str = ("mysqlrplshow.py --disco=root:root {0} "
129
"--show-list --recurse --max-depth=1").format(master_str)
130
res = self.run_test_case(0, cmd_str, comment)
132
raise MUTLibError("%s: failed" % comment)
135
circle_master = " --master={0}".format(slave_leaf_con)
136
circle_slave = " --slave={0}".format(master_con)
137
res = self.exec_util(cmd.format(circle_master, circle_slave),
140
raise MUTLibError(e.errmsg)
144
comment = ("Test case {0} - show topology with circular "
145
"replication").format(test_num)
146
cmd_str = ("mysqlrplshow.py --disco=root:root {0} "
147
"--show-list --recurse").format(master_str)
148
res = self.run_test_case(0, cmd_str, comment)
150
raise MUTLibError("%s: failed" % comment)
154
comment = ("Test case {0} - show circular topology with verbose "
155
"option").format(test_num)
156
cmd_str = ("mysqlrplshow.py --disco=root:root {0} "
157
"--show-list --recurse --verbose").format(master_str)
158
res = self.run_test_case(0, cmd_str, comment)
160
raise MUTLibError("%s: failed" % comment)
162
# Create a master:master topology
163
multi_master1_con = self.build_connection_string(self.server_list[5])
164
multi_master2_con = self.build_connection_string(self.server_list[6])
165
cmd = "mysqlreplicate.py --rpl-user=rpl:rpl --master={0} --slave={1}"
167
res = self.exec_util(cmd.format(multi_master1_con,
170
res = self.exec_util(cmd.format(multi_master2_con,
174
raise MUTLibError(e.errmsg)
178
comment = ("Test case {0} - show topology with master:master "
179
"replication").format(test_num)
180
cmd_str = ("mysqlrplshow.py --disco=root:root --master={0} "
181
"--show-list --recurse").format(multi_master1_con)
182
res = self.run_test_case(0, cmd_str, comment)
184
raise MUTLibError("%s: failed" % comment)
174
186
# Here we need to kill one of the servers to show that the
175
187
# phantom server error from a stale SHOW SLAVE HOSTS is
176
188
# fixed and the slave does *not* show on the graph.
179
191
self.servers.remove_server(self.server_list[4])
180
192
self.server_list[4] = None
182
196
# This shows there is indeed stale data in the view
183
197
res = self.server_list[3].exec_query("SHOW SLAVE HOSTS")
184
self.results.append("Test case 6 : SHOW SLAVE HOSTS contains %d row.\n" %
198
self.results.append("Test case {0} : SHOW SLAVE HOSTS contains {1} "
199
"row.\n".format(test_num, len(res)))
187
comment = "Test case 6 - show topology with phantom slave"
188
cmd_str = "mysqlrplshow.py --disco=root:root " + relay_slave_master
189
cmd_opts = " --show-list "
190
res = mutlib.System_test.run_test_case(self, 0, cmd_str+cmd_opts,
201
comment = ("Test case {0} - show topology with phantom "
202
"slave").format(test_num)
203
cmd_str = ("mysqlrplshow.py --disco=root:root {0}"
204
"--show-list").format(relay_slave_master)
205
res = self.run_test_case(0, cmd_str, comment)
193
207
self.do_replacements()
196
210
raise MUTLibError("%s: failed" % comment)
198
for i in range(6,0,-1):
212
for i in range(6, 0, -1):
199
213
self.stop_replication(self.server_list[i])
203
217
def do_replacements(self):
204
218
self.replace_substring(" (28000)", "")
205
219
self.replace_substring("127.0.0.1", "localhost")