Skip to content

Commit 42f5f6f

Browse files
authored
chore(stats-detectors): Remove feature flag from root cause analysis … (#60408)
…endpoint Time to remove this feature flag too.
1 parent a8c1801 commit 42f5f6f

File tree

2 files changed

+109
-134
lines changed

2 files changed

+109
-134
lines changed

src/sentry/api/endpoints/organization_events_root_cause_analysis.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from rest_framework.response import Response
55
from snuba_sdk import Column, Condition, Direction, Function, Op, Or, OrderBy
66

7-
from sentry import features
87
from sentry.api.api_publish_status import ApiPublishStatus
98
from sentry.api.base import region_silo_endpoint
109
from sentry.api.bases.organization_events import OrganizationEventsEndpointBase
@@ -243,13 +242,6 @@ class OrganizationEventsRootCauseAnalysisEndpoint(OrganizationEventsEndpointBase
243242
}
244243

245244
def get(self, request, organization):
246-
if not features.has(
247-
"organizations:performance-duration-regression-visible",
248-
organization,
249-
actor=request.user,
250-
):
251-
return Response(status=404)
252-
253245
# TODO: Extract this into a custom serializer to handle validation
254246
transaction_name = request.GET.get("transaction")
255247
project_id = request.GET.get("project")

tests/sentry/api/endpoints/test_organization_root_cause_analysis.py

Lines changed: 109 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
from sentry.testutils.silo import region_silo_test
1010
from sentry.utils.samples import load_data
1111

12-
FEATURES = ["organizations:performance-duration-regression-visible"]
13-
1412
pytestmark = [pytest.mark.sentry_metrics]
1513

1614

@@ -66,88 +64,78 @@ def create_transaction(
6664
data["contexts"]["trace"]["parent_span_id"] = parent_span_id
6765
return self.store_event(data, project_id=project_id)
6866

69-
def test_404s_without_feature_flag(self):
70-
response = self.client.get(self.url, format="json")
71-
assert response.status_code == 404, response.content
72-
7367
def test_transaction_name_required(self):
74-
with self.feature(FEATURES):
75-
response = self.client.get(
76-
self.url,
77-
format="json",
78-
data={
79-
"project": self.project.id,
80-
"breakpoint": (self.now - timedelta(days=1)).isoformat(),
81-
},
82-
)
68+
response = self.client.get(
69+
self.url,
70+
format="json",
71+
data={
72+
"project": self.project.id,
73+
"breakpoint": (self.now - timedelta(days=1)).isoformat(),
74+
},
75+
)
8376

8477
assert response.status_code == 400, response.content
8578

8679
def test_project_id_required(self):
87-
with self.feature(FEATURES):
88-
response = self.client.get(
89-
self.url,
90-
format="json",
91-
data={
92-
"transaction": "foo",
93-
},
94-
)
80+
response = self.client.get(
81+
self.url,
82+
format="json",
83+
data={
84+
"transaction": "foo",
85+
},
86+
)
9587

9688
assert response.status_code == 400, response.content
9789

9890
def test_breakpoint_required(self):
99-
with self.feature(FEATURES):
100-
response = self.client.get(
101-
self.url,
102-
format="json",
103-
data={"transaction": "foo", "project": self.project.id},
104-
)
91+
response = self.client.get(
92+
self.url,
93+
format="json",
94+
data={"transaction": "foo", "project": self.project.id},
95+
)
10596

10697
assert response.status_code == 400, response.content
10798

10899
def test_transaction_must_exist(self):
109-
with self.feature(FEATURES):
110-
response = self.client.get(
111-
self.url,
112-
format="json",
113-
data={
114-
"transaction": "foo",
115-
"project": self.project.id,
116-
"breakpoint": self.now - timedelta(days=1),
117-
"start": self.now - timedelta(days=3),
118-
"end": self.now,
119-
},
120-
)
100+
response = self.client.get(
101+
self.url,
102+
format="json",
103+
data={
104+
"transaction": "foo",
105+
"project": self.project.id,
106+
"breakpoint": self.now - timedelta(days=1),
107+
"start": self.now - timedelta(days=3),
108+
"end": self.now,
109+
},
110+
)
121111

122112
assert response.status_code == 200, response.content
123113

124-
with self.feature(FEATURES):
125-
response = self.client.get(
126-
self.url,
127-
format="json",
128-
data={
129-
"transaction": "does not exist",
130-
"project": self.project.id,
131-
"breakpoint": self.now - timedelta(days=1),
132-
"start": self.now - timedelta(days=3),
133-
"end": self.now,
134-
},
135-
)
114+
response = self.client.get(
115+
self.url,
116+
format="json",
117+
data={
118+
"transaction": "does not exist",
119+
"project": self.project.id,
120+
"breakpoint": self.now - timedelta(days=1),
121+
"start": self.now - timedelta(days=3),
122+
"end": self.now,
123+
},
124+
)
136125

137126
assert response.status_code == 400, response.content
138127

139128
# TODO: Enable this test when adding a serializer to handle validation
140129
# def test_breakpoint_must_be_in_the_past(self):
141-
# with self.feature(FEATURES):
142-
# response = self.client.get(
143-
# self.url,
144-
# format="json",
145-
# data={
146-
# "transaction": "foo",
147-
# "project": self.project.id,
148-
# "breakpoint": (self.now + timedelta(days=1)).isoformat(),
149-
# },
150-
# )
130+
# response = self.client.get(
131+
# self.url,
132+
# format="json",
133+
# data={
134+
# "transaction": "foo",
135+
# "project": self.project.id,
136+
# "breakpoint": (self.now + timedelta(days=1)).isoformat(),
137+
# },
138+
# )
151139

152140
# assert response.status_code == 400, response.content
153141

@@ -229,18 +217,17 @@ def test_returns_change_data_for_regressed_spans(self):
229217
duration=600,
230218
)
231219

232-
with self.feature(FEATURES):
233-
response = self.client.get(
234-
self.url,
235-
format="json",
236-
data={
237-
"transaction": "foo",
238-
"project": self.project.id,
239-
"breakpoint": self.now - timedelta(days=1),
240-
"start": self.now - timedelta(days=3),
241-
"end": self.now,
242-
},
243-
)
220+
response = self.client.get(
221+
self.url,
222+
format="json",
223+
data={
224+
"transaction": "foo",
225+
"project": self.project.id,
226+
"breakpoint": self.now - timedelta(days=1),
227+
"start": self.now - timedelta(days=3),
228+
"end": self.now,
229+
},
230+
)
244231

245232
assert response.status_code == 200, response.content
246233
assert response.data == [
@@ -320,19 +307,18 @@ def test_results_are_limited(self):
320307
duration=10100,
321308
)
322309

323-
with self.feature(FEATURES):
324-
response = self.client.get(
325-
self.url,
326-
format="json",
327-
data={
328-
"transaction": "foo",
329-
"project": self.project.id,
330-
"breakpoint": self.now - timedelta(days=1),
331-
"start": self.now - timedelta(days=3),
332-
"end": self.now,
333-
"per_page": 1,
334-
},
335-
)
310+
response = self.client.get(
311+
self.url,
312+
format="json",
313+
data={
314+
"transaction": "foo",
315+
"project": self.project.id,
316+
"breakpoint": self.now - timedelta(days=1),
317+
"start": self.now - timedelta(days=3),
318+
"end": self.now,
319+
"per_page": 1,
320+
},
321+
)
336322

337323
assert response.status_code == 200, response.content
338324
assert len(response.data) == 1
@@ -398,18 +384,17 @@ def test_analysis_leaves_a_buffer_around_breakpoint_to_ignore_mixed_transactions
398384
duration=200,
399385
)
400386

401-
with self.feature(FEATURES):
402-
response = self.client.get(
403-
self.url,
404-
format="json",
405-
data={
406-
"transaction": "foo",
407-
"project": self.project.id,
408-
"breakpoint": breakpoint_timestamp,
409-
"start": self.now - timedelta(days=3),
410-
"end": self.now,
411-
},
412-
)
387+
response = self.client.get(
388+
self.url,
389+
format="json",
390+
data={
391+
"transaction": "foo",
392+
"project": self.project.id,
393+
"breakpoint": breakpoint_timestamp,
394+
"start": self.now - timedelta(days=3),
395+
"end": self.now,
396+
},
397+
)
413398

414399
assert response.status_code == 200, response.content
415400

@@ -461,19 +446,18 @@ def test_geo_code(self):
461446
hours_before_now=6,
462447
)
463448

464-
with self.feature(FEATURES):
465-
response = self.client.get(
466-
self.url,
467-
format="json",
468-
data={
469-
"transaction": "bar",
470-
"project": self.project.id,
471-
"breakpoint": breakpoint_timestamp,
472-
"start": self.now - timedelta(days=3),
473-
"end": self.now,
474-
"type": "geo",
475-
},
476-
)
449+
response = self.client.get(
450+
self.url,
451+
format="json",
452+
data={
453+
"transaction": "bar",
454+
"project": self.project.id,
455+
"breakpoint": breakpoint_timestamp,
456+
"start": self.now - timedelta(days=3),
457+
"end": self.now,
458+
"type": "geo",
459+
},
460+
)
477461

478462
assert response.status_code == 200, response.content
479463
assert response.data == [
@@ -516,19 +500,18 @@ def test_geo_code_anaysis_ignores_empty_string_country_code(self):
516500
hours_before_now=6,
517501
)
518502

519-
with self.feature(FEATURES):
520-
response = self.client.get(
521-
self.url,
522-
format="json",
523-
data={
524-
"transaction": "bar",
525-
"project": self.project.id,
526-
"breakpoint": breakpoint_timestamp,
527-
"start": self.now - timedelta(days=3),
528-
"end": self.now,
529-
"type": "geo",
530-
},
531-
)
503+
response = self.client.get(
504+
self.url,
505+
format="json",
506+
data={
507+
"transaction": "bar",
508+
"project": self.project.id,
509+
"breakpoint": breakpoint_timestamp,
510+
"start": self.now - timedelta(days=3),
511+
"end": self.now,
512+
"type": "geo",
513+
},
514+
)
532515

533516
assert response.status_code == 200, response.content
534517
assert len(response.data) == 0

0 commit comments

Comments
 (0)