github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/tests/_utils/run_dm_ctl_cmd_mode (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: command 6 # parameter 4...: check output content and count 7 8 workdir=$1 9 master_addr=$2 10 cmd=$3 11 12 shift 3 13 14 PWD=$(pwd) 15 binary=$PWD/bin/dmctl.test 16 ts=$(date +"%s") 17 dmctl_log=$workdir/dmctl.$ts.log 18 pid=$$ 19 echo "dmctl test cmd: \"$cmd\"" 20 $binary -test.coverprofile="$TEST_DIR/cov.$TEST_NAME.dmctl.$ts.$pid.out" DEVEL $cmd --master-addr=$master_addr >$dmctl_log 2>&1 21 22 for ((i = 1; i < $#; i += 2)); do 23 j=$((i + 1)) 24 value=${!i} 25 expected=${!j} 26 got=$(sed "s/$value/$value\n/g" $dmctl_log | grep -c "$value") 27 if [ "$got" != "$expected" ]; then 28 echo "command: $cmd $value count: $got != expected: $expected" 29 cat $dmctl_log 30 exit 1 31 fi 32 done 33 34 # gocovmerge doesn't support merge profiles with different modes, however atomic 35 # mode and count mode have the same profile format, so we need to unify cover 36 # mode before running gocovmerge. As coverage file is not generated synchronously, 37 # we will patch covermode before `make coverage`