1source include/have_ssl_communication.inc;
2source include/master-slave.inc;
3
4# We don't test all types of ssl auth params here since it's a bit hard
5# until problems with OpenSSL 0.9.7 are unresolved
6
7# creating replication user for whom ssl auth is required
8# preparing playground
9connection master;
10create user replssl@localhost;
11grant replication slave on *.* to replssl@localhost require ssl;
12create table t1 (t int);
13
14sync_slave_with_master;
15
16#trying to use this user without ssl
17stop slave;
18--source include/wait_for_slave_to_stop.inc
19change master to master_user='replssl',master_password='';
20start slave;
21
22#showing that replication don't work
23connection master;
24insert into t1 values (1);
25#reasonable timeout for changes to propagate to slave
26let $wait_condition= SELECT COUNT(*) = 1 FROM t1;
27source include/wait_condition.inc;
28connection slave;
29select * from t1;
30
31#showing that replication could work with ssl params
32stop slave;
33--source include/wait_for_slave_to_stop.inc
34--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
35eval change master to master_ssl=1 , master_ssl_ca ='$MYSQL_TEST_DIR/std_data/cacert.pem', master_ssl_cert='$MYSQL_TEST_DIR/std_data/client-cert.pem', master_ssl_key='$MYSQL_TEST_DIR/std_data/client-key.pem';
36start slave;
37--source include/wait_for_slave_to_start.inc
38
39#avoiding unneeded sleeps
40connection master;
41sync_slave_with_master;
42
43#checking that replication is ok
44select * from t1;
45
46#checking show slave status
47let $status_items= Master_SSL_Allowed, Master_SSL_CA_Path, Master_SSL_CA_File, Master_SSL_Cert, Master_SSL_Key;
48source include/show_slave_status.inc;
49source include/check_slave_is_running.inc;
50
51#checking if replication works without ssl also performing clean up
52stop slave;
53--source include/wait_for_slave_to_stop.inc
54change master to master_user='root',master_password='', master_ssl=0;
55start slave;
56--source include/wait_for_slave_to_start.inc
57connection master;
58drop user replssl@localhost;
59drop table t1;
60
61sync_slave_with_master;
62source include/show_slave_status.inc;
63source include/check_slave_is_running.inc;
64# End of 4.1 tests
65
66# Start replication with ssl_verify_server_cert turned on
67connection slave;
68stop slave;
69--source include/wait_for_slave_to_stop.inc
70--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
71eval change master to
72 master_host="localhost",
73 master_ssl=1 ,
74 master_ssl_ca ='$MYSQL_TEST_DIR/std_data/cacert.pem',
75 master_ssl_cert='$MYSQL_TEST_DIR/std_data/client-cert.pem',
76 master_ssl_key='$MYSQL_TEST_DIR/std_data/client-key.pem',
77 master_ssl_verify_server_cert=1;
78start slave;
79--source include/wait_for_slave_to_start.inc
80
81connection master;
82create table t1 (t int);
83insert into t1 values (1);
84
85sync_slave_with_master;
86
87echo on slave;
88#checking that replication is ok
89select * from t1;
90
91#checking show slave status
92source include/show_slave_status.inc;
93--source include/check_slave_is_running.inc
94
95# ==== Clean up ====
96
97connection master;
98drop table t1;
99sync_slave_with_master;
100--source include/stop_slave.inc
101CHANGE MASTER TO
102 master_host="127.0.0.1",
103 master_ssl_ca ='',
104 master_ssl_cert='',
105 master_ssl_key='',
106 master_ssl_verify_server_cert=0,
107 master_ssl=0;
108
109--let $rpl_only_running_threads= 1
110--source include/rpl_end.inc
111