From 2f81fbe3326f95f22ff539f381fe27b4c3d794dc Mon Sep 17 00:00:00 2001 From: Colin Chartier Date: Wed, 15 Jan 2025 16:19:18 -0500 Subject: [PATCH 1/6] chore(trace-item-types): throw an error if no trace item type is specified --- snuba/web/rpc/v1/endpoint_time_series.py | 6 +++--- snuba/web/rpc/v1/endpoint_trace_item_table.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/snuba/web/rpc/v1/endpoint_time_series.py b/snuba/web/rpc/v1/endpoint_time_series.py index 4be81e7a4bb..5b8414b4d08 100644 --- a/snuba/web/rpc/v1/endpoint_time_series.py +++ b/snuba/web/rpc/v1/endpoint_time_series.py @@ -100,9 +100,9 @@ def _execute(self, in_msg: TimeSeriesRequest) -> TimeSeriesResponse: ) _enforce_no_duplicate_labels(in_msg) _validate_time_buckets(in_msg) - # NOTE: EAP spans was the first TraceItem, we didn't enforce a trace item name originally so we default to it - # for backwards compatibility if in_msg.meta.trace_item_type == TraceItemType.TRACE_ITEM_TYPE_UNSPECIFIED: - in_msg.meta.trace_item_type = TraceItemType.TRACE_ITEM_TYPE_SPAN + raise BadSnubaRPCRequestException( + "This endpoint requires meta.trace_item_type to be set (are you requesting spans? logs?)" + ) resolver = self.get_resolver(in_msg.meta.trace_item_type) return resolver.resolve(in_msg) diff --git a/snuba/web/rpc/v1/endpoint_trace_item_table.py b/snuba/web/rpc/v1/endpoint_trace_item_table.py index c22355193c5..33a4000a137 100644 --- a/snuba/web/rpc/v1/endpoint_trace_item_table.py +++ b/snuba/web/rpc/v1/endpoint_trace_item_table.py @@ -99,9 +99,9 @@ def _execute(self, in_msg: TraceItemTableRequest) -> TraceItemTableResponse: in_msg.meta.request_id = getattr(in_msg.meta, "request_id", None) or str( uuid.uuid4() ) - # NOTE: EAP spans was the first TraceItem, we didn't enforce a trace item name originally so we default to it - # for backwards compatibility if in_msg.meta.trace_item_type == TraceItemType.TRACE_ITEM_TYPE_UNSPECIFIED: - in_msg.meta.trace_item_type = TraceItemType.TRACE_ITEM_TYPE_SPAN + raise BadSnubaRPCRequestException( + "This endpoint requires meta.trace_item_type to be set (are you requesting spans? logs?)" + ) resolver = self.get_resolver(in_msg.meta.trace_item_type) return resolver.resolve(in_msg) From eeee76b92bc6d39c36dcf001d38fb6770ab7d776 Mon Sep 17 00:00:00 2001 From: Colin Chartier Date: Wed, 15 Jan 2025 16:55:56 -0500 Subject: [PATCH 2/6] test changes --- tests/manual_jobs/test_scrub_ips_from_eap_spans.py | 2 ++ tests/manual_jobs/test_scrub_users_from_eap_spans.py | 2 ++ .../test_scrub_users_from_eap_spans_str_attrs.py | 3 ++- tests/subscriptions/test_codecs.py | 3 ++- tests/subscriptions/test_data.py | 4 +++- tests/subscriptions/test_scheduler_consumer.py | 3 ++- tests/subscriptions/test_subscription.py | 3 ++- tests/web/rpc/v1/test_create_subscription.py | 8 +++++++- tests/web/rpc/v1/test_debug_info.py | 3 ++- .../test_endpoint_time_series.py | 8 +++++++- .../test_endpoint_time_series_extrapolation.py | 10 +++++++++- 11 files changed, 40 insertions(+), 9 deletions(-) diff --git a/tests/manual_jobs/test_scrub_ips_from_eap_spans.py b/tests/manual_jobs/test_scrub_ips_from_eap_spans.py index 019761f8662..7d64913267b 100644 --- a/tests/manual_jobs/test_scrub_ips_from_eap_spans.py +++ b/tests/manual_jobs/test_scrub_ips_from_eap_spans.py @@ -15,6 +15,7 @@ PageToken, RequestMeta, ResponseMeta, + TraceItemType, ) from sentry_protos.snuba.v1.trace_item_attribute_pb2 import AttributeKey, AttributeValue from sentry_protos.snuba.v1.trace_item_filter_pb2 import ExistsFilter, TraceItemFilter @@ -212,6 +213,7 @@ def _generate_request( start_timestamp=Timestamp(seconds=hour_ago), end_timestamp=ts, request_id="be3123b3-2e5d-4eb9-bb48-f38eaa9e8480", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), filter=TraceItemFilter( exists_filter=ExistsFilter( diff --git a/tests/manual_jobs/test_scrub_users_from_eap_spans.py b/tests/manual_jobs/test_scrub_users_from_eap_spans.py index fc40acab0b8..ef3f7b11f09 100644 --- a/tests/manual_jobs/test_scrub_users_from_eap_spans.py +++ b/tests/manual_jobs/test_scrub_users_from_eap_spans.py @@ -15,6 +15,7 @@ PageToken, RequestMeta, ResponseMeta, + TraceItemType, ) from sentry_protos.snuba.v1.trace_item_attribute_pb2 import AttributeKey, AttributeValue from sentry_protos.snuba.v1.trace_item_filter_pb2 import ExistsFilter, TraceItemFilter @@ -211,6 +212,7 @@ def _generate_request( start_timestamp=Timestamp(seconds=hour_ago), end_timestamp=ts, request_id="be3123b3-2e5d-4eb9-bb48-f38eaa9e8480", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), filter=TraceItemFilter( exists_filter=ExistsFilter( diff --git a/tests/manual_jobs/test_scrub_users_from_eap_spans_str_attrs.py b/tests/manual_jobs/test_scrub_users_from_eap_spans_str_attrs.py index 01d9a392d59..c2ab495845a 100644 --- a/tests/manual_jobs/test_scrub_users_from_eap_spans_str_attrs.py +++ b/tests/manual_jobs/test_scrub_users_from_eap_spans_str_attrs.py @@ -9,7 +9,7 @@ TraceItemAttributeValuesRequest, TraceItemAttributeValuesResponse, ) -from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta +from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta, TraceItemType from sentry_protos.snuba.v1.trace_item_attribute_pb2 import AttributeKey from snuba.datasets.storages.factory import get_storage @@ -254,6 +254,7 @@ def get_attributes(key: str) -> TraceItemAttributeValuesResponse: referrer="something", start_timestamp=START_TS, end_timestamp=END_TS, + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ) diff --git a/tests/subscriptions/test_codecs.py b/tests/subscriptions/test_codecs.py index c2818dc915e..7a1804c837a 100644 --- a/tests/subscriptions/test_codecs.py +++ b/tests/subscriptions/test_codecs.py @@ -11,7 +11,7 @@ CreateSubscriptionRequest as CreateSubscriptionRequestProto, ) from sentry_protos.snuba.v1.endpoint_time_series_pb2 import TimeSeriesRequest -from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta +from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta, TraceItemType from sentry_protos.snuba.v1.trace_item_attribute_pb2 import ( AttributeAggregation, AttributeKey, @@ -60,6 +60,7 @@ def build_rpc_subscription_data_from_proto( organization_id=1, cogs_category="something", referrer="something", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( diff --git a/tests/subscriptions/test_data.py b/tests/subscriptions/test_data.py index accd7936412..8f2020b9a55 100644 --- a/tests/subscriptions/test_data.py +++ b/tests/subscriptions/test_data.py @@ -6,7 +6,7 @@ CreateSubscriptionRequest as CreateSubscriptionRequestProto, ) from sentry_protos.snuba.v1.endpoint_time_series_pb2 import TimeSeriesRequest -from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta +from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta, TraceItemType from sentry_protos.snuba.v1.trace_item_attribute_pb2 import ( AttributeAggregation, AttributeKey, @@ -112,6 +112,7 @@ organization_id=1, cogs_category="something", referrer="something", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -142,6 +143,7 @@ organization_id=1, cogs_category="something", referrer="something", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( diff --git a/tests/subscriptions/test_scheduler_consumer.py b/tests/subscriptions/test_scheduler_consumer.py index dc884a9e2e1..4ca04189248 100644 --- a/tests/subscriptions/test_scheduler_consumer.py +++ b/tests/subscriptions/test_scheduler_consumer.py @@ -23,7 +23,7 @@ CreateSubscriptionRequest as CreateSubscriptionRequestProto, ) from sentry_protos.snuba.v1.endpoint_time_series_pb2 import TimeSeriesRequest -from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta +from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta, TraceItemType from sentry_protos.snuba.v1.trace_item_attribute_pb2 import ( AttributeAggregation, AttributeKey, @@ -187,6 +187,7 @@ def test_scheduler_consumer_rpc_subscriptions(tmpdir: LocalPath) -> None: organization_id=1, cogs_category="something", referrer="something", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( diff --git a/tests/subscriptions/test_subscription.py b/tests/subscriptions/test_subscription.py index 31890bc2788..15ced40be28 100644 --- a/tests/subscriptions/test_subscription.py +++ b/tests/subscriptions/test_subscription.py @@ -7,7 +7,7 @@ CreateSubscriptionRequest as CreateSubscriptionRequestProto, ) from sentry_protos.snuba.v1.endpoint_time_series_pb2 import TimeSeriesRequest -from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta +from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta, TraceItemType from sentry_protos.snuba.v1.trace_item_attribute_pb2 import ( AttributeAggregation, AttributeKey, @@ -355,6 +355,7 @@ def test(self) -> None: organization_id=1, cogs_category="something", referrer="something", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( diff --git a/tests/web/rpc/v1/test_create_subscription.py b/tests/web/rpc/v1/test_create_subscription.py index 03a544a0559..28f3c2ec317 100644 --- a/tests/web/rpc/v1/test_create_subscription.py +++ b/tests/web/rpc/v1/test_create_subscription.py @@ -10,7 +10,7 @@ ) from sentry_protos.snuba.v1.endpoint_time_series_pb2 import TimeSeriesRequest from sentry_protos.snuba.v1.error_pb2 import Error -from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta +from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta, TraceItemType from sentry_protos.snuba.v1.trace_item_attribute_pb2 import ( AttributeAggregation, AttributeKey, @@ -41,6 +41,7 @@ organization_id=1, cogs_category="something", referrer="something", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -67,6 +68,7 @@ organization_id=1, cogs_category="something", referrer="something", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -93,6 +95,7 @@ organization_id=1, cogs_category="something", referrer="something", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -127,6 +130,7 @@ organization_id=1, cogs_category="something", referrer="something", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), group_by=[ AttributeKey(type=AttributeKey.TYPE_STRING, name="device.class") @@ -156,6 +160,7 @@ organization_id=1, cogs_category="something", referrer="something", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -195,6 +200,7 @@ def test_create_valid_subscription(self) -> None: organization_id=1, cogs_category="something", referrer="something", + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( diff --git a/tests/web/rpc/v1/test_debug_info.py b/tests/web/rpc/v1/test_debug_info.py index 83f7c6d80ae..caa4513675a 100644 --- a/tests/web/rpc/v1/test_debug_info.py +++ b/tests/web/rpc/v1/test_debug_info.py @@ -7,7 +7,7 @@ Column, TraceItemTableRequest, ) -from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta +from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta, TraceItemType from sentry_protos.snuba.v1.trace_item_attribute_pb2 import AttributeKey from sentry_protos.snuba.v1.trace_item_filter_pb2 import ExistsFilter, TraceItemFilter @@ -36,6 +36,7 @@ def _create_trace_item_table_request(debug: bool = False) -> TraceItemTableReque end_timestamp=ts, request_id=request_id, debug=debug, + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), filter=TraceItemFilter( exists_filter=ExistsFilter( diff --git a/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py b/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py index 6aa7fb189f6..edb3ff8778b 100644 --- a/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py +++ b/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py @@ -11,7 +11,7 @@ TimeSeriesRequest, ) from sentry_protos.snuba.v1.error_pb2 import Error -from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta +from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta, TraceItemType from sentry_protos.snuba.v1.trace_item_attribute_pb2 import ( AttributeAggregation, AttributeKey, @@ -139,6 +139,7 @@ def test_basic(self) -> None: referrer="something", start_timestamp=tstart, end_timestamp=ts, + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -187,6 +188,7 @@ def test_sum(self) -> None: end_timestamp=Timestamp( seconds=int(BASE_TIME.timestamp() + query_duration) ), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -259,6 +261,7 @@ def test_with_group_by(self) -> None: referrer="something", start_timestamp=Timestamp(seconds=int(BASE_TIME.timestamp())), end_timestamp=Timestamp(seconds=int(BASE_TIME.timestamp() + 60 * 30)), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -339,6 +342,7 @@ def test_with_non_string_group_by(self) -> None: referrer="something", start_timestamp=Timestamp(seconds=int(BASE_TIME.timestamp())), end_timestamp=Timestamp(seconds=int(BASE_TIME.timestamp() + 60 * 30)), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -392,6 +396,7 @@ def test_with_no_data_present(self) -> None: end_timestamp=Timestamp( seconds=int(BASE_TIME.timestamp() + query_duration) ), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -469,6 +474,7 @@ def test_with_filters(self) -> None: seconds=int(BASE_TIME.timestamp() + query_duration) ), debug=True, + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( diff --git a/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series_extrapolation.py b/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series_extrapolation.py index 47964e2fce3..8a8514a8e48 100644 --- a/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series_extrapolation.py +++ b/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series_extrapolation.py @@ -10,7 +10,7 @@ TimeSeries, TimeSeriesRequest, ) -from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta +from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta, TraceItemType from sentry_protos.snuba.v1.trace_item_attribute_pb2 import ( AttributeAggregation, AttributeKey, @@ -154,6 +154,7 @@ def test_aggregations_reliable(self) -> None: end_timestamp=Timestamp( seconds=int(BASE_TIME.timestamp() + query_duration) ), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -269,6 +270,7 @@ def test_confidence_interval_zero_estimate(self) -> None: end_timestamp=Timestamp( seconds=int(BASE_TIME.timestamp() + query_duration) ), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -325,6 +327,7 @@ def test_confidence_interval_no_samples(self) -> None: end_timestamp=Timestamp( seconds=int(BASE_TIME.timestamp() + query_duration) ), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -379,6 +382,7 @@ def test_count_unreliable(self) -> None: end_timestamp=Timestamp( seconds=int(BASE_TIME.timestamp() + query_duration) ), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -438,6 +442,7 @@ def test_sum_unreliable(self) -> None: end_timestamp=Timestamp( seconds=int(BASE_TIME.timestamp() + query_duration) ), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -500,6 +505,7 @@ def test_avg_unreliable(self) -> None: end_timestamp=Timestamp( seconds=int(BASE_TIME.timestamp() + query_duration) ), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -559,6 +565,7 @@ def test_percentile_unreliable(self) -> None: end_timestamp=Timestamp( seconds=int(BASE_TIME.timestamp() + query_duration) ), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -618,6 +625,7 @@ def test_average_sampling_rate(self) -> None: end_timestamp=Timestamp( seconds=int(BASE_TIME.timestamp() + query_duration) ), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( From 2bb50848365b256047a1672bdf54ebe2bc00eccd Mon Sep 17 00:00:00 2001 From: Colin Chartier Date: Wed, 15 Jan 2025 17:13:39 -0500 Subject: [PATCH 3/6] ensure errors when no type is specified --- .../test_endpoint_time_series.py | 32 ++++++++++++++++ .../test_endpoint_trace_item_table.py | 37 +++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py b/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py index edb3ff8778b..ce32335b6f1 100644 --- a/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py +++ b/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py @@ -167,6 +167,38 @@ def test_basic(self) -> None: error.ParseFromString(response.data) assert response.status_code == 200, (error.message, error.details) + def test_errors_without_type(self) -> None: + ts = Timestamp() + ts.GetCurrentTime() + tstart = Timestamp(seconds=ts.seconds - 3600) + message = TimeSeriesRequest( + meta=RequestMeta( + project_ids=[1, 2, 3], + organization_id=1, + cogs_category="something", + referrer="something", + start_timestamp=tstart, + end_timestamp=ts, + ), + aggregations=[ + AttributeAggregation( + aggregate=Function.FUNCTION_COUNT, + key=AttributeKey( + type=AttributeKey.TYPE_FLOAT, name="sentry.duration" + ), + label="count", + ), + ], + granularity_secs=60, + ) + response = self.app.post( + "/rpc/EndpointTimeSeries/v1", data=message.SerializeToString() + ) + error = Error() + if response.status_code != 200: + error.ParseFromString(response.data) + assert response.status_code == 400, error + def test_sum(self) -> None: # store a a test metric with a value of 1, every second of one hour granularity_secs = 300 diff --git a/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table.py b/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table.py index 38cd7d70bd9..ffe5a36b0d1 100644 --- a/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table.py +++ b/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table.py @@ -181,6 +181,43 @@ def test_basic(self) -> None: error_proto.ParseFromString(response.data) assert response.status_code == 200, error_proto + def test_errors_without_type(self) -> None: + ts = Timestamp() + ts.GetCurrentTime() + message = TraceItemTableRequest( + meta=RequestMeta( + project_ids=[1, 2, 3], + organization_id=1, + cogs_category="something", + referrer="something", + start_timestamp=ts, + end_timestamp=ts, + ), + filter=TraceItemFilter( + exists_filter=ExistsFilter( + key=AttributeKey(type=AttributeKey.TYPE_STRING, name="color") + ) + ), + columns=[ + Column(key=AttributeKey(type=AttributeKey.TYPE_STRING, name="location")) + ], + order_by=[ + TraceItemTableRequest.OrderBy( + column=Column( + key=AttributeKey(type=AttributeKey.TYPE_STRING, name="location") + ) + ) + ], + limit=10, + ) + response = self.app.post( + "/rpc/EndpointTraceItemTable/v1", data=message.SerializeToString() + ) + error_proto = ErrorProto() + if response.status_code != 200: + error_proto.ParseFromString(response.data) + assert response.status_code == 400, error_proto + def test_with_data(self, setup_teardown: Any) -> None: ts = Timestamp(seconds=int(BASE_TIME.timestamp())) hour_ago = int((BASE_TIME - timedelta(hours=1)).timestamp()) From 582756e35ba3d596e1246efa90467723a20572b7 Mon Sep 17 00:00:00 2001 From: Colin Chartier Date: Wed, 15 Jan 2025 17:24:09 -0500 Subject: [PATCH 4/6] fix a few more tests --- .../test_endpoint_time_series/test_endpoint_time_series.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py b/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py index ce32335b6f1..2342b8de0f0 100644 --- a/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py +++ b/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series.py @@ -596,6 +596,7 @@ def test_with_unaligned_granularities(self) -> None: seconds=int(BASE_TIME.timestamp()) + query_duration ), debug=True, + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -647,6 +648,7 @@ def test_start_time_not_divisible_by_time_buckets_returns_valid_data(self) -> No end_timestamp=Timestamp( seconds=int(BASE_TIME.timestamp() + query_duration + 1) ), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -682,6 +684,7 @@ def test_with_non_existent_attribute(self) -> None: referrer="something", start_timestamp=Timestamp(seconds=int(BASE_TIME.timestamp())), end_timestamp=Timestamp(seconds=int(BASE_TIME.timestamp() + 60 * 30)), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -723,6 +726,7 @@ def test_no_duplicate_labels(self) -> None: referrer="something", start_timestamp=Timestamp(seconds=int(BASE_TIME.timestamp())), end_timestamp=Timestamp(seconds=int(BASE_TIME.timestamp())), + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, debug=True, ), aggregations=[ @@ -767,6 +771,7 @@ def test_bad_granularity( start_timestamp=Timestamp(seconds=int(start_ts.timestamp())), end_timestamp=Timestamp(seconds=int(end_ts.timestamp())), debug=True, + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( @@ -792,6 +797,7 @@ def test_adjust_buckets(self) -> None: start_timestamp=Timestamp(seconds=int(BASE_TIME.timestamp())), end_timestamp=Timestamp(seconds=int(BASE_TIME.timestamp()) + 65), debug=True, + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), aggregations=[ AttributeAggregation( From 800a8f166b6a2730b655e9c55f323c667387867a Mon Sep 17 00:00:00 2001 From: Colin Chartier Date: Thu, 16 Jan 2025 11:09:15 -0500 Subject: [PATCH 5/6] fix test --- .../test_endpoint_trace_item_table.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table.py b/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table.py index ffe5a36b0d1..85f75896d2c 100644 --- a/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table.py +++ b/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table.py @@ -943,6 +943,7 @@ def test_same_column_name(self) -> None: "projectIds": ["1"], "startTimestamp": hour_ago.ToJsonString(), "endTimestamp": ts.ToJsonString(), + "traceItemType": "TRACE_ITEM_TYPE_SPAN", }, "columns": [ { From d529102b1996fb8f9485e5ceb61882bdb71c7c3d Mon Sep 17 00:00:00 2001 From: Colin Chartier Date: Thu, 16 Jan 2025 11:37:37 -0500 Subject: [PATCH 6/6] one last test --- .../test_endpoint_trace_item_table_extrapolation.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table_extrapolation.py b/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table_extrapolation.py index b40f577fae6..2592fa0c01b 100644 --- a/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table_extrapolation.py +++ b/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table_extrapolation.py @@ -10,7 +10,7 @@ Column, TraceItemTableRequest, ) -from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta +from sentry_protos.snuba.v1.request_common_pb2 import RequestMeta, TraceItemType from sentry_protos.snuba.v1.trace_item_attribute_pb2 import ( AttributeAggregation, AttributeKey, @@ -150,6 +150,7 @@ def test_aggregation_on_attribute_column(self) -> None: referrer="something", start_timestamp=Timestamp(seconds=hour_ago), end_timestamp=ts, + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), columns=[ Column( @@ -260,6 +261,7 @@ def test_count_reliability(self) -> None: referrer="something", start_timestamp=Timestamp(seconds=hour_ago), end_timestamp=ts, + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), columns=[ Column( @@ -318,6 +320,7 @@ def test_count_reliability_with_group_by(self) -> None: referrer="something", start_timestamp=Timestamp(seconds=hour_ago), end_timestamp=ts, + trace_item_type=TraceItemType.TRACE_ITEM_TYPE_SPAN, ), columns=[ Column(key=AttributeKey(type=AttributeKey.TYPE_STRING, name="key")),