github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/tests/downstream_more_column/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  WORK_DIR=$TEST_DIR/$TEST_NAME
     8  db1="downstream_more_column1"
     9  tb1="t1"
    10  db="downstream_more_column"
    11  tb="t"
    12  
    13  function run() {
    14  	run_sql_file $cur/data/db1.prepare.sql $MYSQL_HOST1 $MYSQL_PORT1 $MYSQL_PASSWORD1
    15  	# create table in tidb with AUTO_INCREMENT
    16  	run_sql_file $cur/data/tidb.prepare.sql $TIDB_HOST $TIDB_PORT $TIDB_PASSWORD
    17  
    18  	# start DM worker and master
    19  	run_dm_master $WORK_DIR/master $MASTER_PORT $cur/conf/dm-master.toml
    20  	check_rpc_alive $cur/../bin/check_master_online 127.0.0.1:$MASTER_PORT
    21  	run_dm_worker $WORK_DIR/worker1 $WORKER1_PORT $cur/conf/dm-worker1.toml
    22  	check_rpc_alive $cur/../bin/check_worker_online 127.0.0.1:$WORKER1_PORT
    23  
    24  	# operate mysql config to worker
    25  	cp $cur/conf/source1.yaml $WORK_DIR/source1.yaml
    26  	dmctl_operate_source create $WORK_DIR/source1.yaml $SOURCE_ID1
    27  
    28  	# start DM task in all mode
    29  	# schemaTracker create table from dump data
    30  	dmctl_start_task_standalone "$cur/conf/dm-task.yaml" "--remove-meta"
    31  	# check full load data
    32  	run_sql_tidb_with_retry "select count(1) from ${db}.${tb} where c1<100;" "count(1): 3"
    33  
    34  	run_sql_file $cur/data/db1.increment.sql $MYSQL_HOST1 $MYSQL_PORT1 $MYSQL_PASSWORD1
    35  	# we load table structure from dump files, so there's no error now
    36  
    37  	# check incremental data
    38  	run_sql_tidb_with_retry "select count(1) from ${db}.${tb} where c1>100 and c1<1000;" "count(1): 3"
    39  
    40  	run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \
    41  		"stop-task test" \
    42  		"\"result\": true" 2
    43  
    44  	# start DM task in incremental mode
    45  	# schemaTracker create table from downstream
    46  	cp $cur/conf/dm-task-incremental.yaml $WORK_DIR/dm-task-incremental.yaml
    47  	run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \
    48  		"start-task $WORK_DIR/dm-task-incremental.yaml --remove-meta" \
    49  		"\"result\": true" 2
    50  
    51  	run_sql_file $cur/data/db1.increment2.sql $MYSQL_HOST1 $MYSQL_PORT1 $MYSQL_PASSWORD1
    52  	# Column count doesn't match value count
    53  	run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \
    54  		"query-status test" \
    55  		"sourceTable: \`${db1}\`.\`${tb1}\`" 1 \
    56  		"targetTable: \`${db}\`.\`${tb}\`" 1 \
    57  		"Column count doesn't match value count" 1
    58  
    59  	# operate-schema: flush checkpoint default
    60  	run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \
    61  		"operate-schema set -s mysql-replica-01 test -d ${db1} -t ${tb1} $cur/data/schema.sql" \
    62  		"\"result\": true" 2
    63  	check_log_contain_with_retry 'flush table info' $WORK_DIR/worker1/log/dm-worker.log
    64  
    65  	run_dm_ctl $WORK_DIR "127.0.0.1:$MASTER_PORT" \
    66  		"resume-task test"
    67  
    68  	run_dm_ctl_with_retry $WORK_DIR "127.0.0.1:$MASTER_PORT" \
    69  		"query-status test" \
    70  		"\"result\": true" 2
    71  
    72  	# check incremental data
    73  	run_sql_tidb_with_retry "select count(1) from ${db}.${tb} where c1>1000 and c1<10000;" "count(1): 2"
    74  }
    75  
    76  cleanup_data downstream_more_column
    77  # also cleanup dm processes in case of last run failed
    78  cleanup_process $*
    79  run $*
    80  cleanup_process $*
    81  
    82  echo "[$(date)] <<<<<< test case $TEST_NAME success! >>>>>>"