Browse Source

ref(tests): Use test util for creating performance issues (#42989)

Use `create_performance_issue` where applicable. I've been updating
these as I come across them and figured I'd just do the rest in a PR.
Colleen O'Rourke 2 years ago
parent
commit
e6e9e3630e

+ 3 - 21
tests/sentry/api/endpoints/test_event_grouping_info.py

@@ -1,16 +1,14 @@
 from django.urls import reverse
 
-from sentry.event_manager import EventManager
 from sentry.testutils import APITestCase
-from sentry.testutils.helpers import override_options
+from sentry.testutils.cases import PerformanceIssueTestCase
 from sentry.testutils.silo import region_silo_test
-from sentry.types.issues import GroupType
 from sentry.utils import json
 from sentry.utils.samples import load_data
 
 
 @region_silo_test(stable=True)
-class EventGroupingInfoEndpointTestCase(APITestCase):
+class EventGroupingInfoEndpointTestCase(APITestCase, PerformanceIssueTestCase):
     def setUp(self):
         self.login_as(user=self.user)
 
@@ -61,23 +59,7 @@ class EventGroupingInfoEndpointTestCase(APITestCase):
         assert content == {}
 
     def test_transaction_event_with_problem(self):
-        event_data = load_data(
-            "transaction-n-plus-one",
-            fingerprint=[f"{GroupType.PERFORMANCE_N_PLUS_ONE_DB_QUERIES.value}-group1"],
-        )
-        perf_event_manager = EventManager(event_data)
-        perf_event_manager.normalize()
-        with override_options(
-            {
-                "performance.issues.n_plus_one_db.problem-creation": 1.0,
-            }
-        ), self.feature(
-            [
-                "projects:performance-suspect-spans-ingestion",
-            ]
-        ):
-            event = perf_event_manager.save(self.project.id)
-        event = event.for_group(event.groups[0])
+        event = self.create_performance_issue()
         url = reverse(
             "sentry-api-0-event-grouping-info",
             kwargs={

+ 3 - 12
tests/sentry/mail/test_actions.py

@@ -7,12 +7,10 @@ from sentry.models import OrganizationMember, OrganizationMemberTeam, ProjectOwn
 from sentry.notifications.types import ActionTargetType, FallthroughChoiceType
 from sentry.tasks.post_process import post_process_group
 from sentry.testutils import TestCase
-from sentry.testutils.cases import RuleTestCase
+from sentry.testutils.cases import PerformanceIssueTestCase, RuleTestCase
 from sentry.testutils.helpers import with_feature
 from sentry.testutils.helpers.datetime import before_now, iso_format
 from sentry.testutils.helpers.eventprocessing import write_event_to_cache
-from sentry.types.issues import GroupType
-from sentry.utils.samples import load_data
 
 
 class NotifyEmailFormTest(TestCase):
@@ -118,7 +116,7 @@ class NotifyEmailFormTest(TestCase):
         assert form.is_valid()
 
 
-class NotifyEmailTest(RuleTestCase):
+class NotifyEmailTest(RuleTestCase, PerformanceIssueTestCase):
     rule_cls = NotifyEmailAction
 
     def test_simple(self):
@@ -244,14 +242,7 @@ class NotifyEmailTest(RuleTestCase):
         assert "uh oh" in sent.subject
 
     def test_full_integration_performance(self):
-        event_data = load_data(
-            "transaction",
-            fingerprint=[f"{GroupType.PERFORMANCE_N_PLUS_ONE_DB_QUERIES.value}-group1"],
-            timestamp=before_now(minutes=1),
-        )
-        event = self.store_event(data=event_data, project_id=self.project.id)
-        event = event.for_group(event.groups[0])
-
+        event = self.create_performance_issue()
         action_data = {
             "id": "sentry.mail.actions.NotifyEmailAction",
             "targetType": "Member",

+ 5 - 10
tests/snuba/api/endpoints/test_group_events.py

@@ -4,15 +4,14 @@ from django.utils import timezone
 from freezegun import freeze_time
 
 from sentry.testutils import APITestCase, SnubaTestCase
+from sentry.testutils.cases import PerformanceIssueTestCase
 from sentry.testutils.helpers import parse_link_header
 from sentry.testutils.helpers.datetime import before_now, iso_format
 from sentry.testutils.silo import region_silo_test
-from sentry.types.issues import GroupType
-from sentry.utils.samples import load_data
 
 
 @region_silo_test
-class GroupEventsTest(APITestCase, SnubaTestCase):
+class GroupEventsTest(APITestCase, SnubaTestCase, PerformanceIssueTestCase):
     def setUp(self):
         super().setUp()
         self.min_ago = before_now(minutes=1)
@@ -421,16 +420,12 @@ class GroupEventsTest(APITestCase, SnubaTestCase):
         assert response.data[1]["eventID"] == "b" * 32
 
     def test_perf_issue(self):
-        event_data = load_data(
-            "transaction",
-            fingerprint=[f"{GroupType.PERFORMANCE_N_PLUS_ONE_DB_QUERIES.value}-group1"],
-        )
-        event_1 = self.store_event(data=event_data, project_id=self.project.id)
-        event_2 = self.store_event(data=event_data, project_id=self.project.id)
+        event_1 = self.create_performance_issue()
+        event_2 = self.create_performance_issue()
 
         self.login_as(user=self.user)
 
-        url = f"/api/0/issues/{event_1.groups[0].id}/events/"
+        url = f"/api/0/issues/{event_1.group.id}/events/"
         response = self.do_request(url)
 
         assert response.status_code == 200, response.content

+ 4 - 9
tests/snuba/api/endpoints/test_group_events_latest.py

@@ -1,13 +1,12 @@
 from sentry.models import Group
 from sentry.testutils import APITestCase, SnubaTestCase
+from sentry.testutils.cases import PerformanceIssueTestCase
 from sentry.testutils.helpers.datetime import before_now, iso_format
 from sentry.testutils.silo import region_silo_test
-from sentry.types.issues import GroupType
-from sentry.utils.samples import load_data
 
 
 @region_silo_test
-class GroupEventsLatestTest(APITestCase, SnubaTestCase):
+class GroupEventsLatestTest(APITestCase, SnubaTestCase, PerformanceIssueTestCase):
     endpoint = "sentry-api-0-events-latest"
 
     def setUp(self):
@@ -61,12 +60,8 @@ class GroupEventsLatestTest(APITestCase, SnubaTestCase):
         assert response.data["eventID"] == str(self.event2.event_id)
 
     def test_perf_issue(self):
-        event_data = load_data(
-            "transaction",
-            fingerprint=[f"{GroupType.PERFORMANCE_N_PLUS_ONE_DB_QUERIES.value}-group1"],
-        )
-        event = self.store_event(data=event_data, project_id=self.project.id)
-        url = f"/api/0/issues/{event.groups[0].id}/events/latest/"
+        event = self.create_performance_issue()
+        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

+ 4 - 9
tests/snuba/api/endpoints/test_group_events_oldest.py

@@ -1,13 +1,12 @@
 from sentry.models import Group
 from sentry.testutils import APITestCase, SnubaTestCase
+from sentry.testutils.cases import PerformanceIssueTestCase
 from sentry.testutils.helpers.datetime import before_now, iso_format
 from sentry.testutils.silo import region_silo_test
-from sentry.types.issues import GroupType
-from sentry.utils.samples import load_data
 
 
 @region_silo_test
-class GroupEventsOldestTest(APITestCase, SnubaTestCase):
+class GroupEventsOldestTest(APITestCase, SnubaTestCase, PerformanceIssueTestCase):
     def setUp(self):
         super().setUp()
         self.login_as(user=self.user)
@@ -59,12 +58,8 @@ class GroupEventsOldestTest(APITestCase, SnubaTestCase):
         assert response.data["id"] == str(self.event1.event_id)
 
     def test_perf_issue(self):
-        event_data = load_data(
-            "transaction",
-            fingerprint=[f"{GroupType.PERFORMANCE_N_PLUS_ONE_DB_QUERIES.value}-group1"],
-        )
-        event = self.store_event(data=event_data, project_id=self.project.id)
-        url = f"/api/0/issues/{event.groups[0].id}/events/latest/"
+        event = self.create_performance_issue()
+        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