Skip to content

Commit ff420b1

Browse files
DominikB2014andrewshie-sentry
authored andcommitted
fix(insights): performance score should show as none when it doesn't exist (#97572)
We want to ensure anytime there is no perf score, the UI shows `(no value)`, this can be done by returning None when the score is 0. Technically, if all your vital measurements are 0 we would return None, but i don't think that's a case we need to worry about.
1 parent 4d0321a commit ff420b1

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ def get_total_span_count(settings: ResolverSettings) -> Column:
6060
)
6161

6262

63+
def none_if_zero_processor(value: float) -> float | None:
64+
if value == 0:
65+
return None
66+
return value
67+
68+
6369
def division_if(args: ResolvedArguments, settings: ResolverSettings) -> Column.BinaryFormula:
6470
extrapolation_mode = settings["extrapolation_mode"]
6571

@@ -1115,6 +1121,7 @@ def user_misery(args: ResolvedArguments, settings: ResolverSettings) -> Column.B
11151121
),
11161122
],
11171123
formula_resolver=performance_score,
1124+
processor=none_if_zero_processor,
11181125
is_aggregate=True,
11191126
),
11201127
"avg_compare": FormulaDefinition(

tests/snuba/api/endpoints/test_organization_events_span_indexed.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3080,6 +3080,25 @@ def test_performance_score(self) -> None:
30803080
assert data[0]["performance_score(measurements.score.lcp)"] == 0.06
30813081
assert meta["dataset"] == "spans"
30823082

3083+
def test_performance_score_zero(self) -> None:
3084+
3085+
response = self.do_request(
3086+
{
3087+
"field": [
3088+
"performance_score(measurements.score.lcp)",
3089+
],
3090+
"project": self.project.id,
3091+
"dataset": "spans",
3092+
}
3093+
)
3094+
3095+
assert response.status_code == 200, response.content
3096+
data = response.data["data"]
3097+
meta = response.data["meta"]
3098+
assert len(data) == 1
3099+
assert data[0]["performance_score(measurements.score.lcp)"] is None
3100+
assert meta["dataset"] == "spans"
3101+
30833102
def test_division_if(self) -> None:
30843103
self.store_spans(
30853104
[
@@ -3307,7 +3326,7 @@ def test_total_performance_score_missing_vital(self) -> None:
33073326
assert len(data) == 1
33083327
assert data[0]["performance_score(measurements.score.lcp)"] == 0.02
33093328
assert data[0]["performance_score(measurements.score.cls)"] == 0.08
3310-
assert data[0]["performance_score(measurements.score.ttfb)"] == 0.0
3329+
assert data[0]["performance_score(measurements.score.ttfb)"] is None
33113330
assert data[0]["performance_score(measurements.score.fcp)"] == 0.08
33123331
assert data[0]["performance_score(measurements.score.inp)"] == 0.5
33133332
self.assertAlmostEqual(data[0]["performance_score(measurements.score.total)"], 0.20)
@@ -3365,8 +3384,8 @@ def test_total_performance_score_multiple_transactions(self) -> None:
33653384
assert data[0]["transaction"] == "foo_transaction"
33663385
self.assertAlmostEqual(data[0]["performance_score(measurements.score.total)"], 0.8)
33673386
assert data[0]["performance_score(measurements.score.lcp)"] == 0.8
3368-
assert data[0]["performance_score(measurements.score.cls)"] == 0.0
3369-
assert data[0]["performance_score(measurements.score.fcp)"] == 0.0
3387+
assert data[0]["performance_score(measurements.score.cls)"] is None
3388+
assert data[0]["performance_score(measurements.score.fcp)"] is None
33703389
self.assertAlmostEqual(
33713390
data[0]["opportunity_score(measurements.score.total)"], 0.13333333333333333
33723391
)
@@ -3375,9 +3394,9 @@ def test_total_performance_score_multiple_transactions(self) -> None:
33753394
assert data[0]["opportunity_score(measurements.score.fcp)"] == 0.0
33763395
assert data[1]["transaction"] == "bar_transaction"
33773396
self.assertAlmostEqual(data[1]["performance_score(measurements.score.total)"], 0.7)
3378-
assert data[1]["performance_score(measurements.score.lcp)"] == 0.0
3397+
assert data[1]["performance_score(measurements.score.lcp)"] is None
33793398
assert data[1]["performance_score(measurements.score.cls)"] == 0.7
3380-
assert data[1]["performance_score(measurements.score.fcp)"] == 0.0
3399+
assert data[1]["performance_score(measurements.score.fcp)"] is None
33813400
self.assertAlmostEqual(data[1]["opportunity_score(measurements.score.total)"], 0.1)
33823401
assert data[1]["opportunity_score(measurements.score.lcp)"] == 0.0
33833402
self.assertAlmostEqual(data[1]["opportunity_score(measurements.score.cls)"], 0.3)

0 commit comments

Comments
 (0)