Merge lp:~diego-fmpwizard/mysql-proxy/master_info into lp:mysql-proxy

Proposed by fmpwizard
Status: Merged
Merged at revision: not available
Proposed branch: lp:~diego-fmpwizard/mysql-proxy/master_info
Merge into: lp:mysql-proxy
Diff against target: None lines
To merge this branch: bzr merge lp:~diego-fmpwizard/mysql-proxy/master_info
Reviewer Review Type Date Requested Status
Jan Kneschke (community) Approve
Review via email: mp+5520@code.launchpad.net
To post a comment you must log in.
Revision history for this message
fmpwizard (diego-fmpwizard) wrote :

Here I added to_masterinfo_string() to Lua so that you can create a master.info file from a lua script. It does the opposite to from_masterinfo_string()

I also added some master_ssl_* fields that were missing from lua.

Revision history for this message
Jan Kneschke (jan-kneschke) wrote :

looks good.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/mysql-proto.c'
2--- lib/mysql-proto.c 2009-02-07 03:59:23 +0000
3+++ lib/mysql-proto.c 2009-04-14 15:11:59 +0000
4@@ -181,7 +181,8 @@
5 }
6
7 lua_newtable(L);
8-
9+
10+ LUA_EXPORT_INT(info, master_lines);
11 LUA_EXPORT_STR(info, master_log_file);
12 LUA_EXPORT_INT(info, master_log_pos);
13 LUA_EXPORT_STR(info, master_host);
14@@ -190,7 +191,12 @@
15 LUA_EXPORT_INT(info, master_port);
16 LUA_EXPORT_INT(info, master_connect_retry);
17 LUA_EXPORT_INT(info, master_ssl);
18- if (info->lines >= 15) {
19+ LUA_EXPORT_STR(info, master_ssl_ca);
20+ LUA_EXPORT_STR(info, master_ssl_capath);
21+ LUA_EXPORT_STR(info, master_ssl_cert);
22+ LUA_EXPORT_STR(info, master_ssl_cipher);
23+ LUA_EXPORT_STR(info, master_ssl_key);
24+ if (info->master_lines >= 15) {
25 LUA_EXPORT_INT(info, master_ssl_verify_server_cert);
26 }
27
28@@ -199,6 +205,43 @@
29 return 1;
30 }
31
32+static int lua_proto_append_masterinfo_string (lua_State *L) {
33+ GString *packet;
34+ network_mysqld_masterinfo_t *info;
35+
36+ luaL_checktype(L, 1, LUA_TTABLE);
37+
38+ info = network_mysqld_masterinfo_new();
39+
40+ LUA_IMPORT_INT(info, master_lines);
41+ LUA_IMPORT_STR(info, master_log_file);
42+ LUA_IMPORT_INT(info, master_log_pos);
43+ LUA_IMPORT_STR(info, master_host);
44+ LUA_IMPORT_STR(info, master_user);
45+ LUA_IMPORT_STR(info, master_password);
46+ LUA_IMPORT_INT(info, master_port);
47+ LUA_IMPORT_INT(info, master_connect_retry);
48+ LUA_IMPORT_INT(info, master_ssl);
49+ LUA_IMPORT_STR(info, master_ssl_ca);
50+ LUA_IMPORT_STR(info, master_ssl_capath);
51+ LUA_IMPORT_STR(info, master_ssl_cert);
52+ LUA_IMPORT_STR(info, master_ssl_cipher);
53+ LUA_IMPORT_STR(info, master_ssl_key);
54+ LUA_IMPORT_INT(info, master_ssl_verify_server_cert);
55+
56+ packet = g_string_new(NULL);
57+ network_mysqld_masterinfo_append(packet, info);
58+
59+ lua_pushlstring(L, S(packet));
60+
61+ network_mysqld_masterinfo_free(info);
62+
63+ g_string_free(packet, TRUE);
64+
65+ return 1;
66+}
67+
68+
69 static int lua_proto_append_ok_packet (lua_State *L) {
70 GString *packet;
71 network_mysqld_ok_packet_t *ok_packet;
72@@ -446,6 +489,7 @@
73 {"from_response_packet", lua_proto_get_response_packet},
74 {"to_response_packet", lua_proto_append_response_packet},
75 {"from_masterinfo_string", lua_proto_get_masterinfo_string},
76+ {"to_masterinfo_string", lua_proto_append_masterinfo_string},
77 {NULL, NULL},
78 };
79
80
81=== modified file 'src/network-mysqld-masterinfo.c'
82--- src/network-mysqld-masterinfo.c 2009-02-23 23:37:58 +0000
83+++ src/network-mysqld-masterinfo.c 2009-04-14 15:11:59 +0000
84@@ -118,9 +118,10 @@
85 g_return_val_if_fail(info, -1);
86 g_return_val_if_fail(packet, -1);
87
88- err = err || network_mysqld_masterinfo_get_int32(packet, &lines);
89- info->lines = lines;
90- err = err || network_mysqld_masterinfo_get_string(packet, info->master_log_file);
91+ /*err = err || network_mysqld_masterinfo_get_int32(packet, &lines);*/
92+ /*info->master_lines = lines;*/
93+ err = err || network_mysqld_masterinfo_get_int32(packet, &(info->master_lines));
94+ err = err || network_mysqld_masterinfo_get_string(packet, info->master_log_file);
95 err = err || network_mysqld_masterinfo_get_int32(packet, &(info->master_log_pos));
96 err = err || network_mysqld_masterinfo_get_string(packet, info->master_host);
97 err = err || network_mysqld_masterinfo_get_string(packet, info->master_user);
98@@ -133,7 +134,7 @@
99 err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_cert);
100 err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_cipher);
101 err = err || network_mysqld_masterinfo_get_string(packet, info->master_ssl_key);
102- if (lines >= 15) {
103+ if (info->master_lines >= 15) {
104 err = err || network_mysqld_masterinfo_get_int32(packet, &(info->master_ssl_verify_server_cert));
105 }
106 return err ? -1 : 0;
107@@ -159,8 +160,8 @@
108 g_return_val_if_fail(info, -1);
109 g_return_val_if_fail(packet, -1);
110
111- err = err || network_mysqld_masterinfo_append_int32(packet, 15);
112- err = err || network_mysqld_masterinfo_append_string(packet, info->master_log_file);
113+ err = err || network_mysqld_masterinfo_append_int32(packet, info->master_lines);
114+ err = err || network_mysqld_masterinfo_append_string(packet, info->master_log_file);
115 err = err || network_mysqld_masterinfo_append_int32(packet, info->master_log_pos);
116 err = err || network_mysqld_masterinfo_append_string(packet, info->master_host);
117 err = err || network_mysqld_masterinfo_append_string(packet, info->master_user);
118@@ -173,7 +174,9 @@
119 err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_cert);
120 err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_cipher);
121 err = err || network_mysqld_masterinfo_append_string(packet, info->master_ssl_key);
122- err = err || network_mysqld_masterinfo_append_int32(packet, info->master_ssl_verify_server_cert);
123+ if (info->master_lines >= 15) {
124+ err = err || network_mysqld_masterinfo_append_int32(packet, info->master_ssl_verify_server_cert);
125+ }
126
127 return err ? -1 : 0;
128 }
129
130=== modified file 'src/network-mysqld-masterinfo.h'
131--- src/network-mysqld-masterinfo.h 2009-02-07 03:59:23 +0000
132+++ src/network-mysqld-masterinfo.h 2009-04-14 15:11:59 +0000
133@@ -24,7 +24,7 @@
134 #include "network-mysqld-proto.h"
135
136 typedef struct {
137- guint32 lines;
138+ guint32 master_lines;
139 GString *master_log_file;
140 guint32 master_log_pos;
141 GString *master_host;
142
143=== modified file 'tests/unit/lua/mysql-proto.lua'
144--- tests/unit/lua/mysql-proto.lua 2009-02-07 03:59:23 +0000
145+++ tests/unit/lua/mysql-proto.lua 2009-04-14 15:11:59 +0000
146@@ -184,25 +184,60 @@
147 assert(tbl.database == "db", ("expected 'db', got %s"):format(tostring(tbl.database)))
148
149 -- test 5.1 master.info format
150-local masterinfofile = proto.from_masterinfo_string("15\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\n\n\n\n\n\n0\n")
151+local masterinfofile = proto.from_masterinfo_string(
152+"15\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
153+.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n0\n")
154+assert( masterinfofile["master_lines"] == 15)
155 assert( masterinfofile["master_host"] == "127.0.0.1")
156-assert( masterinfofile["master_ssl"] == 0)
157 assert( masterinfofile["master_log_pos"] == 2143897)
158 assert( masterinfofile["master_user"] == "root")
159 assert( masterinfofile["master_connect_retry"] == 60)
160 assert( masterinfofile["master_log_file"] == "hostname-bin.000024")
161 assert( masterinfofile["master_port"] == 3306)
162 assert( masterinfofile["master_password"] == "123")
163+assert( masterinfofile["master_ssl"] == 0)
164+assert( masterinfofile["master_ssl_ca"] == "ca-cert.pem")
165+assert( masterinfofile["master_ssl_capath"] == "/usr/local/mysql/ssl/ca/")
166+assert( masterinfofile["master_ssl_cert"] == "client-cert.pem")
167+assert( masterinfofile["master_ssl_cipher"] == "ssl_cipher")
168+assert( masterinfofile["master_ssl_key"] == "client-key.pem")
169 assert( masterinfofile["master_ssl_verify_server_cert"] == 0)
170
171 -- test 4.1 and 5.0 master.info format
172-local masterinfofile = proto.from_masterinfo_string("14\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\n\n\n\n\n\n")
173+local masterinfofile = proto.from_masterinfo_string(
174+"14\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
175+.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n")
176+
177+assert( masterinfofile["master_lines"] == 14)
178 assert( masterinfofile["master_host"] == "127.0.0.1")
179-assert( masterinfofile["master_ssl"] == 0)
180 assert( masterinfofile["master_log_pos"] == 2143897)
181 assert( masterinfofile["master_user"] == "root")
182 assert( masterinfofile["master_connect_retry"] == 60)
183 assert( masterinfofile["master_log_file"] == "hostname-bin.000024")
184 assert( masterinfofile["master_port"] == 3306)
185-assert( masterinfofile["master_password"] == "123")
186+assert( masterinfofile["master_password"] == "123")
187+assert( masterinfofile["master_ssl"] == 0)
188+assert( masterinfofile["master_ssl_ca"] == "ca-cert.pem")
189+assert( masterinfofile["master_ssl_capath"] == "/usr/local/mysql/ssl/ca/")
190+assert( masterinfofile["master_ssl_cert"] == "client-cert.pem")
191+assert( masterinfofile["master_ssl_cipher"] == "ssl_cipher")
192+assert( masterinfofile["master_ssl_key"] == "client-key.pem")
193 assert( masterinfofile["master_ssl_verify_server_cert"] == nil)
194+
195+-- test proto.to_masterinfo_string()
196+
197+local masterinfofile = proto.from_masterinfo_string(
198+"15\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
199+.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n0\n")
200+
201+assert( proto.to_masterinfo_string(masterinfofile) ==
202+"15\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
203+.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n0\n")
204+
205+local masterinfofile = proto.from_masterinfo_string(
206+"14\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
207+.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n")
208+
209+assert( proto.to_masterinfo_string(masterinfofile) ==
210+"14\nhostname-bin.000024\n2143897\n127.0.0.1\nroot\n123\n3306\n60\n0\nca-cert.pem\n"
211+.. "/usr/local/mysql/ssl/ca/\nclient-cert.pem\nssl_cipher\nclient-key.pem\n")

Subscribers

People subscribed via source and target branches