File: rpl_ssl.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (149 lines) | stat: -rw-r--r-- 4,531 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
--source include/not_group_replication_plugin.inc
let $rpl_privilege_checks_user_grant_option = 1;
source include/master-slave.inc;

# Default replication setup at master-slave.inc does not set MASTER_SSL
--connection slave
--let $current_master_ssl= query_get_value(SHOW SLAVE STATUS, Master_SSL_Allowed, 1)
--let $assert_text= Master_SSL_Allowed should be NO by default
--let $assert_cond= "$current_master_ssl" = "NO"
--source include/assert.inc


# The slave should be initially connected to the master without SSL/TLS
--connection master
--let $connection_type= `SELECT CONNECTION_TYPE FROM performance_schema.threads WHERE PROCESSLIST_COMMAND LIKE "Binlog Dump%"`
--let $assert_text= Without MASTER_SSL, the slave should be connected to the master without SSL/TLS
--let $assert_cond= "$connection_type" <> "SSL/TLS" AND "$connection_type" <> ""
--source include/assert.inc

# create a user for replication that requires ssl encryption
connection master;
create user replssl@localhost require ssl;
grant replication slave on *.* to replssl@localhost;
create table t1 (t int auto_increment, KEY(t));

--source include/sync_slave_sql_with_master.inc

# Set slave to use SSL for connection to master
stop slave;
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--replace_column 2 ####
eval CHANGE REPLICATION SOURCE to
  SOURCE_USER='replssl',
  SOURCE_PASSWORD='',
  SOURCE_SSL=1,
  SOURCE_SSL_CA ='$MYSQL_TEST_DIR/std_data/cacert.pem',
  SOURCE_SSL_CERT='$MYSQL_TEST_DIR/std_data/client-cert.pem',
  SOURCE_SSL_KEY='$MYSQL_TEST_DIR/std_data/client-key.pem';
start slave;

# Switch to master and insert one record, then sync it to slave
connection master;
insert into t1 values(1);
--source include/sync_slave_sql_with_master.inc

# The record should now be on slave
select * from t1;

# The slave is synced and waiting/reading from master
# SHOW SLAVE STATUS will show "Waiting for source to send event"
let $status_items= Master_SSL_Allowed, Master_SSL_CA_Path, Master_SSL_CA_File, Master_SSL_Cert, Master_SSL_Key;
source include/show_slave_status.inc;
source include/check_slave_is_running.inc;

# Stop the slave, as reported in bug#21871 it would hang
STOP SLAVE;

select * from t1;

# Do the same thing a number of times
disable_query_log;
disable_result_log;
# 2007-11-27 mats Bug #32756  	Starting and stopping the slave in a loop can lose rows
# After discussions with Engineering, I'm disabling this part of the test to avoid it causing
# red trees.
disable_testcase BUG#32756;
let $i= 100;
while ($i)
{
  start slave;
  connection master;
  insert into t1 values (NULL);
  select * from t1; # Some variance
  connection slave;
  select * from t1; # Some variance
  stop slave;
  dec $i;
}
enable_testcase;
START SLAVE;
enable_query_log;
enable_result_log;
connection master;
# INSERT one more record to make sure
# the sync has something to do
insert into t1 values (NULL);
let $master_count= `select count(*) from t1`;

--source include/sync_slave_sql_with_master.inc
--source include/wait_for_slave_to_start.inc
source include/show_slave_status.inc;
source include/check_slave_is_running.inc;

let $slave_count= `select count(*) from t1`;

if ($slave_count != $master_count)
{
  echo master and slave differed in number of rows;
  echo master: $master_count;
  echo slave: $slave_count;

  connection master;
  echo === master ===;
  select count(*) t1;
  select * from t1;
  connection slave;
  echo === slave ===;
  select count(*) t1;
  select * from t1;
  query_vertical show slave status;
}

connection master;
drop user replssl@localhost;
drop table t1;
--source include/sync_slave_sql_with_master.inc

# ==== BUG#18165937: HITTING CRASH WHEN SETTING SSL OPTIONS THROUGH CHANGE MASTER COMMAND ====

--source include/stop_slave.inc
--replace_column 2 ####
CHANGE REPLICATION SOURCE TO
 SOURCE_USER = 'root',
 SOURCE_SSL = 0,
 SOURCE_SSL_CA = '',
 SOURCE_SSL_CERT = '',
 SOURCE_SSL_KEY = '',
 SOURCE_SSL_CRL='',
 SOURCE_SSL_CRLPATH='';

--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
eval CHANGE REPLICATION SOURCE TO SOURCE_SSL= 1, SOURCE_SSL_CRL='$MYSQL_TEST_DIR/std_data/crl-client-revoked.crl', SOURCE_SSL_CRLPATH='$MYSQL_TEST_DIR/std_data/crldir';
--source include/start_slave.inc


--source include/stop_slave.inc
--replace_column 2 ####
CHANGE REPLICATION SOURCE TO
 SOURCE_USER = 'root',
 SOURCE_SSL = 0,
 SOURCE_SSL_CA = '',
 SOURCE_SSL_CERT = '',
 SOURCE_SSL_KEY = '',
 SOURCE_SSL_CRL='',
 SOURCE_SSL_CRLPATH='';

--echo End of 5.0 tests
--let $rpl_only_running_threads= 1
--source include/rpl_end.inc