Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions tests/sentry/event_manager/test_event_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
from sentry.models.releasecommit import ReleaseCommit
from sentry.models.releaseprojectenvironment import ReleaseProjectEnvironment
from sentry.services import eventstore
from sentry.services.eventstore.models import Event
from sentry.services.eventstore.models import Event, GroupEvent
from sentry.signals import (
first_event_with_minified_stack_trace_received,
first_insight_span_received,
Expand Down Expand Up @@ -2786,6 +2786,7 @@ def test_perf_issue_creation(self) -> None:
assert group.level == 40
assert group.issue_category == GroupCategory.PERFORMANCE
assert group.issue_type == PerformanceNPlusOneGroupType
assert isinstance(event, GroupEvent)
assert event.occurrence
assert event.occurrence.evidence_display == [
IssueEvidence(
Expand Down Expand Up @@ -2945,7 +2946,7 @@ def test_perf_issue_creation_over_ignored_threshold(self) -> None:
}
)
def test_perf_issue_slow_db_issue_is_created(self) -> None:
def attempt_to_generate_slow_db_issue() -> Event:
def attempt_to_generate_slow_db_issue() -> GroupEvent:
return self.create_performance_issue(
event_data=make_event(**get_event("slow-db/slow-db-spans")),
issue_type=PerformanceSlowDBQueryGroupType,
Expand Down
1 change: 1 addition & 0 deletions tests/sentry/integrations/github/test_issues.py
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,7 @@ def test_create_issue_raises_integration_error(self) -> None:
def test_performance_issues_content(self) -> None:
"""Test that a GitHub issue created from a performance issue has the expected title and description"""
event = self.create_performance_issue()
assert event.group is not None
description = self.install.get_group_description(event.group, event)
assert "db - SELECT `books_author`.`id`, `books_author" in description
title = self.install.get_group_title(event.group, event)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ def test_escalating_performance_issue_block(self, occurrence: mock.MagicMock) ->
and block kit is enabled.
"""
event = self.create_performance_issue()
assert event.group is not None
with self.tasks():
self.create_notification(event.group).send()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ def test_note_performance_issue_block(self) -> None:
with block kit enabled.
"""
event = self.create_performance_issue()
assert event.group is not None
notification = self.create_notification(event.group)

with self.tasks():
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ def test_resolved_performance_issue_block_with_culprit_blocks(
and block kit is enabled.
"""
event = self.create_performance_issue()
assert event.group is not None
with self.tasks():
self.create_notification(event.group).send()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ def test_resolved_in_pull_request_performance_issue_block_with_culprit_blocks(
and block kit is enabled.
"""
event = self.create_performance_issue()
assert event.group is not None
notification = self.create_notification(event.group)
with self.tasks():
notification.send()
Expand Down
1 change: 1 addition & 0 deletions tests/sentry/integrations/slack/test_message_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -845,6 +845,7 @@ def test_build_error_issue_fallback_text(self) -> None:

def test_build_performance_issue(self) -> None:
event = self.create_performance_issue()
assert event.group is not None
with self.feature("organizations:performance-issues"):
blocks = SlackIssuesMessageBuilder(event.group, event).build()
assert isinstance(blocks, dict)
Expand Down
1 change: 1 addition & 0 deletions tests/sentry/issues/endpoints/test_group_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,7 @@ def test_orderby(self) -> None:
def test_perf_issue(self) -> None:
event_1 = self.create_performance_issue()
event_2 = self.create_performance_issue()
assert event_1.group is not None

self.login_as(user=self.user)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ def test_simple_perf(self) -> None:
fingerprint="group1",
contexts={"trace": {"trace_id": "b" * 32, "span_id": "c" * 16, "op": ""}},
)
assert event.group is not None

self.login_as(user=self.user)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ def test_simple_perf(self) -> None:
fingerprint="group1",
contexts={"trace": {"trace_id": "b" * 32, "span_id": "c" * 16, "op": ""}},
)
assert event.group is not None

self.login_as(user=self.user)

Expand Down
1 change: 1 addition & 0 deletions tests/sentry/issues/endpoints/test_group_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ def test_simple_performance(self) -> None:
fingerprint="group5",
contexts={"trace": {"trace_id": "b" * 32, "span_id": "c" * 16, "op": ""}},
)
assert event.group is not None

self.login_as(user=self.user)

Expand Down
4 changes: 2 additions & 2 deletions tests/sentry/issues/escalating/test_escalating.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from sentry.models.groupinbox import GroupInbox
from sentry.sentry_metrics.client.snuba import build_mri
from sentry.sentry_metrics.use_case_id_registry import UseCaseID
from sentry.services.eventstore.models import Event
from sentry.services.eventstore.models import Event, GroupEvent
from sentry.testutils.cases import BaseMetricsTestCase, PerformanceIssueTestCase, TestCase
from sentry.testutils.helpers.datetime import freeze_time
from sentry.types.group import GroupSubStatus
Expand Down Expand Up @@ -80,7 +80,7 @@ class HistoricGroupCounts(
):
"""Test that querying Snuba for the hourly counts for groups works as expected."""

def _create_hourly_bucket(self, count: int, event: Event) -> GroupsCountResponse:
def _create_hourly_bucket(self, count: int, event: Event | GroupEvent) -> GroupsCountResponse:
"""It simplifies writing the expected data structures"""
assert event.group_id is not None
return {
Expand Down
3 changes: 3 additions & 0 deletions tests/sentry/mail/test_actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from sentry.models.projectownership import ProjectOwnership
from sentry.models.rule import Rule
from sentry.notifications.types import ActionTargetType, FallthroughChoiceType
from sentry.services.eventstore.models import GroupEvent
from sentry.tasks.post_process import post_process_group
from sentry.testutils.cases import PerformanceIssueTestCase, RuleTestCase, TestCase
from sentry.testutils.helpers.datetime import before_now
Expand Down Expand Up @@ -252,6 +253,8 @@ def test_full_integration_fallthrough_not_provided(self) -> None:

def test_full_integration_performance(self) -> None:
event = self.create_performance_issue()
assert isinstance(event, GroupEvent)
assert event.group is not None
action_data = {
"id": "sentry.mail.actions.NotifyEmailAction",
"targetType": "Member",
Expand Down
2 changes: 2 additions & 0 deletions tests/sentry/models/test_groupsnooze.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ def test_user_rate_reached_perf_issues(self) -> None:
event_data["user"]["id"] = str(i)
event = self.create_performance_issue(event_data=event_data)
perf_group = event.group
assert perf_group is not None
snooze = GroupSnooze.objects.create(group=perf_group, user_count=10, user_window=60)
assert not snooze.is_valid(test_rates=True)

Expand Down Expand Up @@ -149,6 +150,7 @@ def test_rate_reached_perf_issue(self) -> None:
"""Test when a performance issue is ignored until it happens 10 times in a day"""
for i in range(0, 10):
event = self.create_performance_issue()
assert event.group is not None
snooze = GroupSnooze.objects.create(group=event.group, count=10, window=24 * 60)
assert not snooze.is_valid(test_rates=True)

Expand Down
3 changes: 3 additions & 0 deletions tests/sentry/notifications/notifications/test_digests.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from sentry.digests.notifications import event_to_record
from sentry.mail.analytics import EmailNotificationSent
from sentry.models.projectownership import ProjectOwnership
from sentry.services.eventstore.models import Event, GroupEvent
from sentry.tasks.digests import deliver_digest
from sentry.testutils.cases import PerformanceIssueTestCase, SlackActivityNotificationTest, TestCase
from sentry.testutils.helpers.analytics import (
Expand All @@ -33,6 +34,7 @@

class DigestNotificationTest(TestCase, OccurrenceTestMixin, PerformanceIssueTestCase):
def add_event(self, fingerprint: str, backend: Backend, event_type: str = "error") -> None:
event: Event | GroupEvent | None
if event_type == "performance":
event = self.create_performance_issue()
elif event_type == "generic":
Expand All @@ -57,6 +59,7 @@ def add_event(self, fingerprint: str, backend: Backend, event_type: str = "error
project_id=self.project.id,
)

assert event is not None
backend.add(
self.key, event_to_record(event, [self.rule]), increment_delay=0, maximum_delay=0
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,9 @@ def test_simple_performance(self) -> None:
"replay": {"replay_id": "z" * 32}, # a replay id that doesn't exist
},
)
assert issue1.group is not None
assert issue2.group is not None
assert issue3.group is not None

query = {
"query": f"issue.id:[{issue1.group.id}, {issue2.group.id}, {issue3.group.id}]",
Expand Down
2 changes: 2 additions & 0 deletions tests/sentry/rules/history/test_preview.py
Original file line number Diff line number Diff line change
Expand Up @@ -465,6 +465,7 @@ def test_transactions(self) -> None:
transaction = self.create_performance_issue(tags=[["foo", "bar"]])

perf_issue = transaction.group
assert perf_issue is not None
perf_issue.update(first_seen=prev_hour)
Activity.objects.create(
project=self.project,
Expand Down Expand Up @@ -533,6 +534,7 @@ def test_errors_transactions_together(self) -> None:
transaction = self.create_performance_issue(tags=[["foo", "bar"]])

perf_issue = transaction.group
assert perf_issue is not None
perf_issue.update(first_seen=timezone.now() - timedelta(weeks=3))
Activity.objects.create(
project=self.project,
Expand Down
1 change: 1 addition & 0 deletions tests/sentry/rules/processing/test_delayed_processing.py
Original file line number Diff line number Diff line change
Expand Up @@ -816,6 +816,7 @@ def test_apply_delayed_issue_platform_event(self) -> None:
)
group5 = event5.group
assert group5
assert isinstance(event5, GroupEvent)
self.push_to_hash(
self.project.id,
rule5.id,
Expand Down
3 changes: 3 additions & 0 deletions tests/sentry/rules/processing/test_processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from sentry.rules.conditions import EventCondition
from sentry.rules.filters.base import EventFilter
from sentry.rules.processing.processor import PROJECT_ID_BUFFER_LIST_KEY, RuleProcessor
from sentry.services.eventstore.models import GroupEvent
from sentry.testutils.cases import PerformanceIssueTestCase, TestCase
from sentry.testutils.helpers import install_slack
from sentry.testutils.helpers.redis import mock_redis_buffer
Expand Down Expand Up @@ -233,6 +234,7 @@ def test_delayed_rule_match_any_slow_conditions(self) -> None:
contexts=contexts,
)

assert isinstance(perf_event, GroupEvent)
start_timestamp = datetime(2020, 9, 1, 3, 8, 24, 880386, tzinfo=UTC)
rp = RuleProcessor(
perf_event,
Expand All @@ -252,6 +254,7 @@ def test_delayed_rule_match_any_slow_conditions(self) -> None:
rulegroup_to_events = buffer.backend.get_hash(
model=Project, field={"project_id": self.project.id}
)
assert perf_event.group is not None
assert rulegroup_to_events == {
f"{self.rule.id}:{perf_event.group.id}": json.dumps(
{
Expand Down
1 change: 1 addition & 0 deletions tests/sentry/services/eventstore/snuba/test_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,7 @@ def test_adjacent_event_ids_same_timestamp(self) -> None:

def test_transaction_get_next_prev_event_id(self) -> None:
group = self.transaction_event_2.group
assert group is not None
_filter = Filter(
project_ids=[self.project2.id],
group_ids=[group.id],
Expand Down
2 changes: 2 additions & 0 deletions tests/sentry/tasks/test_daily_summary.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,8 @@ def populate_event_data(
self.perf_event2 = self.create_performance_issue(
fingerprint=f"{PerformanceNPlusOneGroupType.type_id}-group6"
)
assert self.perf_event.group is not None
assert self.perf_event2.group is not None

@with_feature("organizations:daily-summary")
@mock.patch("sentry.tasks.summaries.daily_summary.prepare_summary_data")
Expand Down
2 changes: 2 additions & 0 deletions tests/sentry/tasks/test_weekly_reports.py
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,8 @@ def test_message_builder_simple(
perf_event_2 = self.create_performance_issue(
fingerprint=f"{PerformanceNPlusOneGroupType.type_id}-group2"
)
assert perf_event_1.group is not None
assert perf_event_2.group is not None
perf_event_1.group.update(substatus=GroupSubStatus.ONGOING)
perf_event_2.group.update(substatus=GroupSubStatus.ONGOING)

Expand Down
4 changes: 4 additions & 0 deletions tests/snuba/api/endpoints/test_group_event_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,27 +98,31 @@ def test_simple_event_id(self) -> None:

def test_perf_issue_latest(self) -> None:
event = self.create_performance_issue()
assert event.group is not None
url = f"/api/0/issues/{event.group.id}/events/latest/"
response = self.client.get(url, format="json")
assert response.status_code == 200
assert response.data["eventID"] == event.event_id

def test_perf_issue_oldest(self) -> None:
event = self.create_performance_issue()
assert event.group is not None
url = f"/api/0/issues/{event.group.id}/events/oldest/"
response = self.client.get(url, format="json")
assert response.status_code == 200
assert response.data["eventID"] == event.event_id

def test_perf_issue_event_id(self) -> None:
event = self.create_performance_issue()
assert event.group is not None
url = f"/api/0/issues/{event.group.id}/events/{event.event_id}/"
response = self.client.get(url, format="json")
assert response.status_code == 200
assert response.data["eventID"] == event.event_id

def test_invalid_query(self) -> None:
event = self.create_performance_issue()
assert event.group is not None
url = f"/api/0/issues/{event.group.id}/events/{event.event_id}/"
response = self.client.get(url, format="json", data={"query": "release.version:foobar"})
assert response.status_code == 400
8 changes: 8 additions & 0 deletions tests/snuba/api/endpoints/test_organization_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -591,6 +591,7 @@ def test_auto_insert_project_name_when_event_id_present_with_aggregate(self) ->

def test_performance_short_group_id(self) -> None:
event = self.create_performance_issue()
assert event.group is not None
query = {
"field": ["count()"],
"statsPeriod": "1h",
Expand All @@ -604,6 +605,8 @@ def test_performance_short_group_id(self) -> None:
def test_multiple_performance_short_group_ids_filter(self) -> None:
event1 = self.create_performance_issue()
event2 = self.create_performance_issue()
assert event1.group is not None
assert event2.group is not None

query = {
"field": ["count()"],
Expand Down Expand Up @@ -6327,6 +6330,7 @@ class OrganizationEventsIssuePlatformDatasetEndpointTest(
def test_performance_issue_id_filter(self) -> None:
event = self.create_performance_issue()

assert event.group is not None
query = {
"field": ["count()"],
"statsPeriod": "2h",
Expand Down Expand Up @@ -6394,6 +6398,7 @@ def test_generic_issue_ids_filter(self) -> None:

def test_performance_short_group_id(self) -> None:
event = self.create_performance_issue()
assert event.group is not None
query = {
"field": ["count()"],
"statsPeriod": "1h",
Expand All @@ -6407,6 +6412,8 @@ def test_performance_short_group_id(self) -> None:
def test_multiple_performance_short_group_ids_filter(self) -> None:
event1 = self.create_performance_issue()
event2 = self.create_performance_issue()
assert event1.group is not None
assert event2.group is not None

query = {
"field": ["count()"],
Expand Down Expand Up @@ -6474,6 +6481,7 @@ def test_all_events_fields(self) -> None:
},
user_data=user_data,
)
assert event.group is not None

query = {
"field": [
Expand Down
2 changes: 2 additions & 0 deletions tests/snuba/api/endpoints/test_project_event_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ def test_transaction_event(self) -> None:
assert response.data["id"] == str(self.cur_transaction_event.event_id)
assert response.data["nextEventID"] == str(self.next_transaction_event.event_id)
assert response.data["previousEventID"] == str(self.prev_transaction_event.event_id)
assert self.cur_transaction_event.group is not None
assert response.data["groupID"] == str(self.cur_transaction_event.group.id)

def test_no_previous_event(self) -> None:
Expand All @@ -324,6 +325,7 @@ def test_no_previous_event(self) -> None:
assert response.data["id"] == str(self.prev_transaction_event.event_id)
assert response.data["previousEventID"] is None
assert response.data["nextEventID"] == self.cur_transaction_event.event_id
assert self.prev_transaction_event.group is not None
assert response.data["groupID"] == str(self.prev_transaction_event.group.id)

def test_ignores_different_group(self) -> None:
Expand Down
Loading