github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/tests/integration_tests/common_1/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=$OUT_DIR/$TEST_NAME 8 CDC_BINARY=cdc.test 9 SINK_TYPE=$1 10 11 function run() { 12 # storage and pulsar is not supported yet. 13 if [ "$SINK_TYPE" == "storage" ]; then 14 return 15 fi 16 17 # TODO(dongmen): enable pulsar in the future. 18 if [ "$SINK_TYPE" == "pulsar" ]; then 19 exit 0 20 fi 21 22 rm -rf $WORK_DIR && mkdir -p $WORK_DIR 23 24 start_tidb_cluster --workdir $WORK_DIR 25 26 cd $WORK_DIR 27 28 tidb_build_branch=$(mysql -uroot -h${UP_TIDB_HOST} -P${UP_TIDB_PORT} -e \ 29 "select tidb_version()\G" | grep "Git Branch" | awk -F: '{print $(NF)}' | tr -d " ") 30 # TODO: refine the release detection after 5.0 tag of TiDB is ready 31 if [[ $tidb_build_branch =~ ^(master)$ ]]; then 32 # https://github.com/pingcap/tidb/pull/21533 disables multi_schema change 33 # feature by default, turn it on first 34 run_sql "set global tidb_enable_change_multi_schema = on" ${UP_TIDB_HOST} ${UP_TIDB_PORT} 35 # This must be set before cdc server starts 36 run_sql "set global tidb_enable_change_multi_schema = on" ${DOWN_TIDB_HOST} ${DOWN_TIDB_PORT} 37 # TiDB global variables cache 2 seconds at most 38 sleep 2 39 fi 40 41 # record tso before we create tables to skip the system table DDLs 42 start_ts=$(run_cdc_cli_tso_query ${UP_PD_HOST_1} ${UP_PD_PORT_1}) 43 44 run_cdc_server --workdir $WORK_DIR --binary $CDC_BINARY 45 46 # this test contains `recover table`, which requires super privilege, so we 47 # can't use the normal user 48 TOPIC_NAME="ticdc-common-1-test-$RANDOM" 49 case $SINK_TYPE in 50 kafka) SINK_URI="kafka://127.0.0.1:9092/$TOPIC_NAME?protocol=open-protocol&partition-num=4&kafka-version=${KAFKA_VERSION}&max-message-bytes=10485760" ;; 51 storage) SINK_URI="file://$WORK_DIR/storage_test/$TOPIC_NAME?protocol=canal-json&enable-tidb-extension=true" ;; 52 pulsar) 53 run_pulsar_cluster $WORK_DIR normal 54 SINK_URI="pulsar+ssl://127.0.0.1:6651/$TOPIC_NAME?protocol=canal-json&enable-tidb-extension=true" 55 ;; 56 *) SINK_URI="mysql://root@127.0.0.1:3306/" ;; 57 esac 58 59 if [ "$SINK_TYPE" == "pulsar" ]; then 60 cat <<EOF >>$WORK_DIR/pulsar_test.toml 61 [sink.pulsar-config] 62 tls-trust-certs-file-path="${WORK_DIR}/ca.cert.pem" 63 auth-tls-private-key-path="${WORK_DIR}/broker_client.key-pk8.pem" 64 auth-tls-certificate-path="${WORK_DIR}/broker_client.cert.pem" 65 EOF 66 cdc cli changefeed create --start-ts=$start_ts --sink-uri="$SINK_URI" --config=$WORK_DIR/pulsar_test.toml 67 else 68 cdc cli changefeed create --start-ts=$start_ts --sink-uri="$SINK_URI" 69 fi 70 71 case $SINK_TYPE in 72 kafka) run_kafka_consumer $WORK_DIR "kafka://127.0.0.1:9092/$TOPIC_NAME?protocol=open-protocol&partition-num=4&version=${KAFKA_VERSION}&max-message-bytes=10485760" ;; 73 storage) run_storage_consumer $WORK_DIR $SINK_URI "" "" ;; 74 pulsar) run_pulsar_consumer --upstream-uri $SINK_URI --ca "${WORK_DIR}/ca.cert.pem" --auth-tls-private-key-path "${WORK_DIR}/broker_client.key-pk8.pem" --auth-tls-certificate-path="${WORK_DIR}/broker_client.cert.pem" ;; 75 esac 76 77 run_sql_file $CUR/data/test.sql ${UP_TIDB_HOST} ${UP_TIDB_PORT} 78 # TODO: refine the release detection after 5.0 tag of TiDB is ready 79 if [[ ! $tidb_build_branch =~ ^(master)$ ]]; then 80 echo "skip some SQLs in tidb v4.0.x" 81 else 82 run_sql_file $CUR/data/test_v5.sql ${UP_TIDB_HOST} ${UP_TIDB_PORT} 83 fi 84 run_sql_file $CUR/data/test_finish.sql ${UP_TIDB_HOST} ${UP_TIDB_PORT} 85 86 # sync_diff can't check non-exist table, so we check expected tables are created in downstream first 87 check_table_exists common_1.v1 ${DOWN_TIDB_HOST} ${DOWN_TIDB_PORT} 88 check_table_exists common_1.recover_and_insert ${DOWN_TIDB_HOST} ${DOWN_TIDB_PORT} 89 check_table_exists common_1.finish_mark ${DOWN_TIDB_HOST} ${DOWN_TIDB_PORT} 90 check_sync_diff $WORK_DIR $CUR/conf/diff_config.toml 91 92 cleanup_process $CDC_BINARY 93 } 94 95 trap stop_tidb_cluster EXIT 96 run $* 97 check_logs $WORK_DIR 98 echo "[$(date)] <<<<<< run test case $TEST_NAME success! >>>>>>"