github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/tests/_utils/run_dm_ctl_with_tls_and_retry (about) 1 #!/bin/bash 2 # tools to run dmctl from command line 3 # parameter 1: work directory 4 # parameter 2: master-addr port 5 # parameter 3: ssl-ca path 6 # parameter 4: ssl-cert path 7 # parameter 5: ssl-key path 8 # parameter 6: command 9 10 workdir=$1 11 master_addr=$2 12 ssl_ca=$3 13 ssl_cert=$4 14 ssl_key=$5 15 cmd=$6 16 17 shift 6 18 19 PWD=$(pwd) 20 binary=$PWD/bin/dmctl.test 21 ts=$(date +"%s") 22 dmctl_log=$workdir/dmctl.$ts.log 23 pid=$$ 24 25 all_matched=true 26 echo "dmctl test cmd: \"$cmd\"" 27 for ((k = 0; k < 10; k++)); do 28 echo "$cmd" | $binary -test.coverprofile="$TEST_DIR/cov.$TEST_NAME.dmctl.$ts.$pid.out" DEVEL -master-addr=$master_addr --ssl-ca $ssl_ca --ssl-cert $ssl_cert --ssl-key $ssl_key >$dmctl_log 2>&1 29 all_matched=true 30 for ((i = 1; i < $#; i += 2)); do 31 j=$((i + 1)) 32 value=${!i} 33 expected=${!j} 34 got=$(sed "s/$value/$value\n/g" $dmctl_log | grep -c "$value") 35 if [ "$got" != "$expected" ]; then 36 echo "command: $cmd $value count: $got != expected: $expected" 37 cat $dmctl_log 38 all_matched=false 39 break 40 fi 41 done 42 if [ $# -eq 0 ]; then 43 cat $dmctl_log 44 fi 45 if $all_matched; then 46 exit 0 47 fi 48 49 sleep 2 50 done 51 52 exit 1 53 54 # gocovmerge doesn't support merge profiles with different modes, however atomic 55 # mode and count mode have the same profile format, so we need to unify cover 56 # mode before running gocovmerge. As coverage file is not generated synchronously, 57 # we will patch covermode before `make coverage`