From c9f7690ada7da2bed147740ebebdc61ac992698d Mon Sep 17 00:00:00 2001 From: Alberto Leal Date: Mon, 14 Jun 2021 17:10:58 -0400 Subject: [PATCH 1/4] ref(breakdowns): Rename keys in span operation breakdown config --- src/sentry/projectoptions/defaults.py | 2 +- src/sentry/relay/config.py | 2 +- tests/sentry/relay/test_config.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sentry/projectoptions/defaults.py b/src/sentry/projectoptions/defaults.py index d48f334e756246..d42ce4ed0c7571 100644 --- a/src/sentry/projectoptions/defaults.py +++ b/src/sentry/projectoptions/defaults.py @@ -70,7 +70,7 @@ epoch_defaults={ 1: { "span_ops": { - "type": "span_operations", + "type": "spanOperations", "matches": ["http", "db", "browser", "resource"], } }, diff --git a/src/sentry/relay/config.py b/src/sentry/relay/config.py index 941ad53f67bf17..01bd34682d7c03 100644 --- a/src/sentry/relay/config.py +++ b/src/sentry/relay/config.py @@ -167,7 +167,7 @@ def get_project_config(project, full_config=True, project_keys=None): return ProjectConfig(project, **cfg) if features.has("organizations:performance-ops-breakdown", project.organization): - cfg["config"]["breakdowns"] = project.get_option("sentry:breakdowns") + cfg["config"]["breakdownsV2"] = project.get_option("sentry:breakdowns") with Hub.current.start_span(op="get_filter_settings"): cfg["config"]["filterSettings"] = get_filter_settings(project) with Hub.current.start_span(op="get_grouping_config_dict_for_project"): diff --git a/tests/sentry/relay/test_config.py b/tests/sentry/relay/test_config.py index e95895436ffd58..234c6bed40bb2c 100644 --- a/tests/sentry/relay/test_config.py +++ b/tests/sentry/relay/test_config.py @@ -104,4 +104,4 @@ def test_project_config_with_breakdown(default_project, insta_snapshot): cfg = get_project_config(default_project, full_config=True) cfg = cfg.to_dict() - insta_snapshot(cfg["config"]["breakdowns"]) + insta_snapshot(cfg["config"]["breakdownsV2"]) From 4a4c9af7760272aaf5d70c5edf058ea367867de9 Mon Sep 17 00:00:00 2001 From: Alberto Leal Date: Mon, 14 Jun 2021 17:15:10 -0400 Subject: [PATCH 2/4] update snapshots --- .../test_config/test_project_config_with_breakdown.pysnap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/sentry/relay/snapshots/test_config/test_project_config_with_breakdown.pysnap b/tests/sentry/relay/snapshots/test_config/test_project_config_with_breakdown.pysnap index fe6634a5eb897d..eb9f47442889f6 100644 --- a/tests/sentry/relay/snapshots/test_config/test_project_config_with_breakdown.pysnap +++ b/tests/sentry/relay/snapshots/test_config/test_project_config_with_breakdown.pysnap @@ -1,5 +1,5 @@ --- -created: '2021-05-21T13:05:27.726107Z' +created: '2021-06-14T21:14:00.494403Z' creator: sentry source: tests/sentry/relay/test_config.py --- @@ -9,4 +9,4 @@ span_ops: - db - browser - resource - type: span_operations + type: spanOperations From 4df9caa98891fb33f41a573f9700b0d074dd6e75 Mon Sep 17 00:00:00 2001 From: Alberto Leal Date: Wed, 16 Jun 2021 07:31:43 -0400 Subject: [PATCH 3/4] add E2E relay transaction test --- tests/relay_integration/tests.py | 81 +++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/tests/relay_integration/tests.py b/tests/relay_integration/tests.py index 184096fbd26dad..d1ab123ba14333 100644 --- a/tests/relay_integration/tests.py +++ b/tests/relay_integration/tests.py @@ -3,7 +3,8 @@ from sentry.models.eventattachment import EventAttachment from sentry.testutils import RelayStoreHelper, TransactionTestCase -from sentry.testutils.helpers.datetime import before_now, iso_format +from sentry.testutils.helpers.datetime import before_now, iso_format, timestamp_format +from sentry.testutils.helpers import Feature class SentryRemoteTest(RelayStoreHelper, TransactionTestCase): @@ -115,3 +116,81 @@ def test_standalone_attachment(self): # Finally, fetch the updated attachment and compare the group id attachment = EventAttachment.objects.get(project_id=self.project.id, event_id=event_id) assert attachment.group_id == event.group_id + + def test_transaction(self): + event_data = { + "event_id": "d2132d31b39445f1938d7e21b6bf0ec4", + "type": "transaction", + "transaction": "/organizations/:orgId/performance/:eventSlug/", + "start_timestamp": iso_format(before_now(minutes=1, milliseconds=500)), + "timestamp": iso_format(before_now(minutes=1)), + "contexts": { + "trace": { + "trace_id": "ff62a8b040f340bda5d830223def1d81", + "span_id": "8f5a2b8768cafb4e", + "type": "trace", + } + }, + "spans": [ + { + "description": "", + "op": "react.mount", + "parent_span_id": "8f5a2b8768cafb4e", + "span_id": "bd429c44b67a3eb4", + "start_timestamp": timestamp_format(before_now(minutes=1, milliseconds=250)), + "timestamp": timestamp_format(before_now(minutes=1)), + "trace_id": "ff62a8b040f340bda5d830223def1d81", + }, + { + "description": "browser span", + "op": "browser", + "parent_span_id": "8f5a2b8768cafb4e", + "span_id": "a99fd04e79e17631", + "start_timestamp": timestamp_format(before_now(minutes=1, milliseconds=200)), + "timestamp": timestamp_format(before_now(minutes=1)), + "trace_id": "ff62a8b040f340bda5d830223def1d81", + }, + { + "description": "resource span", + "op": "resource", + "parent_span_id": "8f5a2b8768cafb4e", + "span_id": "a71a5e67db5ce938", + "start_timestamp": timestamp_format(before_now(minutes=1, milliseconds=200)), + "timestamp": timestamp_format(before_now(minutes=1)), + "trace_id": "ff62a8b040f340bda5d830223def1d81", + }, + { + "description": "http span", + "op": "http", + "parent_span_id": "8f5a2b8768cafb4e", + "span_id": "abe79ad9292b90a9", + "start_timestamp": timestamp_format(before_now(minutes=1, milliseconds=200)), + "timestamp": timestamp_format(before_now(minutes=1)), + "trace_id": "ff62a8b040f340bda5d830223def1d81", + }, + { + "description": "db span", + "op": "db", + "parent_span_id": "8f5a2b8768cafb4e", + "span_id": "9c045ea336297177", + "start_timestamp": timestamp_format(before_now(minutes=1, milliseconds=200)), + "timestamp": timestamp_format(before_now(minutes=1)), + "trace_id": "ff62a8b040f340bda5d830223def1d81", + }, + ], + } + + with Feature({"organizations:performance-ops-breakdown": True}): + event = self.post_and_retrieve_event(event_data) + raw_event = event.get_raw_data() + + assert raw_event["spans"] == event_data["spans"] + assert raw_event["breakdowns"] == { + "span_ops": { + "ops.browser": {"value": 200.000048}, + "ops.resource": {"value": 200.000048}, + "ops.http": {"value": 200.000048}, + "ops.db": {"value": 200.000048}, + "total.time": {"value": 1050.000192}, + } + } From a318b5628861f9a9239af4a78a43c91760f572d9 Mon Sep 17 00:00:00 2001 From: "sentry-internal-tools[bot]" <66042841+sentry-internal-tools[bot]@users.noreply.github.com> Date: Wed, 16 Jun 2021 11:32:50 +0000 Subject: [PATCH 4/4] style(lint): Auto commit lint changes --- tests/relay_integration/tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/relay_integration/tests.py b/tests/relay_integration/tests.py index d1ab123ba14333..480e9931437252 100644 --- a/tests/relay_integration/tests.py +++ b/tests/relay_integration/tests.py @@ -3,8 +3,8 @@ from sentry.models.eventattachment import EventAttachment from sentry.testutils import RelayStoreHelper, TransactionTestCase -from sentry.testutils.helpers.datetime import before_now, iso_format, timestamp_format from sentry.testutils.helpers import Feature +from sentry.testutils.helpers.datetime import before_now, iso_format, timestamp_format class SentryRemoteTest(RelayStoreHelper, TransactionTestCase):