perftest-query.sh 6.1 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
WORK_DIR=/root/pxiao
24 25
name=`echo $branch | cut -d '/' -f2`
PERFORMANCE_TEST_REPORT=$WORK_DIR/TDinternal/community/tests/performance-report-$name-$type-$today.log
P
Ping Xiao 已提交
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

# 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 {
58 59
	echoInfo "Build TDinternal"
	cd $WORK_DIR/TDinternal
P
Ping Xiao 已提交
60 61

	git remote update > /dev/null
P
Ping Xiao 已提交
62
	git reset --hard HEAD
63
	git fetch
64 65
	git checkout $branch
	REMOTE_COMMIT=`git rev-parse --short remotes/origin/$branch`
P
Ping Xiao 已提交
66 67 68 69 70 71
	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"
72 73
	fi

74 75 76 77 78 79
    cd community
    git reset --hard HEAD
    cd ..	
	echo "git submodule update --init --recursive"
	git submodule update --init --recursive
	
80
	git pull > /dev/null 2>&1
81 82 83 84 85 86 87
	
	cd community
	git remote update > /dev/null
	git reset --hard HEAD
	git fetch
	git checkout $branch
	REMOTE_COMMIT=`git rev-parse --short remotes/origin/$branch`
88
	LOCAL_COMMIT=`git rev-parse --short @`
89
	cd ../debug
90 91 92 93
	rm -rf *
	if [ $type = "jemalloc" ];then
		echo "cmake .. -DJEMALLOC_ENABLED=true > /dev/null"
		cmake .. -DJEMALLOC_ENABLED=true > /dev/null
P
Ping Xiao 已提交
94
	else
95
		cmake .. > /dev/null
P
Ping Xiao 已提交
96
	fi
97 98 99 100
	#cp $WORK_DIR/taosdemoPerformance.py $WORK_DIR/TDinternal/community/tests/pytest/tools/
    #cp $WORK_DIR/insertFromCSVPerformance.py $WORK_DIR/TDinternal/community/tests/pytest/insert/
	#cp $WORK_DIR/queryPerformance.py $WORK_DIR/TDinternal/community/tests/pytest/query/
	rm -rf $WORK_DIR/TDinternal/community/tests/pytest/query/operator.py	
101 102 103 104
	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 已提交
105 106 107
}

function runQueryPerfTest {
P
Ping Xiao 已提交
108
	[ -f $PERFORMANCE_TEST_REPORT ] && rm $PERFORMANCE_TEST_REPORT
109
	nohup $WORK_DIR/TDinternal/debug/build/bin/taosd -c /etc/perf/ > /dev/null 2>&1 &
P
Ping Xiao 已提交
110
	echoInfo "Wait TDengine to start"
111
	sleep 60
P
Ping Xiao 已提交
112
	echoInfo "Run Performance Test"	
113
	cd $WORK_DIR/TDinternal/community/tests/pytest	
114

115
	python3 query/queryPerformance.py -c $LOCAL_COMMIT -b $branch -T $type -d perf2 | tee -a $PERFORMANCE_TEST_REPORT
116

117
	python3 insert/insertFromCSVPerformance.py -c $LOCAL_COMMIT -b $branch -T $type | tee -a $PERFORMANCE_TEST_REPORT
118
	
119
	echo "=========== taosdemo performance: 4 int columns, 10000 tables, 100000 recoreds per table ===========" | tee -a $PERFORMANCE_TEST_REPORT
120
	python3 tools/taosdemoPerformance.py -c $LOCAL_COMMIT -b $branch -T $type | tee -a $PERFORMANCE_TEST_REPORT
121

122 123
	echo "=========== taosdemo performance: 400 int columns, 400 double columns, 200 binary(128) columns, 10000 tables, 10 recoreds per table ===========" | tee -a $PERFORMANCE_TEST_REPORT
	python3 tools/taosdemoPerformance.py -c $LOCAL_COMMIT -b $branch -T $type -i 400 -D 400 -B 200 -t 10000 -r 10 | tee -a $PERFORMANCE_TEST_REPORT
124

125 126
	echo "=========== taosdemo performance: 1900 int columns, 1900 double columns, 200 binary(128) columns, 10000 tables, 10 recoreds per table ===========" | tee -a $PERFORMANCE_TEST_REPORT
	python3 tools/taosdemoPerformance.py -c $LOCAL_COMMIT -b $branch -T $type -i 1900 -D 1900 -B 200 -t 10000 -r 10 | tee -a $PERFORMANCE_TEST_REPORT
P
Ping Xiao 已提交
127 128 129 130 131
}


function sendReport {
	echo "send report"
132
	receiver="develop@taosdata.com"
P
Ping Xiao 已提交
133 134 135 136 137 138
	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`
139
	echo -e "From: <support@taosdata.com>\nto: ${receiver}\nsubject: Query Performace Report ${branch} ${type} commit ID: ${LOCAL_COMMIT}\n\n${today}:\n${BODY_CONTENT}" | \
P
Ping Xiao 已提交
140
	(cat - && uuencode $PERFORMANCE_TEST_REPORT performance-test-report-$today.log) | \
P
Ping Xiao 已提交
141
	/usr/sbin/ssmtp "${receiver}" && echo "Report Sent!"
P
Ping Xiao 已提交
142 143 144 145 146 147
}


stopTaosd
buildTDengine
runQueryPerfTest
P
Ping Xiao 已提交
148
stopTaosd
P
Ping Xiao 已提交
149 150 151

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