github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/tests/_utils/run_dm_ctl (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  echo "$cmd" | $binary -test.coverprofile="$TEST_DIR/cov.$TEST_NAME.dmctl.$ts.$pid.out" DEVEL -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`