Skip to content
This repository was archived by the owner on May 5, 2025. It is now read-only.

Commit b1440be

Browse files
fix: replace NaN values in deduped TA table (#1211)
1 parent 07ffe2f commit b1440be

File tree

3 files changed

+45
-33
lines changed

3 files changed

+45
-33
lines changed

graphql_api/tests/test_test_analytics.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
get_results,
2222
)
2323
from services.redis_configuration import get_redis_connection
24+
from utils.test_results import dedup_table
2425

2526
from .helper import GraphQLTestHelper
2627

@@ -218,7 +219,8 @@ def test_get_test_results(
218219
):
219220
results = get_results(repository.repoid, repository.branch, 30)
220221
assert results is not None
221-
assert results.equals(test_results_table)
222+
223+
assert results.equals(dedup_table(test_results_table))
222224

223225
def test_get_test_results_no_storage(
224226
self, transactional_db, repository, mock_storage
@@ -231,7 +233,7 @@ def test_get_test_results_no_redis(
231233
m = mocker.patch("services.task.TaskService.cache_test_results_redis")
232234
results = get_results(repository.repoid, repository.branch, 30)
233235
assert results is not None
234-
assert results.equals(test_results_table)
236+
assert results.equals(dedup_table(test_results_table))
235237

236238
m.assert_called_once_with(repository.repoid, repository.branch)
237239

graphql_api/types/test_analytics/test_analytics.py

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -215,37 +215,6 @@ def generate_test_results(
215215
},
216216
)
217217

218-
failure_rate_expr = (
219-
pl.col("failure_rate")
220-
* (pl.col("total_fail_count") + pl.col("total_pass_count"))
221-
).sum() / (pl.col("total_fail_count") + pl.col("total_pass_count")).sum()
222-
223-
flake_rate_expr = (
224-
pl.col("flake_rate") * (pl.col("total_fail_count") + pl.col("total_pass_count"))
225-
).sum() / (pl.col("total_fail_count") + pl.col("total_pass_count")).sum()
226-
227-
avg_duration_expr = (
228-
pl.col("avg_duration")
229-
* (pl.col("total_pass_count") + pl.col("total_fail_count"))
230-
).sum() / (pl.col("total_pass_count") + pl.col("total_fail_count")).sum()
231-
232-
# dedup
233-
table = table.group_by("name").agg(
234-
pl.col("test_id").first().alias("test_id"),
235-
pl.col("testsuite").alias("testsuite"),
236-
pl.col("flags").explode().unique().alias("flags"),
237-
failure_rate_expr.alias("failure_rate"),
238-
flake_rate_expr.alias("flake_rate"),
239-
pl.col("updated_at").max().alias("updated_at"),
240-
avg_duration_expr.alias("avg_duration"),
241-
pl.col("total_fail_count").sum().alias("total_fail_count"),
242-
pl.col("total_flaky_fail_count").sum().alias("total_flaky_fail_count"),
243-
pl.col("total_pass_count").sum().alias("total_pass_count"),
244-
pl.col("total_skip_count").sum().alias("total_skip_count"),
245-
pl.col("commits_where_fail").sum().alias("commits_where_fail"),
246-
pl.col("last_duration").max().alias("last_duration"),
247-
)
248-
249218
if term:
250219
table = table.filter(pl.col("name").str.contains(term))
251220

utils/test_results.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,45 @@ def storage_key(
3232
return key
3333

3434

35+
def dedup_table(table: pl.DataFrame) -> pl.DataFrame:
36+
failure_rate_expr = (
37+
pl.col("failure_rate")
38+
* (pl.col("total_fail_count") + pl.col("total_pass_count"))
39+
).sum() / (pl.col("total_fail_count") + pl.col("total_pass_count")).sum()
40+
41+
flake_rate_expr = (
42+
pl.col("flake_rate") * (pl.col("total_fail_count") + pl.col("total_pass_count"))
43+
).sum() / (pl.col("total_fail_count") + pl.col("total_pass_count")).sum()
44+
45+
avg_duration_expr = (
46+
pl.col("avg_duration")
47+
* (pl.col("total_pass_count") + pl.col("total_fail_count"))
48+
).sum() / (pl.col("total_pass_count") + pl.col("total_fail_count")).sum()
49+
50+
# dedup
51+
table = (
52+
table.group_by("name")
53+
.agg(
54+
pl.col("test_id").first().alias("test_id"),
55+
pl.col("testsuite").alias("testsuite"),
56+
pl.col("flags").explode().unique().alias("flags"),
57+
failure_rate_expr.fill_nan(0).alias("failure_rate"),
58+
flake_rate_expr.fill_nan(0).alias("flake_rate"),
59+
pl.col("updated_at").max().alias("updated_at"),
60+
avg_duration_expr.fill_nan(0).alias("avg_duration"),
61+
pl.col("total_fail_count").sum().alias("total_fail_count"),
62+
pl.col("total_flaky_fail_count").sum().alias("total_flaky_fail_count"),
63+
pl.col("total_pass_count").sum().alias("total_pass_count"),
64+
pl.col("total_skip_count").sum().alias("total_skip_count"),
65+
pl.col("commits_where_fail").sum().alias("commits_where_fail"),
66+
pl.col("last_duration").max().alias("last_duration"),
67+
)
68+
.sort("name")
69+
)
70+
71+
return table
72+
73+
3574
def get_results(
3675
repoid: int,
3776
branch: str,
@@ -73,4 +112,6 @@ def get_results(
73112
if table.height == 0:
74113
return None
75114

115+
table = dedup_table(table)
116+
76117
return table

0 commit comments

Comments
 (0)