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

Commit 8562c38

Browse files
fix: make test analytics GQL queries use gte (#919)
1 parent f8ac094 commit 8562c38

File tree

4 files changed

+31
-30
lines changed

4 files changed

+31
-30
lines changed

graphql_api/tests/test_flake_aggregates.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ def test_fetch_test_result_total_runtime(self) -> None:
7979

8080
assert "errors" not in result
8181
assert result["owner"]["repository"]["testAnalytics"]["flakeAggregates"] == {
82-
"flakeRate": 0.1,
83-
"flakeCount": 30,
84-
"flakeRatePercentChange": -33.33333,
85-
"flakeCountPercentChange": 100.0,
82+
"flakeRate": 0.140625,
83+
"flakeCount": 31,
84+
"flakeRatePercentChange": 31.25,
85+
"flakeCountPercentChange": 106.66667,
8686
}

graphql_api/tests/test_test_analytics.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -819,14 +819,14 @@ def test_test_results_aggregates(self) -> None:
819819
"""testResultsAggregates { totalDuration, slowestTestsDuration, totalFails, totalSkips, totalSlowTests, totalDurationPercentChange, slowestTestsDurationPercentChange, totalFailsPercentChange, totalSkipsPercentChange, totalSlowTestsPercentChange }""",
820820
)
821821
assert res["testResultsAggregates"] == {
822-
"totalDuration": 570.0,
823-
"totalDurationPercentChange": -63.1068,
824-
"slowestTestsDuration": 29.0,
825-
"slowestTestsDurationPercentChange": -50.84746,
826-
"totalFails": 10,
827-
"totalFailsPercentChange": 100.0,
828-
"totalSkips": 5,
829-
"totalSkipsPercentChange": -50.0,
822+
"totalDuration": 630.0,
823+
"totalDurationPercentChange": -57.57576,
824+
"slowestTestsDuration": 60.0,
825+
"slowestTestsDurationPercentChange": 1.69492,
826+
"totalFails": 11,
827+
"totalFailsPercentChange": 175.0,
828+
"totalSkips": 6,
829+
"totalSkipsPercentChange": -33.33333,
830830
"totalSlowTests": 1,
831831
"totalSlowTestsPercentChange": 0.0,
832832
}
@@ -976,10 +976,10 @@ def test_flake_aggregates(self) -> None:
976976
)
977977

978978
assert res["flakeAggregates"] == {
979-
"flakeCount": 2,
980-
"flakeRate": 0.125,
981-
"flakeCountPercentChange": -33.33333,
982-
"flakeRatePercentChange": -50.0,
979+
"flakeCount": 3,
980+
"flakeRate": 0.2,
981+
"flakeCountPercentChange": 0.0,
982+
"flakeRatePercentChange": -15.55556,
983983
}
984984

985985
def test_flake_aggregates_no_history(self) -> None:
@@ -1081,9 +1081,9 @@ def test_flake_aggregates_7_days(self) -> None:
10811081

10821082
assert res["flakeAggregates"] == {
10831083
"flakeCount": 1,
1084-
"flakeRate": 0.125,
1084+
"flakeRate": 0.1111111111111111,
10851085
"flakeCountPercentChange": -50.0,
1086-
"flakeRatePercentChange": -43.75,
1086+
"flakeRatePercentChange": -55.55556,
10871087
}
10881088

10891089
def test_test_suites(self) -> None:

graphql_api/tests/test_test_results_headers.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def test_fetch_test_result_total_runtime(self) -> None:
5353
result["owner"]["repository"]["testAnalytics"]["testResultsAggregates"][
5454
"totalDuration"
5555
]
56-
== 435.0
56+
== 465.0
5757
)
5858

5959
def test_fetch_test_result_slowest_tests_runtime(self) -> None:
@@ -80,7 +80,7 @@ def test_fetch_test_result_slowest_tests_runtime(self) -> None:
8080
result["owner"]["repository"]["testAnalytics"]["testResultsAggregates"][
8181
"slowestTestsDuration"
8282
]
83-
== 29.0
83+
== 30.0
8484
)
8585

8686
def test_fetch_test_result_failed_tests(self) -> None:
@@ -107,7 +107,7 @@ def test_fetch_test_result_failed_tests(self) -> None:
107107
result["owner"]["repository"]["testAnalytics"]["testResultsAggregates"][
108108
"totalFails"
109109
]
110-
== 29
110+
== 30
111111
)
112112

113113
def test_fetch_test_result_skipped_tests(self) -> None:
@@ -134,7 +134,7 @@ def test_fetch_test_result_skipped_tests(self) -> None:
134134
result["owner"]["repository"]["testAnalytics"]["testResultsAggregates"][
135135
"totalSkips"
136136
]
137-
== 29
137+
== 30
138138
)
139139

140140
def test_fetch_test_result_slow_tests(self) -> None:

utils/test_results.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ def validate(
124124
"flake_rate",
125125
"commits_where_fail",
126126
"last_duration",
127+
"updated_at",
127128
}:
128129
return ValidationError(f"Invalid ordering field: {ordering}")
129130

@@ -175,7 +176,7 @@ def generate_base_query(
175176
{ "join reports_test rt on rt.id = rd.test_id" if testsuites or term else ""}
176177
where
177178
rd.repoid = %(repoid)s
178-
and rd.date > current_date - interval %(interval)s
179+
and rd.date >= current_date - interval %(interval)s
179180
{ "and rd.branch = %(branch)s" if branch else ""}
180181
{ "and rd.test_id in %(test_ids)s" if test_ids else ""}
181182
{ "and rt.testsuite in %(testsuites)s" if testsuites else ""}
@@ -504,11 +505,11 @@ def get_test_results_aggregate_numbers(
504505
repo: Repository, since: dt.datetime, until: dt.datetime | None = None
505506
) -> dict[str, float | int]:
506507
totals = DailyTestRollup.objects.filter(
507-
repoid=repo.repoid, date__gt=since, branch=repo.branch
508+
repoid=repo.repoid, date__gte=since, branch=repo.branch
508509
)
509510

510511
if until:
511-
totals = totals.filter(date__lte=until)
512+
totals = totals.filter(date__lt=until)
512513

513514
num_tests = totals.distinct("test_id").count()
514515

@@ -577,14 +578,14 @@ def get_flake_aggregate_numbers(
577578
if until is None:
578579
flakes = Flake.objects.filter(
579580
Q(repository_id=repo.repoid)
580-
& (Q(end_date__isnull=True) | Q(end_date__date__gt=since.date()))
581+
& (Q(end_date__isnull=True) | Q(end_date__date__gte=since.date()))
581582
)
582583
else:
583584
flakes = Flake.objects.filter(
584585
Q(repository_id=repo.repoid)
585586
& (
586-
Q(start_date__date__lte=until.date())
587-
& (Q(end_date__date__gt=since.date()) | Q(end_date__isnull=True))
587+
Q(start_date__date__lt=until.date())
588+
& (Q(end_date__date__gte=since.date()) | Q(end_date__isnull=True))
588589
)
589590
)
590591

@@ -594,12 +595,12 @@ def get_flake_aggregate_numbers(
594595

595596
test_rollups = DailyTestRollup.objects.filter(
596597
repoid=repo.repoid,
597-
date__gt=since.date(),
598+
date__gte=since.date(),
598599
branch=repo.branch,
599600
test_id__in=test_ids,
600601
)
601602
if until:
602-
test_rollups = test_rollups.filter(date__lte=until.date())
603+
test_rollups = test_rollups.filter(date__lt=until.date())
603604

604605
if len(test_rollups) == 0:
605606
return {"flake_count": 0, "flake_rate": 0}

0 commit comments

Comments
 (0)