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
9 changes: 3 additions & 6 deletions src/sentry/analytics/events/eventuser_endpoint_request.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
from sentry import analytics


@analytics.eventclass("eventuser_endpoint.request")
class EventUserEndpointRequest(analytics.Event):
type = "eventuser_endpoint.request"

attributes = (
analytics.Attribute("endpoint", required=True),
analytics.Attribute("project_id", required=False),
)
endpoint: str
project_id: int | None = None


analytics.register(EventUserEndpointRequest)
13 changes: 5 additions & 8 deletions src/sentry/analytics/events/first_profile_sent.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
from sentry import analytics


@analytics.eventclass("first_profile.sent")
class FirstProfileSentEvent(analytics.Event):
type = "first_profile.sent"

attributes = (
analytics.Attribute("organization_id"),
analytics.Attribute("project_id"),
analytics.Attribute("platform", required=False),
analytics.Attribute("user_id", required=False),
)
organization_id: int
project_id: int
platform: str | None = None
user_id: int | None = None


analytics.register(FirstProfileSentEvent)
8 changes: 5 additions & 3 deletions src/sentry/api/endpoints/group_tagkey_values.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from rest_framework.response import Response

from sentry import analytics, tagstore
from sentry.analytics.events.eventuser_endpoint_request import EventUserEndpointRequest
from sentry.api.api_owners import ApiOwner
from sentry.api.api_publish_status import ApiPublishStatus
from sentry.api.base import region_silo_endpoint
Expand Down Expand Up @@ -68,9 +69,10 @@ def get(self, request: Request, group, key) -> Response:
List a Tag's Values
"""
analytics.record(
"eventuser_endpoint.request",
project_id=group.project_id,
endpoint="sentry.api.endpoints.group_tagkey_values.get",
EventUserEndpointRequest(
project_id=group.project_id,
endpoint="sentry.api.endpoints.group_tagkey_values.get",
)
)
lookup_key = tagstore.backend.prefix_reserved_key(key)

Expand Down
8 changes: 5 additions & 3 deletions src/sentry/api/endpoints/project_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from rest_framework.response import Response

from sentry import analytics
from sentry.analytics.events.eventuser_endpoint_request import EventUserEndpointRequest
from sentry.api.api_publish_status import ApiPublishStatus
from sentry.api.base import region_silo_endpoint
from sentry.api.bases.project import ProjectAndStaffPermission, ProjectEndpoint
Expand Down Expand Up @@ -41,9 +42,10 @@ def get(self, request: Request, project) -> Response:
For example, ``query=email:foo@example.com``
"""
analytics.record(
"eventuser_endpoint.request",
project_id=project.id,
endpoint="sentry.api.endpoints.project_users.get",
EventUserEndpointRequest(
project_id=project.id,
endpoint="sentry.api.endpoints.project_users.get",
)
)
field, identifier = None, None
if request.GET.get("query"):
Expand Down
12 changes: 7 additions & 5 deletions src/sentry/receivers/onboarding.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from django.db.models import F

from sentry import analytics
from sentry.analytics.events.first_profile_sent import FirstProfileSentEvent
from sentry.integrations.base import IntegrationDomain, get_integration_types
from sentry.integrations.services.integration import RpcIntegration, integration_service
from sentry.models.organization import Organization
Expand Down Expand Up @@ -182,11 +183,12 @@ def record_first_transaction(project, event, **kwargs):
@first_profile_received.connect(weak=False, dispatch_uid="onboarding.record_first_profile")
def record_first_profile(project, **kwargs):
analytics.record(
"first_profile.sent",
user_id=get_owner_id(project),
organization_id=project.organization_id,
project_id=project.id,
platform=project.platform,
FirstProfileSentEvent(
user_id=get_owner_id(project),
organization_id=project.organization_id,
project_id=project.id,
platform=project.platform,
)
)


Expand Down
8 changes: 5 additions & 3 deletions src/sentry/tasks/unmerge.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from django.db.models.base import Model

from sentry import analytics, eventstore, features, similarity, tsdb
from sentry.analytics.events.eventuser_endpoint_request import EventUserEndpointRequest
from sentry.constants import DEFAULT_LOGGER_NAME, LOG_LEVELS_MAP
from sentry.culprit import generate_culprit
from sentry.eventstore.models import BaseEvent
Expand Down Expand Up @@ -380,9 +381,10 @@ def repair_group_release_data(caches, project, events):

def get_event_user_from_interface(value, project):
analytics.record(
"eventuser_endpoint.request",
project_id=project.id,
endpoint="sentry.tasks.unmerge.get_event_user_from_interface",
EventUserEndpointRequest(
project_id=project.id,
endpoint="sentry.tasks.unmerge.get_event_user_from_interface",
)
)
return EventUser(
user_ident=value.get("id"),
Expand Down
22 changes: 14 additions & 8 deletions tests/sentry/api/endpoints/test_group_tagkey_values.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
from django.test import override_settings
from django.utils import timezone

from sentry.analytics.events.eventuser_endpoint_request import EventUserEndpointRequest
from sentry.testutils.cases import APITestCase, PerformanceIssueTestCase, SnubaTestCase
from sentry.testutils.helpers.analytics import assert_last_analytics_event
from sentry.testutils.helpers.datetime import before_now, freeze_time


Expand Down Expand Up @@ -33,10 +35,12 @@ def test_simple(self, mock_record):

assert response.data[0]["value"] == "bar"

mock_record.assert_called_with(
"eventuser_endpoint.request",
project_id=project.id,
endpoint="sentry.api.endpoints.group_tagkey_values.get",
assert_last_analytics_event(
mock_record,
EventUserEndpointRequest(
project_id=project.id,
endpoint="sentry.api.endpoints.group_tagkey_values.get",
),
)

def test_simple_perf(self):
Expand Down Expand Up @@ -208,8 +212,10 @@ def test_ratelimit(self, mock_record) -> None:
response = self.client.get(url)
assert response.status_code == 429

mock_record.assert_called_with(
"eventuser_endpoint.request",
project_id=project.id,
endpoint="sentry.api.endpoints.group_tagkey_values.get",
assert_last_analytics_event(
mock_record,
EventUserEndpointRequest(
project_id=project.id,
endpoint="sentry.api.endpoints.group_tagkey_values.get",
),
)
13 changes: 9 additions & 4 deletions tests/sentry/api/endpoints/test_project_users.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@

from django.utils import timezone

from sentry.analytics.events.eventuser_endpoint_request import EventUserEndpointRequest
from sentry.testutils.cases import APITestCase, SnubaTestCase
from sentry.testutils.helpers.analytics import assert_any_analytics_event
from sentry.utils.eventuser import EventUser


Expand Down Expand Up @@ -55,10 +57,13 @@ def _assert_simple_response(self, response, mock_record):
assert sorted(map(lambda x: x["id"], response.data)) == sorted(
[str(self.euser1.id), str(self.euser2.id)]
)
mock_record.assert_any_call(
"eventuser_endpoint.request",
project_id=self.project.id,
endpoint="sentry.api.endpoints.project_users.get",

assert_any_analytics_event(
mock_record,
EventUserEndpointRequest(
project_id=self.project.id,
endpoint="sentry.api.endpoints.project_users.get",
),
)

@mock.patch("sentry.analytics.record")
Expand Down
12 changes: 8 additions & 4 deletions tests/snuba/tasks/test_unmerge.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from django.utils import timezone

from sentry import eventstream, tsdb
from sentry.analytics.events.eventuser_endpoint_request import EventUserEndpointRequest
from sentry.eventstore.models import Event
from sentry.models.environment import Environment
from sentry.models.group import Group
Expand All @@ -31,6 +32,7 @@
unmerge,
)
from sentry.testutils.cases import SnubaTestCase, TestCase
from sentry.testutils.helpers.analytics import assert_last_analytics_event
from sentry.testutils.helpers.datetime import before_now
from sentry.testutils.helpers.features import with_feature
from sentry.tsdb.base import TSDBModel
Expand Down Expand Up @@ -452,10 +454,12 @@ def collect_by_user_tag(aggregate, event):
aggregate.add(
get_event_user_from_interface(event.data["user"], event.group.project).tag_value
)
mock_record.assert_called_with(
"eventuser_endpoint.request",
project_id=event.group.project.id,
endpoint="sentry.tasks.unmerge.get_event_user_from_interface",
assert_last_analytics_event(
mock_record,
EventUserEndpointRequest(
project_id=event.group.project.id,
endpoint="sentry.tasks.unmerge.get_event_user_from_interface",
),
)
return aggregate

Expand Down
Loading