perftest-query.sh 4.7 KB
Newer Older
P
Ping Xiao 已提交
1 2
#!/bin/bash

3

4 5 6 7 8 9 10 11
branch=
if [ x$1 != x ];then
        branch=$1
        echo "Testing branch: $branch"
else
        echo "Please enter branch name as a parameter"
        exit 1
fi
12 13

type=
14
if [ x$2 != x ];then
15
    	type=jemalloc
16 17
        echo "Building TDengine using jemalloc"
else
18
		type=glibc
19 20 21
        echo "Building TDengine using glibc"
fi

P
Ping Xiao 已提交
22
today=`date +"%Y%m%d"`
23 24
WORK_DIR=/root/pxiao
PERFORMANCE_TEST_REPORT=$WORK_DIR/TDengine/tests/performance-report-$branch-$type-$today.log
P
Ping Xiao 已提交
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

# Coloured Echoes                                                                                                       #
function red_echo      { echo -e "\033[31m$@\033[0m";   }                                                               #
function green_echo    { echo -e "\033[32m$@\033[0m";   }                                                               #
function yellow_echo   { echo -e "\033[33m$@\033[0m";   }                                                               #
function white_echo    { echo -e "\033[1;37m$@\033[0m"; }                                                               #
# Coloured Printfs                                                                                                      #
function red_printf    { printf "\033[31m$@\033[0m";    }                                                               #
function green_printf  { printf "\033[32m$@\033[0m";    }                                                               #
function yellow_printf { printf "\033[33m$@\033[0m";    }                                                               #
function white_printf  { printf "\033[1;37m$@\033[0m";  }                                                               #
# Debugging Outputs                                                                                                     #
function white_brackets { local args="$@"; white_printf "["; printf "${args}"; white_printf "]"; }                      #
function echoInfo   { local args="$@"; white_brackets $(green_printf "INFO") && echo " ${args}"; }                      #
function echoWarn   { local args="$@";  echo "$(white_brackets "$(yellow_printf "WARN")" && echo " ${args}";)" 1>&2; }  #
function echoError  { local args="$@"; echo "$(white_brackets "$(red_printf    "ERROR")" && echo " ${args}";)" 1>&2; }  #


function stopTaosd {
	echo "Stop taosd"
    systemctl stop taosd
	snap stop tdengine
  	PID=`ps -ef|grep -w taosd | grep -v grep | awk '{print $2}'`
	while [ -n "$PID" ]
	do
    pkill -TERM -x taosd
    sleep 1
  	PID=`ps -ef|grep -w taosd | grep -v grep | awk '{print $2}'`
	done
}

function buildTDengine {
	echoInfo "Build TDengine"
	cd $WORK_DIR/TDengine

	git remote update > /dev/null
P
Ping Xiao 已提交
61
	git reset --hard HEAD
62 63
	git checkout $branch
	REMOTE_COMMIT=`git rev-parse --short remotes/origin/$branch`
P
Ping Xiao 已提交
64 65 66 67 68 69
	LOCAL_COMMIT=`git rev-parse --short @`

	echo " LOCAL: $LOCAL_COMMIT"
	echo "REMOTE: $REMOTE_COMMIT"
	if [ "$LOCAL_COMMIT" == "$REMOTE_COMMIT" ]; then
		echo "repo up-to-date"
70 71 72 73 74 75 76 77 78 79 80 81 82
	fi

	git pull > /dev/null 2>&1
	if [ $type = "jemalloc" ];then
		echo "git submodule update --init --recursive"
		git submodule update --init --recursive
	fi
	LOCAL_COMMIT=`git rev-parse --short @`
	cd debug
	rm -rf *
	if [ $type = "jemalloc" ];then
		echo "cmake .. -DJEMALLOC_ENABLED=true > /dev/null"
		cmake .. -DJEMALLOC_ENABLED=true > /dev/null
P
Ping Xiao 已提交
83
	else
84
		cmake .. > /dev/null
P
Ping Xiao 已提交
85
	fi
86 87 88 89
	make > /dev/null 2>&1	
	make install > /dev/null 2>&1
	echo "Build TDengine on remote server"	
	ssh perftest "./buildTDengine.sh $branch > /dev/null"
P
Ping Xiao 已提交
90 91 92
}

function runQueryPerfTest {
P
Ping Xiao 已提交
93
	[ -f $PERFORMANCE_TEST_REPORT ] && rm $PERFORMANCE_TEST_REPORT
94
	nohup $WORK_DIR/TDengine/debug/build/bin/taosd -c /etc/perf/ > /dev/null 2>&1 &
P
Ping Xiao 已提交
95
	echoInfo "Wait TDengine to start"
96
	sleep 60
P
Ping Xiao 已提交
97
	echoInfo "Run Performance Test"	
98
	cd $WORK_DIR/TDengine/tests/pytest	
99

100
	python3 query/queryPerformance.py -c $LOCAL_COMMIT -b $branch -T $type | tee -a $PERFORMANCE_TEST_REPORT
101

102
	python3 insert/insertFromCSVPerformance.py -c $LOCAL_COMMIT -b $branch -T $type | tee -a $PERFORMANCE_TEST_REPORT
103
	
104
	python3 tools/taosdemoPerformance.py -c $LOCAL_COMMIT -b $branch -T $type | tee -a $PERFORMANCE_TEST_REPORT
P
Ping Xiao 已提交
105 106 107 108 109
}


function sendReport {
	echo "send report"
110
	receiver="develop@taosdata.com"
P
Ping Xiao 已提交
111 112 113 114 115 116
	mimebody="MIME-Version: 1.0\nContent-Type: text/html; charset=utf-8\n"

	cd $TDENGINE_DIR

	sed -i 's/\x1b\[[0-9;]*m//g' $PERFORMANCE_TEST_REPORT
	BODY_CONTENT=`cat $PERFORMANCE_TEST_REPORT`
117
	echo -e "From: <support@taosdata.com>\nto: ${receiver}\nsubject: Query Performace Report ${branch} ${jemalloc} commit ID: ${LOCAL_COMMIT}\n\n${today}:\n${BODY_CONTENT}" | \
P
Ping Xiao 已提交
118
	(cat - && uuencode $PERFORMANCE_TEST_REPORT performance-test-report-$today.log) | \
P
Ping Xiao 已提交
119
	/usr/sbin/ssmtp "${receiver}" && echo "Report Sent!"
P
Ping Xiao 已提交
120 121 122 123 124 125
}


stopTaosd
buildTDengine
runQueryPerfTest
P
Ping Xiao 已提交
126
stopTaosd
P
Ping Xiao 已提交
127 128 129

echoInfo "Send Report"
sendReport
130
echoInfo "End of Test"