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

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
branch=
if [ x$1 != x ];then
        branch=$1
        echo "Testing branch: $branch"
else
        echo "Please enter branch name as a parameter"
        exit 1
fi
jemalloc=
if [ x$2 != x ];then
        jemalloc=1
        echo "Building TDengine using jemalloc"
else
        jemalloc=0
        echo "Building TDengine using glibc"
fi

P
Ping Xiao 已提交
20
today=`date +"%Y%m%d"`
P
Ping Xiao 已提交
21 22
WORK_DIR=/home/ubuntu/pxiao
PERFORMANCE_TEST_REPORT=$WORK_DIR/TDengine/tests/performance-test-report-$today.log
P
Ping Xiao 已提交
23 24 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

# 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 已提交
59
	git reset --hard HEAD
60 61
	git checkout $branch
	REMOTE_COMMIT=`git rev-parse --short remotes/origin/$branch`
P
Ping Xiao 已提交
62 63 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"
	else
		echo "repo need to pull"
70
		git pull > /dev/null 2>&1
P
Ping Xiao 已提交
71 72

		LOCAL_COMMIT=`git rev-parse --short @`
73 74 75 76
		if [ $jemalloc = "1" ];then
			git submodule update --init --recursive
		fi
		
P
Ping Xiao 已提交
77 78
		cd debug
		rm -rf *
79 80 81 82 83 84

		if [ $jemalloc = "1" ];then
			cmake .. -DJEMALLOC_ENABLED=true > /dev/null
		else
			cmake .. > /dev/null
		fi
P
Ping Xiao 已提交
85
		make && make install > /dev/null		
P
Ping Xiao 已提交
86 87 88 89
	fi
}

function runQueryPerfTest {
P
Ping Xiao 已提交
90 91
	[ -f $PERFORMANCE_TEST_REPORT ] && rm $PERFORMANCE_TEST_REPORT
	nohup $WORK_DIR/TDengine/debug/build/bin/taosd -c /etc/taosperf/ > /dev/null 2>&1 &
P
Ping Xiao 已提交
92
	echoInfo "Wait TDengine to start"
93
	sleep 60
P
Ping Xiao 已提交
94
	echoInfo "Run Performance Test"	
P
Ping Xiao 已提交
95 96
	cd $WORK_DIR/TDengine/tests/pytest
	
97 98
	python3 query/queryPerformance.py -c $LOCAL_COMMIT | tee -a $PERFORMANCE_TEST_REPORT

99 100 101 102 103 104 105 106 107 108
	mkdir -p /var/lib/perf/
	mkdir -p /var/log/perf/
	rm -rf /var/lib/perf/*
	rm -rf /var/log/perf/*
	nohup $WORK_DIR/TDengine/debug/build/bin/taosd -c /etc/perf/ > /dev/null 2>&1 &	
	echoInfo "Wait TDengine to start"
	sleep 10
	echoInfo "Run Performance Test"	
	cd $WORK_DIR/TDengine/tests/pytest

109 110
	python3 insert/insertFromCSVPerformance.py -c $LOCAL_COMMIT | tee -a $PERFORMANCE_TEST_REPORT
	
111
	python3 tools/taosdemoPerformance.py -c $LOCAL_COMMIT | tee -a $PERFORMANCE_TEST_REPORT
P
Ping Xiao 已提交
112 113 114 115 116
}


function sendReport {
	echo "send report"
117
	receiver="develop@taosdata.com"
P
Ping Xiao 已提交
118 119 120 121 122 123
	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`
124
	echo -e "From: <support@taosdata.com>\nto: ${receiver}\nsubject: Query Performace Report ${branch} ${today}, commit ID: ${LOCAL_COMMIT}\n\n${today}:\n${BODY_CONTENT}" | \
P
Ping Xiao 已提交
125
	(cat - && uuencode $PERFORMANCE_TEST_REPORT performance-test-report-$today.log) | \
P
Ping Xiao 已提交
126
	/usr/sbin/ssmtp "${receiver}" && echo "Report Sent!"
P
Ping Xiao 已提交
127 128 129 130 131 132
}


stopTaosd
buildTDengine
runQueryPerfTest
P
Ping Xiao 已提交
133
stopTaosd
P
Ping Xiao 已提交
134 135 136 137

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