Browse Source

feat(EventUser): Add analytics to confirm usage of code (#59126)

## Objective:
Add analytics to confirm if code is dead before deleting it.
NisanthanNanthakumar 1 year ago
parent
commit
0196357cf1

+ 1 - 1
src/sentry/analytics/events/eventuser_endpoint_request.py

@@ -6,7 +6,7 @@ class EventUserEndpointRequest(analytics.Event):
 
     attributes = (
         analytics.Attribute("endpoint", required=True),
-        analytics.Attribute("project_id", required=True),
+        analytics.Attribute("project_id", required=False),
     )
 
 

+ 5 - 0
src/sentry/api/serializers/snuba.py

@@ -4,6 +4,7 @@ from operator import or_
 
 from django.db.models import Q
 
+from sentry import analytics
 from sentry.constants import ObjectStatus
 from sentry.models.eventuser import EventUser
 from sentry.models.project import Project
@@ -194,6 +195,10 @@ class SnubaLookup:
 
     @classmethod
     def get(cls, name):
+        analytics.record(
+            "eventuser_endpoint.request",
+            endpoint="sentry.api.serializers.snuba.SnubaLookup",
+        )
         return cls.__registry[name]
 
 

+ 8 - 0
src/sentry/tagstore/snuba/backend.py

@@ -11,6 +11,7 @@ from django.core.cache import cache
 from sentry_relay.consts import SPAN_STATUS_CODE_TO_NAME
 from snuba_sdk import Column, Condition, Direction, Entity, Function, Op, OrderBy, Query, Request
 
+from sentry import analytics
 from sentry.api.utils import default_start_end_dates
 from sentry.issues.grouptype import GroupCategory
 from sentry.models.group import Group
@@ -842,6 +843,13 @@ class SnubaTagStorage(TagStorage):
                         group_id=issue, key="sentry:user", value=name, **fix_tag_value_data(data)
                     )
                 )
+        for project_id in {eu.project_id for eu in event_users}:
+            analytics.record(
+                "eventuser_endpoint.request",
+                project_id=project_id,
+                endpoint="sentry.tagstore.snuba.backend.SnubaTagStorage.get_group_tag_values_for_users",
+            )
+
         return values
 
     def __get_groups_user_counts(

+ 9 - 1
tests/snuba/tagstore/test_tagstore_backend.py

@@ -1,5 +1,6 @@
 from datetime import timedelta
 from functools import cached_property
+from unittest import mock
 
 import pytest
 from django.utils import timezone
@@ -693,7 +694,8 @@ class TagStorageTest(TestCase, SnubaTestCase, SearchIssueTestMixin, PerformanceI
             tenant_ids={"referrer": "r", "organization_id": 1234},
         ) == {self.proj1group1.id: 3, self.proj1group2.id: 1}
 
-    def test_get_group_tag_values_for_users(self):
+    @mock.patch("sentry.analytics.record")
+    def test_get_group_tag_values_for_users(self, mock_record):
         result = self.ts.get_group_tag_values_for_users(
             [EventUser(project_id=self.proj1.id, ident="user1")],
             tenant_ids={"referrer": "r", "organization_id": 1234},
@@ -718,6 +720,12 @@ class TagStorageTest(TestCase, SnubaTestCase, SearchIssueTestMixin, PerformanceI
         assert result[0].value == "user2"
         assert result[0].last_seen == self.now - timedelta(seconds=2)
 
+        mock_record.assert_called_with(
+            "eventuser_endpoint.request",
+            project_id=self.proj1.id,
+            endpoint="sentry.tagstore.snuba.backend.SnubaTagStorage.get_group_tag_values_for_users",
+        )
+
     def test_get_release_tags(self):
         tags = list(
             self.ts.get_release_tags(self.proj1.organization_id, [self.proj1.id], None, ["100"])