diff --git a/tests/perf-test/build.sh b/tests/perf-test/build.sh index e3c8f7f0f0..04717cbd13 100755 --- a/tests/perf-test/build.sh +++ b/tests/perf-test/build.sh @@ -18,3 +18,5 @@ cd $1/debug make -j 4 cd $1/debug make install + +systemctl start taosd diff --git a/tests/perf-test/buildTD.py b/tests/perf-test/buildTD.py index 33e481300d..9b47886089 100644 --- a/tests/perf-test/buildTD.py +++ b/tests/perf-test/buildTD.py @@ -19,8 +19,7 @@ class BuildTDengine: except FileNotFoundError as e: print(f"File not found: {e}") - def get_commit_id(self): - cmd = f"cd {self.path} && git rev-parse --short @ " + def get_cmd_output(self, cmd): try: # Run the Bash command and capture the output result = subprocess.run(cmd, stdout=subprocess.PIPE, shell=True, text=True) @@ -30,7 +29,4 @@ class BuildTDengine: return output.strip() except subprocess.CalledProcessError as e: - print(f"Error running Bash command: {e}") - -bd = BuildTDengine() -print(bd.get_commit_id()) \ No newline at end of file + print(f"Error running Bash command: {e}") \ No newline at end of file diff --git a/tests/perf-test/write_perf_data.py b/tests/perf-test/write_perf_data.py index b4f1d5bd35..4a2021c356 100644 --- a/tests/perf-test/write_perf_data.py +++ b/tests/perf-test/write_perf_data.py @@ -1,15 +1,26 @@ import os +import socket import mysqldb import insert_json import query_json - +import buildTD if __name__ == "__main__": + # Build TDengine + hostname = socket.gethostname() + new_build = buildTD.BuildTDengine(host = hostname) + + new_build.build() + cmd = f"cd {new_build.path} && git rev-parse --short @ " + commit_id = new_build.get_cmd_output(cmd) + branch = new_build.branch + num_of_tables = 10000 records_per_table = 10000 interlace_rows = 0 stt_trigger = 1 + # get scenario id db = mysqldb.MySQLDatabase() db.connect() sql = f"select id from scenarios where num_of_tables = {num_of_tables} and records_per_table = {records_per_table} and interlace_rows = {interlace_rows} and stt_trigger = {stt_trigger}" @@ -17,13 +28,48 @@ if __name__ == "__main__": if row is None: id = db.get_id(f"insert into scenarios(num_of_tables, records_per_table, interlace_rows, stt_trigger) values({num_of_tables},{records_per_table}, {interlace_rows}, {stt_trigger})") else: - id = row[0][0] - - print(id) + id = row[0][0] - db.disconnect() + print(f"scenario id is {id}") + # record insert performance data insert = insert_json.InsertJson(num_of_tables, records_per_table, interlace_rows, stt_trigger) os.system(f"taosBenchmark -f {insert.create_insert_file()}") + cmd = "grep Spent /tmp/insert_res.txt | tail -1 | awk {'print $5'}" + time = new_build.get_cmd_output(cmd) + + cmd = "grep Spent /tmp/insert_res.txt | tail -1 | awk {'print $16'}" + speed = new_build.get_cmd_output(cmd) + + sql = f"insert into insert_perf(sid, time_cost, records_per_sec, branch, commit_id, date) values({id}, {time}, {speed}, '{branch}', '{commit_id}', now())" + print(sql) + db.execute(sql) + + # record query performance data + sql = "select * from queries" + res = db.query(sql) + for row in res: + json = query_json.QueryJson(row[1], query_times=1) + print(f"query: {row[1]}") + os.system(f"taosBenchmark -f {json.create_query_file()} > /tmp/{row[0]}.txt") + cmd = "grep delay /tmp/%d.txt | awk {'print $11'} | cut -d 's' -f 1" % row[0] + print(f"cmd is {cmd}") + avg = new_build.get_cmd_output(cmd) + print(f"avg is {avg}") + if (avg == ""): + break + + sql = f"insert into query_perf(sid, qid, time_cost, branch, commit_id, date) values({id}, {row[0]}, {avg}, '{branch}', '{commit_id}', now())" + print(sql) + db.execute(sql) + + # close connection + db.disconnect() + + + + + + \ No newline at end of file