未验证 提交 3b1a4c56 编写于 作者: H Hui Li 提交者: GitHub

Merge pull request #9566 from taosdata/test/td-12517

[TD-12517]<test>(other): add perf scripts for td-12517
from loguru import logger
import time
import os
import json
class HttpPerfCompard:
def __init__(self):
self.hostname = "vm85"
self.taosc_port = 6030
self.http_port = 6041
self.database = "test"
self.query_times = 1
self.concurrent = 1
self.column_count = 10
self.tag_count = 10
self.perfMonitorBin = '/home/ubuntu/perfMonitor'
self.taosBenchmarkBin = '/usr/local/bin/taosBenchmark'
self.sleep_time = 20
self.current_time = time.strftime("%Y-%m-%d-%H:%M:%S", time.localtime(time.time()))
self.current_dir = os.path.dirname(os.path.realpath(__file__))
self.log_file = os.path.join(self.current_dir, f'./performance.log')
logger.add(self.log_file)
logger.info(f'init env success, log will be export to {self.log_file}')
self.sql_list = ['select last_row(*) from test.stb;',
'select * from test.stb limit 100000;',
'select count(*) from test.stb interval (1d);',
'select avg(c3), max(c4), min(c5) from test.stb interval (1d);',
'select count(*) from test.stb where t1 = "shanghai" interval (1h);',
'select avg(c3), max(c4), min(c5) from test.stb where t1 = "shanghai" interval (1d);',
'select avg(c3), max(c4), min(c5) from test.stb where ts > "2021-01-01 00:00:00" and ts < "2021-01-31 00:00:00" interval (1d);'
'select last(*) from test.stb;'
]
# self.sql_list = ['select * from test.stb limit 100000;']
def initLog(self):
self.exec_local_cmd(f'echo "" > {self.log_file}')
def exec_local_cmd(self,shell_cmd):
result = os.popen(shell_cmd).read().strip()
return result
def genQueryJsonFile(self, query_sql):
json_file = os.path.join(self.current_dir, f'./query.json')
jdict = {
"filetype": "query",
"cfgdir": "/etc/taos",
"host": self.hostname,
"port": self.taosc_port,
"user": "root",
"password": "taosdata",
"confirm_parameter_prompt": "no",
"databases": self.database,
"query_times": self.query_times,
"query_mode": "restful",
"specified_table_query": {
"concurrent": self.concurrent,
"sqls": [
{
"sql": query_sql,
"result": "./query_res0.txt"
}
]
}
}
with open(json_file, "w", encoding="utf-8") as f_w:
f_w.write(json.dumps(jdict))
def genInsertJsonFile(self, thread_count, table_count, row_count, batch_size):
json_file = os.path.join(self.current_dir, f'./insert.json')
jdict = {
"filetype": "insert",
"cfgdir": "/etc/taos",
"host": self.hostname,
"rest_host": self.hostname,
"port": self.taosc_port,
"rest_port": self.http_port,
"user": "root",
"password": "taosdata",
"thread_count": thread_count,
"thread_count_create_tbl": 1,
"result_file": self.log_file,
"databases": [{
"dbinfo": {
"name": self.database,
"drop": "yes"
},
"super_tables": [{
"name": "stb",
"childtable_count": table_count,
"childtable_prefix": "stb_",
"batch_create_tbl_num": 1,
"insert_mode": "rand",
"insert_iface": "rest",
"insert_rows": row_count,
"insert_interval": 0,
"batch_rows": batch_size,
"max_sql_len": 1048576,
"timestamp_step": 3000,
"start_timestamp": "2021-01-01 00:00:00.000",
"tags_file": "",
"partical_col_num": 0,
"columns": [{"type": "INT", "count": self.column_count}],
"tags": [{"type": "BINARY", "len": 16, "count": self.tag_count}]
}]
}]
}
with open(json_file, "w", encoding="utf-8") as f_w:
f_w.write(json.dumps(jdict))
def runTest(self):
self.initLog()
self.genInsertJsonFile(32, 100, 100000, 1)
logger.info('result of insert_perf with 32 threads and 1 batch_size:')
self.exec_local_cmd(f'{self.perfMonitorBin} -f insert.json')
time.sleep(self.sleep_time)
self.genInsertJsonFile(32, 500, 1000000, 1000)
logger.info('result of insert_perf with 32 threads and 1000 batch_size:')
self.exec_local_cmd(f'{self.perfMonitorBin} -f insert.json')
time.sleep(self.sleep_time)
for query_sql in self.sql_list:
self.genQueryJsonFile(query_sql)
self.exec_local_cmd(f'{self.taosBenchmarkBin} -f query.json > tmp.log')
res = self.exec_local_cmd('grep -Eo \'\<Spent.+s\>\' tmp.log |grep -v \'total queries\' |awk \'{sum+=$2}END{print "Average=",sum/NR,"s"}\'')
logger.info(query_sql)
logger.info(res)
time.sleep(self.sleep_time)
if __name__ == '__main__':
runPerf = HttpPerfCompard()
runPerf.runTest()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册