Skip to content

Commit 5a78cbf

Browse files
wmakgetsantry[bot]
andauthored
chore(eap): Require operator for if combinators (#97006)
- Now that the frontend change is merged we're no longer using if combinators without an operator. Require that argument so that we don't get more usage --------- Co-authored-by: getsantry[bot] <66042841+getsantry[bot]@users.noreply.github.com>
1 parent e5bd64e commit 5a78cbf

File tree

3 files changed

+29
-37
lines changed

3 files changed

+29
-37
lines changed

src/sentry/search/eap/spans/aggregates.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,6 @@ def resolve_bounded_sample(args: ResolvedArguments) -> tuple[AttributeKey, Trace
179179
),
180180
AttributeArgumentDefinition(attribute_types={"string"}),
181181
ValueArgumentDefinition(
182-
default_arg="equals",
183182
argument_types={"string"},
184183
validator=literal_validator(["equals", "notEquals"]),
185184
),
@@ -202,7 +201,6 @@ def resolve_bounded_sample(args: ResolvedArguments) -> tuple[AttributeKey, Trace
202201
),
203202
AttributeArgumentDefinition(attribute_types={"string"}),
204203
ValueArgumentDefinition(
205-
default_arg="equals",
206204
argument_types={"string"},
207205
validator=literal_validator(["equals", "notEquals"]),
208206
),
@@ -225,7 +223,6 @@ def resolve_bounded_sample(args: ResolvedArguments) -> tuple[AttributeKey, Trace
225223
),
226224
AttributeArgumentDefinition(attribute_types={"string", "boolean"}),
227225
ValueArgumentDefinition(
228-
default_arg="equals",
229226
argument_types={"string"},
230227
validator=literal_validator(["equals", "notEquals"]),
231228
),
@@ -248,7 +245,6 @@ def resolve_bounded_sample(args: ResolvedArguments) -> tuple[AttributeKey, Trace
248245
),
249246
AttributeArgumentDefinition(attribute_types={"string", "boolean"}),
250247
ValueArgumentDefinition(
251-
default_arg="equals",
252248
argument_types={"string"},
253249
validator=literal_validator(["equals", "notEquals"]),
254250
),
@@ -271,7 +267,6 @@ def resolve_bounded_sample(args: ResolvedArguments) -> tuple[AttributeKey, Trace
271267
),
272268
AttributeArgumentDefinition(attribute_types={"string", "boolean"}),
273269
ValueArgumentDefinition(
274-
default_arg="equals",
275270
argument_types={"string"},
276271
validator=literal_validator(["equals", "notEquals"]),
277272
),
@@ -294,7 +289,6 @@ def resolve_bounded_sample(args: ResolvedArguments) -> tuple[AttributeKey, Trace
294289
),
295290
AttributeArgumentDefinition(attribute_types={"string", "boolean"}),
296291
ValueArgumentDefinition(
297-
default_arg="equals",
298292
argument_types={"string"},
299293
validator=literal_validator(["equals", "notEquals"]),
300294
),
@@ -317,7 +311,6 @@ def resolve_bounded_sample(args: ResolvedArguments) -> tuple[AttributeKey, Trace
317311
),
318312
AttributeArgumentDefinition(attribute_types={"string", "boolean"}),
319313
ValueArgumentDefinition(
320-
default_arg="equals",
321314
argument_types={"string"},
322315
validator=literal_validator(["equals", "notEquals"]),
323316
),
@@ -340,7 +333,6 @@ def resolve_bounded_sample(args: ResolvedArguments) -> tuple[AttributeKey, Trace
340333
),
341334
AttributeArgumentDefinition(attribute_types={"string", "boolean"}),
342335
ValueArgumentDefinition(
343-
default_arg="equals",
344336
argument_types={"string"},
345337
validator=literal_validator(["equals", "notEquals"]),
346338
),

src/sentry/search/eap/spans/formulas.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,7 +1069,6 @@ def user_misery(args: ResolvedArguments, settings: ResolverSettings) -> Column.B
10691069
arguments=[
10701070
AttributeArgumentDefinition(attribute_types={"string", "boolean"}),
10711071
ValueArgumentDefinition(
1072-
default_arg="equals",
10731072
argument_types={"string"},
10741073
validator=literal_validator(["equals", "notEquals"]),
10751074
),
@@ -1162,7 +1161,6 @@ def user_misery(args: ResolvedArguments, settings: ResolverSettings) -> Column.B
11621161
),
11631162
AttributeArgumentDefinition(attribute_types={"string", "boolean"}),
11641163
ValueArgumentDefinition(
1165-
default_arg="equals",
11661164
argument_types={"string"},
11671165
validator=literal_validator(["equals", "notEquals"]),
11681166
),

tests/snuba/api/endpoints/test_organization_events_span_indexed.py

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1996,7 +1996,7 @@ def test_p75_if(self) -> None:
19961996

19971997
response = self.do_request(
19981998
{
1999-
"field": ["p75_if(span.duration, is_transaction, true)"],
1999+
"field": ["p75_if(span.duration, is_transaction, equals, true)"],
20002000
"query": "",
20012001
"project": self.project.id,
20022002
"dataset": "spans",
@@ -2009,12 +2009,15 @@ def test_p75_if(self) -> None:
20092009
assert len(data) == 1
20102010
assert data == [
20112011
{
2012-
"p75_if(span.duration, is_transaction, true)": 3000,
2012+
"p75_if(span.duration, is_transaction, equals, true)": 3000,
20132013
},
20142014
]
2015+
20152016
assert meta["dataset"] == "spans"
2016-
assert meta["units"] == {"p75_if(span.duration, is_transaction, true)": "millisecond"}
2017-
assert meta["fields"] == {"p75_if(span.duration, is_transaction, true)": "duration"}
2017+
assert meta["units"] == {
2018+
"p75_if(span.duration, is_transaction, equals, true)": "millisecond"
2019+
}
2020+
assert meta["fields"] == {"p75_if(span.duration, is_transaction, equals, true)": "duration"}
20182021

20192022
def test_is_transaction(self) -> None:
20202023
self.store_spans(
@@ -2666,7 +2669,7 @@ def test_failure_rate_if(self) -> None:
26662669

26672670
response = self.do_request(
26682671
{
2669-
"field": ["failure_rate_if(is_transaction, true)"],
2672+
"field": ["failure_rate_if(is_transaction, equals, true)"],
26702673
"project": self.project.id,
26712674
"dataset": "spans",
26722675
}
@@ -2676,13 +2679,13 @@ def test_failure_rate_if(self) -> None:
26762679
data = response.data["data"]
26772680
meta = response.data["meta"]
26782681
assert len(data) == 1
2679-
assert data[0]["failure_rate_if(is_transaction, true)"] == 0.25
2682+
assert data[0]["failure_rate_if(is_transaction, equals, true)"] == 0.25
26802683
assert meta["dataset"] == "spans"
26812684
assert meta["fields"] == {
2682-
"failure_rate_if(is_transaction, true)": "percentage",
2685+
"failure_rate_if(is_transaction, equals, true)": "percentage",
26832686
}
26842687
assert meta["units"] == {
2685-
"failure_rate_if(is_transaction, true)": None,
2688+
"failure_rate_if(is_transaction, equals, true)": None,
26862689
}
26872690

26882691
def test_count_op(self) -> None:
@@ -2750,8 +2753,8 @@ def test_avg_if(self) -> None:
27502753
response = self.do_request(
27512754
{
27522755
"field": [
2753-
"avg_if(span.duration, span.op, queue.process)",
2754-
"avg_if(span.duration, span.op, queue.publish)",
2756+
"avg_if(span.duration, span.op, equals, queue.process)",
2757+
"avg_if(span.duration, span.op, equals, queue.publish)",
27552758
],
27562759
"project": self.project.id,
27572760
"dataset": "spans",
@@ -2762,8 +2765,8 @@ def test_avg_if(self) -> None:
27622765
data = response.data["data"]
27632766
meta = response.data["meta"]
27642767
assert len(data) == 1
2765-
assert data[0]["avg_if(span.duration, span.op, queue.process)"] == 1500.0
2766-
assert data[0]["avg_if(span.duration, span.op, queue.publish)"] == 3000.0
2768+
assert data[0]["avg_if(span.duration, span.op, equals, queue.process)"] == 1500.0
2769+
assert data[0]["avg_if(span.duration, span.op, equals, queue.publish)"] == 3000.0
27672770
assert meta["dataset"] == "spans"
27682771

27692772
def test_avg_compare(self) -> None:
@@ -2818,7 +2821,7 @@ def test_avg_if_invalid_param(self) -> None:
28182821
response = self.do_request(
28192822
{
28202823
"field": [
2821-
"avg_if(span.duration, span.duration, queue.process)",
2824+
"avg_if(span.duration, span.duration, equals, queue.process)",
28222825
],
28232826
"project": self.project.id,
28242827
"dataset": "spans",
@@ -3107,8 +3110,8 @@ def test_division_if(self) -> None:
31073110
response = self.do_request(
31083111
{
31093112
"field": [
3110-
"division_if(mobile.slow_frames,mobile.total_frames,browser.name,Chrome)",
3111-
"division_if(mobile.slow_frames,mobile.total_frames,browser.name,Firefox)",
3113+
"division_if(mobile.slow_frames,mobile.total_frames,browser.name,equals,Chrome)",
3114+
"division_if(mobile.slow_frames,mobile.total_frames,browser.name,equals,Firefox)",
31123115
],
31133116
"project": self.project.id,
31143117
"dataset": "spans",
@@ -3120,17 +3123,21 @@ def test_division_if(self) -> None:
31203123
meta = response.data["meta"]
31213124
assert len(data) == 1
31223125
assert (
3123-
data[0]["division_if(mobile.slow_frames,mobile.total_frames,browser.name,Chrome)"]
3126+
data[0][
3127+
"division_if(mobile.slow_frames,mobile.total_frames,browser.name,equals,Chrome)"
3128+
]
31243129
== 10 / 100
31253130
)
31263131
assert (
3127-
data[0]["division_if(mobile.slow_frames,mobile.total_frames,browser.name,Firefox)"]
3132+
data[0][
3133+
"division_if(mobile.slow_frames,mobile.total_frames,browser.name,equals,Firefox)"
3134+
]
31283135
== 50 / 100
31293136
)
31303137
assert meta["dataset"] == "spans"
31313138
assert meta["fields"] == {
3132-
"division_if(mobile.slow_frames,mobile.total_frames,browser.name,Chrome)": "percentage",
3133-
"division_if(mobile.slow_frames,mobile.total_frames,browser.name,Firefox)": "percentage",
3139+
"division_if(mobile.slow_frames,mobile.total_frames,browser.name,equals,Chrome)": "percentage",
3140+
"division_if(mobile.slow_frames,mobile.total_frames,browser.name,equals,Firefox)": "percentage",
31343141
}
31353142

31363143
def test_total_performance_score(self) -> None:
@@ -4504,7 +4511,8 @@ def test_typed_attributes_with_colons(self) -> None:
45044511
},
45054512
]
45064513

4507-
def test_count_if_two_args(self) -> None:
4514+
def test_count_if_two_args(self):
4515+
"""count_if should have an operator"""
45084516
self.store_spans(
45094517
[
45104518
self.create_span({"sentry_tags": {"release": "foo"}}),
@@ -4525,13 +4533,7 @@ def test_count_if_two_args(self) -> None:
45254533
"dataset": "spans",
45264534
}
45274535
)
4528-
assert response.status_code == 200, response.content
4529-
data = response.data["data"]
4530-
meta = response.data["meta"]
4531-
4532-
assert len(data) == 1
4533-
assert data[0]["count_if(release,foo)"] == 1
4534-
assert meta["dataset"] == "spans"
4536+
assert response.status_code == 400, response.content
45354537

45364538
def test_span_ops_breakdown(self) -> None:
45374539
self.store_spans(

0 commit comments

Comments
 (0)