2
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; version 2 of the License.
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
# GNU General Public License for more details.
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
rpl_admin_basic_ssl_opt_gtid test.
22
import rpl_admin_basic_ssl_gtid
24
from mutlib.ssl_certs import ssl_c_ca
26
from mysql.utilities.exception import MUTLibError
29
class test(rpl_admin_basic_ssl_gtid.test):
30
"""test replication administration commands
31
This test runs the mysqlrpladmin utility on a known topology with ssl=1
34
Note: this test requires GTID enabled servers.
40
master_conn = self.build_connection_string(self.server1).strip(' ')
41
slave1_conn = self.build_connection_string(self.server2).strip(' ')
42
slave2_conn = self.build_connection_string(self.server3).strip(' ')
43
slave3_conn = self.build_connection_string(self.server4).strip(' ')
45
ssl_ca = "--ssl-ca={0}".format(ssl_c_ca)
47
comment = ("Test case {0} - SSL mysqlrplshow OLD Master "
48
"before demote".format(test_num))
49
cmd_str = "mysqlrplshow.py --master={0} {1} {2}".format(master_conn,
51
cmd_opts = "--discover-slaves={0} ".format(master_conn.split('@')[0])
52
cmds = "{0} {1}".format(cmd_str, cmd_opts)
53
res = self.run_test_case(0, cmds, comment)
55
raise MUTLibError("{0}: failed".format(comment))
58
comment = ("Test case {0} - SSL "
59
"switchover demote-master ".format(test_num))
60
cmd_str = ("mysqlrpladmin.py --master={0} {1} {2} "
61
).format(master_conn, ssl1, ssl_ca)
62
cmd_opts = (" --new-master={0} --discover-slaves={1} "
63
"--rpl-user=rpluser:hispassword --demote-master "
64
"switchover".format(slave1_conn,
65
master_conn.split('@')[0]))
66
cmds = "{0} {1}".format(cmd_str, cmd_opts)
67
res = self.run_test_case(0, cmds, comment)
69
raise MUTLibError("{0}: failed".format(comment))
70
self.results.append("\n")
73
comment = ("Test case {0} - SSL mysqlrplshow "
74
"NEW Master after demote".format(test_num))
75
cmd_str = "mysqlrplshow.py --master={0} {1} {2}".format(slave1_conn,
77
cmd_opts = " --discover-slaves={0} ".format(master_conn.split('@')[0])
78
cmds = "{0} {1}".format(cmd_str, cmd_opts)
79
res = self.run_test_case(0, cmds, comment)
81
raise MUTLibError("{0}: failed".format(comment))
84
comment = ("Test case {0} - SSL mysqlrplcheck "
85
"NEW Master after demote".format(test_num))
86
cmd_opts = "--slave={0} --show-slave-status".format(master_conn)
87
cmd_str = "mysqlrplcheck.py --master={0} {1} {2}".format(slave1_conn,
89
cmds = "{0} {1}".format(cmd_str, cmd_opts)
90
res = self.run_test_case(0, cmds, comment)
92
raise MUTLibError("{0}: failed".format(comment))
93
self.results.append("\n")
96
comment = ("Test case {0} - SSL mysqlrplcheck "
97
"NEW Master after demote".format(test_num))
98
cmd_opts = "--slave={0} --show-slave-status".format(slave2_conn)
99
cmds = "{0} {1}".format(cmd_str, cmd_opts)
100
res = self.run_test_case(0, cmds, comment)
102
raise MUTLibError("{0}: failed".format(comment))
103
self.results.append("\n")
106
comment = ("Test case {0} - SSL mysqlrplcheck "
107
"NEW Master after demote".format(test_num))
108
cmd_opts = "--slave={0} --show-slave-status".format(slave3_conn)
109
cmds = "{0} {1}".format(cmd_str, cmd_opts)
110
res = self.run_test_case(0, cmds, comment)
112
raise MUTLibError("{0}: failed".format(comment))
113
self.results.append("\n")
116
comment = ("Test case {0} - SSL "
117
"failover ".format(test_num))
118
cmd_str = "mysqlrpladmin.py {0} {1} ".format(ssl1, ssl_ca)
119
slaves = ",".join([slave2_conn, slave3_conn,
121
cmd_opts = (" --slaves={0} --rpl-user=rpluser:hispassword "
122
"failover".format(slaves))
123
cmds = "{0} {1}".format(cmd_str, cmd_opts)
124
res = self.run_test_case(0, cmds, comment)
126
raise MUTLibError("{0}: failed".format(comment))
127
self.results.append("\n")
130
comment = ("Test case {0} - SSL mysqlrplshow "
131
"NEW Master after failover".format(test_num))
132
cmd_str = "mysqlrplshow.py --master={0} {1} {2}".format(slave2_conn,
134
cmd_opts = " --discover-slaves={0} ".format(master_conn.split('@')[0])
135
cmds = "{0} {1}".format(cmd_str, cmd_opts)
136
res = self.run_test_case(0, cmds, comment)
138
raise MUTLibError("{0}: failed".format(comment))
141
comment = ("Test case {0} - SSL mysqlrplcheck "
142
"NEW Master after demote".format(test_num))
143
cmd_str = "mysqlrplcheck.py --master={0} {1} {2}".format(slave2_conn,
145
cmd_opts = "--slave={0} --show-slave-status".format(master_conn)
146
cmds = "{0} {1}".format(cmd_str, cmd_opts)
147
res = self.run_test_case(0, cmds, comment)
149
raise MUTLibError("{0}: failed".format(comment))
150
self.results.append("\n")
153
comment = ("Test case {0} - SSL mysqlrplcheck "
154
"NEW Master after demote".format(test_num))
155
cmd_opts = "--slave={0} --show-slave-status".format(slave3_conn)
156
cmds = "{0} {1}".format(cmd_str, cmd_opts)
157
res = self.run_test_case(0, cmds, comment)
159
raise MUTLibError("{0}: failed".format(comment))
160
self.results.append("\n")