github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/tests/slow_relay_writer/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  TABLE_NUM=10
    10  
    11  function prepare_data() {
    12  	run_sql 'DROP DATABASE if exists slow_relay_writer;' $MYSQL_PORT1 $MYSQL_PASSWORD1
    13  	run_sql 'CREATE DATABASE slow_relay_writer;' $MYSQL_PORT1 $MYSQL_PASSWORD1
    14  	for i in $(seq $TABLE_NUM); do
    15  		run_sql "CREATE TABLE slow_relay_writer.t$i(i TINYINT, j INT UNIQUE KEY);" $MYSQL_PORT1 $MYSQL_PASSWORD1
    16  	done
    17  }
    18  
    19  function incremental_data() {
    20  	for j in $(seq 2); do
    21  		for i in $(seq $TABLE_NUM); do
    22  			run_sql "BEGIN;INSERT INTO slow_relay_writer.t$i VALUES ($j,${j}000$j);INSERT INTO slow_relay_writer.t$i VALUES ($j,${j}001$j);COMMIT;" $MYSQL_PORT1 $MYSQL_PASSWORD1
    23  		done
    24  	done
    25  }
    26  
    27  function run() {
    28  	prepare_data
    29  
    30  	export GO_FAILPOINTS='github.com/pingcap/tiflow/dm/relay/SlowDownWriteDMLRelayLog=10*return();github.com/pingcap/tiflow/dm/relay/SetHeartbeatInterval=return(5)'
    31  
    32  	run_dm_master $WORK_DIR/master $MASTER_PORT $cur/conf/dm-master.toml
    33  	check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT
    34  	run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml
    35  	check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT
    36  	# operate mysql config to worker
    37  	cp $cur/conf/source1.yaml $WORK_DIR/source1.yaml
    38  	sed -i "/relay-binlog-name/i\relay-dir: $WORK_DIR/worker1/relay_log" $WORK_DIR/source1.yaml
    39  	dmctl_operate_source create $WORK_DIR/source1.yaml $SOURCE_ID1
    40  
    41  	dmctl_start_task_standalone
    42  	check_sync_diff $WORK_DIR $cur/conf/diff_config.toml
    43  
    44  	echo "start incremental_data"
    45  	incremental_data
    46  	echo "finish incremental_data"
    47  
    48  	# we injected 10*1s by SlowDownWriteDMLRelayLog, so sleep a longer time
    49  	sleep 10
    50  
    51  	check_log_contains $WORK_DIR/worker1/log/dm-worker.log "enter SlowDownWriteDMLRelayLog"
    52  	run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \
    53  		"query-status test" \
    54  		"\"synced\": true" 1
    55  
    56  	check_sync_diff $WORK_DIR $cur/conf/diff_config.toml
    57  
    58  	export GO_FAILPOINTS=''
    59  }
    60  
    61  cleanup_data slow_relay_writer
    62  cleanup_process
    63  
    64  run $*
    65  
    66  cleanup_process
    67  
    68  echo "[$(date)] <<<<<< test case $TEST_NAME success! >>>>>>"