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! >>>>>>"