Skip to content

Commit

Permalink
fix: take reduced error into account in process flakes (#527)
Browse files Browse the repository at this point in the history
  • Loading branch information
joseph-sentry committed Jul 5, 2024
1 parent 7691f5a commit 39489be
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 8 deletions.
3 changes: 3 additions & 0 deletions tasks/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
from tasks.notify import notify_task
from tasks.plan_manager_task import daily_plan_manager_task_name
from tasks.preprocess_upload import preprocess_upload_task
from tasks.process_flakes import process_flakes_task
from tasks.profiling_find_uncollected import find_untotalized_profilings_task
from tasks.profiling_normalizer import profiling_normalizer_task
from tasks.save_commit_measurements import save_commit_measurements_task
Expand All @@ -45,6 +46,8 @@
from tasks.sync_repo_languages_gql import sync_repo_languages_gql_task
from tasks.sync_repos import sync_repos_task
from tasks.sync_teams import sync_teams_task
from tasks.test_results_finisher import test_results_finisher_task
from tasks.test_results_processor import test_results_processor_task
from tasks.timeseries_backfill import (
timeseries_backfill_commits_task,
timeseries_backfill_dataset_task,
Expand Down
21 changes: 15 additions & 6 deletions tasks/process_flakes.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
log = logging.getLogger(__name__)


FlakeDict = dict[str, Flake]
FlakeDict = dict[tuple[str, int], Flake]

FLAKE_EXPIRY_COUNT = 30

Expand Down Expand Up @@ -51,19 +51,28 @@ def run_impl(
)
for test_instance in test_instances:
if test_instance.outcome == TestInstance.Outcome.PASS.value:
flake = flake_dict.get(test_instance.test_id)
flake = flake_dict.get(
(test_instance.test_id, test_instance.reduced_error_id)
)
if flake is not None:
update_passed_flakes(flake)
elif test_instance.outcome in (
TestInstance.Outcome.FAILURE.value,
TestInstance.Outcome.ERROR.value,
):
flake = flake_dict.get(test_instance.test_id)
flake = flake_dict.get(
(test_instance.test_id, test_instance.reduced_error_id)
)
upserted_flake = upsert_failed_flake(
test_instance, repo_id, flake
)
if flake is None:
flake_dict[upserted_flake.test_id] = upserted_flake
flake_dict[
(
upserted_flake.test_id,
upserted_flake.reduced_error_id,
)
] = upserted_flake

log.info(
"Successfully processed flakes",
Expand Down Expand Up @@ -105,7 +114,7 @@ def generate_flake_dict(repo_id: int) -> FlakeDict:
flakes = Flake.objects.filter(repository_id=repo_id, end_date__isnull=True).all()
flake_dict = dict()
for flake in flakes:
flake_dict[flake.test_id] = flake
flake_dict[(flake.test_id, flake.reduced_error_id)] = flake
return flake_dict


Expand All @@ -124,7 +133,7 @@ def upsert_failed_flake(
flake = Flake(
repository_id=repo_id,
test=test_instance.test,
reduced_error=None,
reduced_error=test_instance.reduced_error_id,
count=1,
fail_count=1,
start_date=dt.datetime.now(dt.UTC),
Expand Down
4 changes: 2 additions & 2 deletions tasks/tests/unit/test_process_flakes.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,13 @@ def test_generate_flake_dict(transactional_db):

assert len(flake_dict) == 0

f = FlakeFactory(repository=repo, test__id="id")
f = FlakeFactory(repository=repo, test__id="id", reduced_error__id=10)
f.save()

flake_dict = generate_flake_dict(repo.repoid)

assert len(flake_dict) == 1
assert "id" in flake_dict
assert ("id", 10) in flake_dict


def test_get_test_instances_when_test_is_flaky(transactional_db):
Expand Down

0 comments on commit 39489be

Please sign in to comment.