github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/tests/tls/run.sh (about) 1 #!/bin/bash 2 3 set -eu 4 5 cur=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) 6 source $cur/../_utils/test_prepare 7 8 WORK_DIR=$TEST_DIR/$TEST_NAME 9 10 API_VERSION="v1alpha1" 11 12 function get_mysql_ssl_data_path() { 13 run_sql 'SHOW VARIABLES WHERE Variable_Name = "datadir"' $MYSQL_PORT1 $MYSQL_PASSWORD1 14 mysql_data_path=$(cat "$TEST_DIR/sql_res.$TEST_NAME.txt" | grep Value | cut -d ':' -f 2 | xargs) 15 echo "$mysql_data_path" 16 } 17 18 function setup_tidb_with_tls() { 19 echo "run a new tidb server with tls" 20 cat - >"$WORK_DIR/tidb-tls-config.toml" <<EOF 21 22 socket = "/tmp/tidb-tls.sock" 23 24 [status] 25 status-port = 10090 26 27 [security] 28 # set the path for certificates. Empty string means disabling secure connections. 29 ssl-ca = "$cur/conf/ca.pem" 30 ssl-cert = "$cur/conf/dm.pem" 31 ssl-key = "$cur/conf/dm.key" 32 cluster-ssl-ca = "$cur/conf/ca.pem" 33 cluster-ssl-cert = "$cur/conf/dm.pem" 34 cluster-ssl-key = "$cur/conf/dm.key" 35 EOF 36 37 bin/tidb-server \ 38 -P 4400 \ 39 --path $WORK_DIR/tidb \ 40 --store unistore \ 41 --config $WORK_DIR/tidb-tls-config.toml \ 42 --log-file "$WORK_DIR/tidb.log" 2>&1 & 43 44 sleep 5 45 # if execute failed, print tidb's log for debug 46 mysql -uroot -h127.0.0.1 -P4400 --default-character-set utf8 --ssl-ca $cur/conf/ca.pem --ssl-cert $cur/conf/dm.pem --ssl-key $cur/conf/dm.key -E -e "drop database if exists tls" || (cat $WORK_DIR/tidb.log && exit 1) 47 mysql -uroot -h127.0.0.1 -P4400 --default-character-set utf8 --ssl-ca $cur/conf/ca.pem --ssl-cert $cur/conf/dm.pem --ssl-key $cur/conf/dm.key -E -e "drop database if exists dm_meta" 48 } 49 50 function prepare_data() { 51 run_sql 'DROP DATABASE if exists tls;' $MYSQL_PORT1 $MYSQL_PASSWORD1 52 run_sql 'CREATE DATABASE tls;' $MYSQL_PORT1 $MYSQL_PASSWORD1 53 run_sql "CREATE TABLE tls.t(i TINYINT, j INT UNIQUE KEY);" $MYSQL_PORT1 $MYSQL_PASSWORD1 54 for j in $(seq 10); do 55 run_sql "INSERT INTO tls.t VALUES ($j,${j}000$j),($j,${j}001$j);" $MYSQL_PORT1 $MYSQL_PASSWORD1 56 done 57 } 58 59 function setup_mysql_tls() { 60 mysql_data_path=$(get_mysql_ssl_data_path) 61 echo "mysql_ssl_setup at=$mysql_data_path" 62 63 # NOTE we can use ` mysql_ssl_rsa_setup --datadir "$mysql_data_path"` to create a new cert in datadir 64 # in ci, mysql in other container, so we can't use the mysql_ssl_rsa_setup 65 # only mysql 8.0 support use `ALTER INSTANCE RELOAD TLS` to reload cert 66 # when use mysql 5.7 we need to restart mysql-server manually if your local server do not enable ssl 67 68 run_sql "grant all on *.* to 'dm_tls_test'@'%' identified by '123456' require ssl;" $MYSQL_PORT1 $MYSQL_PASSWORD1 69 run_sql 'flush privileges;' $MYSQL_PORT1 $MYSQL_PASSWORD1 70 71 cp $cur/conf/source1.yaml $WORK_DIR/source1.yaml 72 sed -i "s%dir-placeholer%$mysql_data_path%g" $WORK_DIR/source1.yaml 73 # add a tls source with only ca 74 cp $cur/conf/source-only-ca.yaml $WORK_DIR/source-only-ca.yaml 75 sed -i "s%dir-placeholer%$mysql_data_path%g" $WORK_DIR/source-only-ca.yaml 76 echo "add dm_tls_test user done $mysql_data_path" 77 } 78 79 function prepare_test() { 80 cleanup_process 81 82 # clean test dir 83 rm -rf $WORK_DIR 84 mkdir $WORK_DIR 85 86 # kill the old tidb with tls 87 pkill -hup tidb-server 2>/dev/null || true 88 wait_process_exit tidb-server 89 90 run_sql 'SHOW GLOBAL VARIABLES LIKE "tls_version";' $MYSQL_PORT1 $MYSQL_PASSWORD1 91 setup_mysql_tls 92 setup_tidb_with_tls 93 prepare_data 94 } 95 96 function test_worker_handle_multi_tls_tasks() { 97 prepare_test 98 99 cp $cur/conf/dm-master1.toml $WORK_DIR/ 100 cp $cur/conf/dm-master2.toml $WORK_DIR/ 101 cp $cur/conf/dm-master3.toml $WORK_DIR/ 102 cp $cur/conf/dm-worker1.toml $WORK_DIR/ 103 cp $cur/conf/dm-worker2.toml $WORK_DIR/ 104 cp $cur/conf/dm-task.yaml $WORK_DIR/ 105 cp $cur/conf/dm-task-2.yaml $WORK_DIR/ 106 107 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-master1.toml 108 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-master2.toml 109 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-master3.toml 110 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-worker1.toml 111 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-worker2.toml 112 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-task.yaml 113 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-task-2.yaml 114 115 run_dm_master $WORK_DIR/master1 $MASTER_PORT1 $WORK_DIR/dm-master1.toml 116 run_dm_master $WORK_DIR/master2 $MASTER_PORT2 $WORK_DIR/dm-master2.toml 117 run_dm_master $WORK_DIR/master3 $MASTER_PORT3 $WORK_DIR/dm-master3.toml 118 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT1 "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 119 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT2 "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 120 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT3 "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 121 122 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $WORK_DIR/dm-worker1.toml 123 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 124 125 # operate mysql config to worker 126 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 127 "operate-source create $WORK_DIR/source-only-ca.yaml" \ 128 "\"result\": true" 2 \ 129 "\"source\": \"$SOURCE_ID1\"" 1 130 131 echo "start task and check stage" 132 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 133 "start-task $WORK_DIR/dm-task.yaml --remove-meta=true" 134 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 135 "start-task $WORK_DIR/dm-task-2.yaml --remove-meta=true" 136 137 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 138 "query-status test" \ 139 "\"result\": true" 2 \ 140 "\"unit\": \"Sync\"" 1 141 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 142 "query-status test2" \ 143 "\"result\": true" 2 \ 144 "\"unit\": \"Sync\"" 1 145 146 echo "check data" 147 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 148 check_sync_diff $WORK_DIR $cur/conf/diff_config-2.toml 149 150 echo "============================== test_worker_handle_multi_tls_tasks success ==================================" 151 } 152 153 function test_worker_ha_when_enable_source_tls() { 154 prepare_test 155 156 cp $cur/conf/dm-master1.toml $WORK_DIR/ 157 cp $cur/conf/dm-master2.toml $WORK_DIR/ 158 cp $cur/conf/dm-master3.toml $WORK_DIR/ 159 cp $cur/conf/dm-worker1.toml $WORK_DIR/ 160 cp $cur/conf/dm-worker2.toml $WORK_DIR/ 161 cp $cur/conf/dm-task.yaml $WORK_DIR/ 162 163 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-master1.toml 164 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-master2.toml 165 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-master3.toml 166 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-worker1.toml 167 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-worker2.toml 168 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-task.yaml 169 170 run_dm_master $WORK_DIR/master1 $MASTER_PORT1 $WORK_DIR/dm-master1.toml 171 run_dm_master $WORK_DIR/master2 $MASTER_PORT2 $WORK_DIR/dm-master2.toml 172 run_dm_master $WORK_DIR/master3 $MASTER_PORT3 $WORK_DIR/dm-master3.toml 173 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT1 "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 174 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT2 "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 175 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT3 "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 176 177 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $WORK_DIR/dm-worker1.toml 178 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 179 180 # operate mysql config to worker 181 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 182 "operate-source create $WORK_DIR/source1.yaml" \ 183 "\"result\": true" 2 \ 184 "\"source\": \"$SOURCE_ID1\"" 1 185 186 # start task 187 echo "start task and check stage" 188 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 189 "start-task $WORK_DIR/dm-task.yaml --remove-meta=true" \ 190 "\"result\": true" 2 191 192 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 193 "query-status test" \ 194 "\"result\": true" 2 \ 195 "\"unit\": \"Sync\"" 1 196 197 echo "check data" 198 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 199 200 echo "pause task before kill and restart dm-worker" 201 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 202 "pause-task test" \ 203 "\"result\": true" 2 204 205 echo "start dm-worker2 and kill dm-worker1" 206 kill_process dm-worker1 207 check_port_offline $WORKER1_PORT 20 208 209 mysql_data_path=$(get_mysql_ssl_data_path) 210 echo "mysql_ssl_setup at=$mysql_data_path" 211 212 # change ca.pem name to make sure HA 213 mv "$mysql_data_path/ca.pem" "$mysql_data_path/ca.pem.bak" 214 215 run_dm_worker $WORK_DIR/worker2 $WORKER2_PORT $WORK_DIR/dm-worker2.toml 216 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER2_PORT "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 217 218 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 219 "query-status test" \ 220 "\"result\": true" 2 \ 221 "Paused" 1 222 223 # resume task and check stage 224 echo "resume task to worker2" 225 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 226 "resume-task test" \ 227 "\"result\": true" 2 228 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 229 "query-status test" \ 230 "\"result\": true" 2 \ 231 "\"unit\": \"Sync\"" 1 \ 232 "worker2" 1 233 234 # incr data 235 run_sql 'INSERT INTO tls.t VALUES (99,9999999);' $MYSQL_PORT1 $MYSQL_PASSWORD1 236 237 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 238 239 # resume ca.pem 240 mv "$mysql_data_path/ca.pem.bak" "$mysql_data_path/ca.pem" 241 242 echo "============================== test_worker_ha_when_enable_source_tls success ==================================" 243 } 244 245 function test_master_ha_when_enable_tidb_and_only_ca_source_tls() { 246 prepare_test 247 248 cp $cur/conf/dm-master1.toml $WORK_DIR/ 249 cp $cur/conf/dm-master2.toml $WORK_DIR/ 250 cp $cur/conf/dm-master3.toml $WORK_DIR/ 251 cp $cur/conf/dm-worker1.toml $WORK_DIR/ 252 cp $cur/conf/dm-task.yaml $WORK_DIR/ 253 254 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-master1.toml 255 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-master2.toml 256 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-master3.toml 257 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-worker1.toml 258 sed -i "s%dir-placeholer%$cur\/conf%g" $WORK_DIR/dm-task.yaml 259 260 run_dm_master $WORK_DIR/master1 $MASTER_PORT1 $WORK_DIR/dm-master1.toml 261 run_dm_master $WORK_DIR/master2 $MASTER_PORT2 $WORK_DIR/dm-master2.toml 262 run_dm_master $WORK_DIR/master3 $MASTER_PORT3 $WORK_DIR/dm-master3.toml 263 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT1 "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 264 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT2 "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 265 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT3 "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 266 267 run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $WORK_DIR/dm-worker1.toml 268 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 269 270 # operate mysql config to worker 271 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 272 "operate-source create $WORK_DIR/source1.yaml" \ 273 "\"result\": true" 2 \ 274 "\"source\": \"$SOURCE_ID1\"" 1 275 276 echo "check master alive" 277 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 278 "list-member" \ 279 "\"alive\": true" 3 280 281 echo "start task and check stage" 282 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 283 "start-task $WORK_DIR/dm-task.yaml --remove-meta=true" \ 284 "\"result\": true" 2 285 286 run_dm_ctl_with_tls_and_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" $cur/conf/ca.pem $cur/conf/dm.pem $cur/conf/dm.key \ 287 "query-status test" \ 288 "\"result\": true" 2 \ 289 "\"unit\": \"Sync\"" 1 290 291 echo "test http and api interface" 292 check_rpc_alive $cur/../bin/check_master_online_http 127.0.0.1:$MASTER_PORT1 "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 293 check_rpc_alive $cur/../bin/check_master_http_apis 127.0.0.1:$MASTER_PORT1 "$cur/conf/ca.pem" "$cur/conf/dm.pem" "$cur/conf/dm.key" 294 295 # https://github.com/pingcap/dm/issues/1458 296 # check the log is not repeatedly printed 297 check_log_not_contains $WORK_DIR/master1/log/dm-master.log "remote error: tls: bad certificate" 298 check_log_not_contains $WORK_DIR/master1/log/dm-master.log "client certificate authentication failed" 299 300 echo "use common name not in 'cert-allowed-cn' should not request success" 301 check_rpc_alive $cur/../bin/check_master_online_http 127.0.0.1:$MASTER_PORT1 "$cur/conf/ca.pem" "$cur/conf/other.pem" "$cur/conf/other.key" && exit 1 || true 302 303 # TODO: curl's version is too low in ci, uncomment this after ci upgrade the version 304 #echo "pause task" 305 #curl -X PUT --cacert "$cur/conf/ca.pem" --key "$cur/conf/dm.key" --cert "$cur/conf/dm.pem" https://127.0.0.1:$MASTER_PORT1/apis/$API_VERSION/tasks/test -d '{"op": 2}' > $WORK_DIR/pause.log || cat $WORK_DIR/pause.log 306 #check_log_contains $WORK_DIR/pause.log "\"result\": true" 2 307 308 #echo "query status" 309 #curl -X GET --cacert "$cur/conf/ca.pem" --key "$cur/conf/dm.key" --cert "$cur/conf/dm.pem" https://127.0.0.1:$MASTER_PORT1/apis/$API_VERSION/status/test > $WORK_DIR/status.log || cat $WORK_DIR/status.log 310 #check_log_contains $WORK_DIR/status.log "\"stage\": \"Paused\"" 1 311 312 echo "check data" 313 check_sync_diff $WORK_DIR $cur/conf/diff_config.toml 314 315 echo "============================== test_master_ha_when_enable_tidb_and_only_ca_source_tls success ==================================" 316 } 317 318 function prepare_test_no_tls() { 319 cleanup_process 320 321 # clean test dir 322 rm -rf $WORK_DIR 323 mkdir $WORK_DIR 324 325 # kill the old tidb 326 pkill -hup tidb-server 2>/dev/null || true 327 wait_process_exit tidb-server 328 329 # restart tidb 330 run_tidb_server 4000 $TIDB_PASSWORD 331 332 cp $cur/conf/source-no-tls.yaml $WORK_DIR/source-no-tls.yaml 333 334 prepare_data 335 } 336 337 function test_source_and_target_with_empty_tlsconfig() { 338 prepare_test_no_tls 339 340 cp $cur/conf/dm-master-no-tls.toml $WORK_DIR/ 341 cp $cur/conf/dm-worker3.toml $WORK_DIR/ 342 cp $cur/conf/dm-task-no-tls.yaml $WORK_DIR/ 343 344 # start DM worker and master 345 run_dm_master $WORK_DIR/master $MASTER_PORT $WORK_DIR/dm-master-no-tls.toml 346 check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT 347 run_dm_worker $WORK_DIR/worker3 $WORKER3_PORT $WORK_DIR/dm-worker3.toml 348 check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER3_PORT 349 350 # operate mysql config to worker 351 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 352 "operate-source create $WORK_DIR/source-no-tls.yaml" \ 353 "\"result\": true" 2 \ 354 "\"source\": \"$SOURCE_ID1\"" 1 355 356 echo "check master alive" 357 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 358 "list-member" \ 359 "\"alive\": true" 1 360 361 echo "start task and check stage" 362 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 363 "start-task $WORK_DIR/dm-task-no-tls.yaml --remove-meta=true" \ 364 "\"result\": true" 2 365 366 run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \ 367 "query-status test" \ 368 "\"result\": true" 2 \ 369 "\"unit\": \"Sync\"" 1 370 371 run_sql 'INSERT INTO tls.t VALUES (99,9999999);' $MYSQL_PORT1 $MYSQL_PASSWORD1 372 373 echo "check data" 374 check_sync_diff $WORK_DIR $cur/conf/diff_config-1.toml 375 376 echo "============================== test_source_and_target_with_empty_tlsconfig success ==================================" 377 } 378 379 function run() { 380 test_master_ha_when_enable_tidb_and_only_ca_source_tls 381 382 test_worker_handle_multi_tls_tasks 383 test_worker_ha_when_enable_source_tls 384 385 test_source_and_target_with_empty_tlsconfig 386 } 387 388 cleanup_data tls 389 cleanup_process 390 391 run 392 393 # kill the tidb with tls 394 pkill -hup tidb-server 2>/dev/null || true 395 wait_process_exit tidb-server 396 397 run_tidb_server 4000 $TIDB_PASSWORD 398 399 cleanup_process 400 401 echo "[$(date)] <<<<<< test case $TEST_NAME success! >>>>>>"