Skip to content

Commit 3600c2b

Browse files
authored
Merge pull request #1006 from saraburns1/performance_metrics_changes
fix: Performance testing script updates
2 parents 067880e + cfae721 commit 3600c2b

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

tutoraspects/templates/aspects/apps/superset/pythonpath/performance_metrics.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ def performance_metrics(
8585
if org:
8686
extra_filters += [{"col": "org", "op": "IN", "val": org}]
8787

88+
chart_count = 0
8889
with patch("clickhouse_connect.common.build_client_name") as mock_build_client_name:
8990
mock_build_client_name.return_value = RUN_ID
9091
target_dashboards = (
@@ -117,6 +118,7 @@ def performance_metrics(
117118
result = measure_chart(slice, query_context, fail_on_error)
118119
if not result:
119120
continue
121+
chart_count += 1
120122
for query in result["queries"]:
121123
# Remove the data from the query to avoid memory issues on large
122124
# datasets.
@@ -129,9 +131,7 @@ def performance_metrics(
129131
logger.warning("No target charts found!")
130132
return report
131133

132-
logger.info("Waiting for clickhouse log...")
133-
time.sleep(20)
134-
get_query_log_from_clickhouse(report, query_contexts, print_sql, fail_on_error)
134+
get_query_log_from_clickhouse(report, query_contexts, print_sql, fail_on_error, chart_count)
135135
return report
136136

137137

@@ -187,7 +187,7 @@ def measure_chart(slice, query_context_dict, fail_on_error):
187187
"""
188188
Measure the performance of a chart and return the results.
189189
"""
190-
logger.info(f"Fetching slice data: {slice}")
190+
logger.info(f"Fetching slice data: {slice} {slice.uuid}")
191191

192192
g.user = security_manager.find_user(username="{{SUPERSET_ADMIN_USERNAME}}")
193193
query_context = ChartDataQueryContextSchema().load(query_context_dict)
@@ -200,6 +200,7 @@ def measure_chart(slice, query_context_dict, fail_on_error):
200200
end_time = datetime.now()
201201
result["time_elapsed"] = (end_time - start_time).total_seconds()
202202
result["slice"] = slice
203+
result["uuid"] = slice.uuid
203204
for query in result["queries"]:
204205
if "error" in query and query["error"]:
205206
raise query["error"]
@@ -212,7 +213,7 @@ def measure_chart(slice, query_context_dict, fail_on_error):
212213
return result
213214

214215

215-
def get_query_log_from_clickhouse(report, query_contexts, print_sql, fail_on_error):
216+
def get_query_log_from_clickhouse(report, query_contexts, print_sql, fail_on_error, chart_count):
216217
"""
217218
Get the query log from clickhouse and print the results.
218219
"""
@@ -228,6 +229,18 @@ def get_query_log_from_clickhouse(report, query_contexts, print_sql, fail_on_err
228229

229230
ch_chart_result = measure_chart(slice, query_context, fail_on_error)
230231

232+
# Run CH query until results for all slices are returned
233+
ch_count = 6
234+
while ch_count > 0:
235+
missing_rows = chart_count - ch_chart_result["queries"][0]["rowcount"]
236+
if missing_rows > 0:
237+
logger.info(f"Waiting for {missing_rows} clickhouse logs...")
238+
time.sleep(5)
239+
ch_chart_result = measure_chart(slice, query_context, fail_on_error)
240+
ch_count -= 1
241+
else:
242+
break
243+
231244
clickhouse_queries = {}
232245
for query in ch_chart_result["queries"]:
233246
for row in query["data"]:
@@ -237,7 +250,7 @@ def get_query_log_from_clickhouse(report, query_contexts, print_sql, fail_on_err
237250
for k, chart_result in enumerate(report):
238251
for query in chart_result["queries"]:
239252
parsed_sql = (
240-
str(sqlparse.parse(query["query"])[0]).replace(";", "")
253+
str(sqlparse.parse(query["query"].strip())[0]).replace(";", "")
241254
+ "\n FORMAT Native"
242255
)
243256
chart_result["sql"] = parsed_sql
@@ -255,7 +268,7 @@ def get_query_log_from_clickhouse(report, query_contexts, print_sql, fail_on_err
255268
report_str += report_format.format(
256269
i=(k + 1),
257270
dashboard=chart_result["dashboard"],
258-
slice=chart_result["slice"],
271+
slice=f'{chart_result["slice"]} {chart_result["uuid"]}',
259272
superset_time=chart_result["time_elapsed"],
260273
)
261274
for query in chart_result["queries"]:

0 commit comments

Comments
 (0)