|
4 | 4 | import orjson |
5 | 5 | import pytest |
6 | 6 | from sentry_protos.snuba.v1.request_common_pb2 import TraceItemType |
| 7 | +from sentry_protos.snuba.v1.trace_item_attribute_pb2 import ( |
| 8 | + ExtrapolationMode as RPCExtrapolationMode, |
| 9 | +) |
7 | 10 | from sentry_protos.snuba.v1.trace_item_attribute_pb2 import Function |
8 | 11 | from sentry_protos.snuba.v1.trace_item_filter_pb2 import ComparisonFilter |
9 | 12 | from urllib3.response import HTTPResponse |
|
25 | 28 | StoreDataResponse, |
26 | 29 | ) |
27 | 30 | from sentry.snuba.dataset import Dataset |
28 | | -from sentry.snuba.models import SnubaQuery, SnubaQueryEventType |
| 31 | +from sentry.snuba.models import ExtrapolationMode, SnubaQuery, SnubaQueryEventType |
29 | 32 | from sentry.snuba.subscriptions import create_snuba_query, create_snuba_subscription |
30 | 33 | from sentry.testutils.cases import SnubaTestCase, TestCase |
31 | 34 | from sentry.testutils.helpers.features import with_feature |
@@ -160,6 +163,7 @@ def test_translate_alert_rule_simple_count(self, mock_create_rpc) -> None: |
160 | 163 | assert snuba_query.dataset == Dataset.EventsAnalyticsPlatform.value |
161 | 164 | assert snuba_query.aggregate == "count(span.duration)" |
162 | 165 | assert snuba_query.query == "(span.duration:>100) AND is_transaction:1" |
| 166 | + assert snuba_query.extrapolation_mode == ExtrapolationMode.SERVER_WEIGHTED.value |
163 | 167 |
|
164 | 168 | event_types = list( |
165 | 169 | SnubaQueryEventType.objects.filter(snuba_query=snuba_query).values_list( |
@@ -202,6 +206,10 @@ def test_translate_alert_rule_simple_count(self, mock_create_rpc) -> None: |
202 | 206 | assert expression.aggregation.key.name == "sentry.project_id" |
203 | 207 | assert expression.aggregation.label == "count(span.duration)" |
204 | 208 | assert expression.label == "count(span.duration)" |
| 209 | + assert ( |
| 210 | + expression.aggregation.extrapolation_mode |
| 211 | + == RPCExtrapolationMode.EXTRAPOLATION_MODE_SERVER_ONLY |
| 212 | + ) |
205 | 213 |
|
206 | 214 | assert len(rpc_time_series_request.group_by) == 0 |
207 | 215 |
|
@@ -256,6 +264,7 @@ def test_translate_alert_rule_p95(self, mock_create_rpc) -> None: |
256 | 264 | assert snuba_query.dataset == Dataset.EventsAnalyticsPlatform.value |
257 | 265 | assert snuba_query.aggregate == "p95(span.duration)" |
258 | 266 | assert snuba_query.query == "(transaction.method:GET) AND is_transaction:1" |
| 267 | + assert snuba_query.extrapolation_mode == ExtrapolationMode.NONE.value |
259 | 268 |
|
260 | 269 | event_types = list( |
261 | 270 | SnubaQueryEventType.objects.filter(snuba_query=snuba_query).values_list( |
@@ -321,6 +330,7 @@ def test_translate_alert_rule_count_unique(self, mock_create_rpc) -> None: |
321 | 330 | assert snuba_query.dataset == Dataset.EventsAnalyticsPlatform.value |
322 | 331 | assert snuba_query.aggregate == "count_unique(user)" |
323 | 332 | assert snuba_query.query == "(transaction:/api/*) AND is_transaction:1" |
| 333 | + assert snuba_query.extrapolation_mode == ExtrapolationMode.SERVER_WEIGHTED.value |
324 | 334 |
|
325 | 335 | assert mock_create_rpc.called |
326 | 336 | call_args = mock_create_rpc.call_args |
@@ -377,6 +387,7 @@ def test_translate_alert_rule_empty_query(self, mock_create_rpc) -> None: |
377 | 387 | assert snuba_query.dataset == Dataset.EventsAnalyticsPlatform.value |
378 | 388 | assert snuba_query.aggregate == "count(span.duration)" |
379 | 389 | assert snuba_query.query == "is_transaction:1" |
| 390 | + assert snuba_query.extrapolation_mode == ExtrapolationMode.NONE.value |
380 | 391 |
|
381 | 392 | assert mock_create_rpc.called |
382 | 393 | call_args = mock_create_rpc.call_args |
|
0 commit comments