From 84c16a3be9f6380bff85b94238552001b5829c6a Mon Sep 17 00:00:00 2001 From: Charles Paul Date: Tue, 12 May 2026 12:38:45 -0700 Subject: [PATCH 1/2] chore(contexts): Remove default-trace-ID option --- CHANGELOG.md | 1 + relay-cabi/src/processing.rs | 1 - relay-dynamic-config/src/feature.rs | 3 --- relay-event-normalization/src/event.rs | 28 +++++++++------------- relay-server/src/processing/utils/event.rs | 1 - relay-ua/uap-core | 2 +- 6 files changed, 13 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d24b61f479..314210c80fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ - Enable compression for forwarded uploads. ([#5965](https://github.com/getsentry/relay/pull/5965)) - Change the default partitioning for the envelope buffer from semantic to round-robin. ([#5967](https://github.com/getsentry/relay/pull/5967)) - Enable retries for upload requests to upstream. ([#5975](https://github.com/getsentry/relay/pull/5975)) +- Unconditionally create a trace context with a trace id for errors. ([#5979](https://github.com/getsentry/relay/pull/5979)) ## 26.4.2 diff --git a/relay-cabi/src/processing.rs b/relay-cabi/src/processing.rs index 94bdb65f6ce..43d443fadcd 100644 --- a/relay-cabi/src/processing.rs +++ b/relay-cabi/src/processing.rs @@ -274,7 +274,6 @@ pub unsafe extern "C" fn relay_store_normalizer_normalize_event( span_allowed_hosts: &[], // only supported in relay span_op_defaults: Default::default(), // only supported in relay performance_issues_spans: Default::default(), - derive_trace_id: Default::default(), }; normalize_event(&mut event, &normalization_config); diff --git a/relay-dynamic-config/src/feature.rs b/relay-dynamic-config/src/feature.rs index 6febf8f625e..15b86392c6e 100644 --- a/relay-dynamic-config/src/feature.rs +++ b/relay-dynamic-config/src/feature.rs @@ -95,9 +95,6 @@ pub enum Feature { /// Upload non-prosperodmp playstation attachments via the upload endpoint. #[serde(rename = "projects:relay-playstation-uploads")] PlaystationUploads, - /// Add a random trace ID to events that lack one. - #[serde(rename = "organizations:relay-default-trace-id")] - AddDefaultTraceID, /// Enable experimental expansion of the unreal report in the endpoint rather than in the /// processor. Only enable for organizations with sufficient attachment quota. #[serde(rename = "organizations:relay-unreal-endpoint-expansion")] diff --git a/relay-event-normalization/src/event.rs b/relay-event-normalization/src/event.rs index 731f270476c..b2a34f5c63d 100644 --- a/relay-event-normalization/src/event.rs +++ b/relay-event-normalization/src/event.rs @@ -23,7 +23,7 @@ use relay_event_schema::protocol::{ AsPair, Attributes, AutoInferSetting, ClientSdkInfo, Context, ContextInner, Contexts, DebugImage, DeviceClass, Event, EventId, EventType, Exception, Headers, IpAddr, Level, LogEntry, Measurement, Measurements, PerformanceScoreContext, ReplayContext, Request, Span, - SpanStatus, SpanV2, Tags, Timestamp, TraceContext, User, VALID_PLATFORMS, + SpanStatus, SpanV2, Tags, Timestamp, TraceContext, TraceId, User, VALID_PLATFORMS, }; use relay_protocol::{ Annotated, Empty, Error, ErrorKind, FiniteF64, FromValue, Getter, Meta, Object, Remark, @@ -168,9 +168,6 @@ pub struct NormalizationConfig<'a> { /// Set a flag to enable performance issue detection on spans. pub performance_issues_spans: bool, - - /// Should add a random trace ID to events that lack one. - pub derive_trace_id: bool, } impl Default for NormalizationConfig<'_> { @@ -205,7 +202,6 @@ impl Default for NormalizationConfig<'_> { span_allowed_hosts: Default::default(), span_op_defaults: Default::default(), performance_issues_spans: Default::default(), - derive_trace_id: Default::default(), } } } @@ -334,7 +330,7 @@ fn normalize(event: &mut Event, meta: &mut Meta, config: &NormalizationConfig) { let event_id = event.id.value().unwrap().0; // Some contexts need to be normalized before metrics extraction takes place. - normalize_contexts(&mut event.contexts, event_id, config); + normalize_contexts(&mut event.contexts, event_id); if config.normalize_spans && event.ty.value() == Some(&EventType::Transaction) { crate::normalize::normalize_app_start_spans(event); @@ -1355,15 +1351,9 @@ fn remove_logger_word(tokens: &mut Vec<&str>) { } /// Normalizes incoming contexts for the downstream metric extraction. -fn normalize_contexts( - contexts: &mut Annotated, - event_id: Uuid, - config: &NormalizationConfig, -) { - if config.derive_trace_id { - // We will always need a TraceContext. - let _ = contexts.get_or_insert_with(Contexts::new); - } +fn normalize_contexts(contexts: &mut Annotated, event_id: Uuid) { + // We will always need a TraceContext. + let _ = contexts.get_or_insert_with(Contexts::new); let _ = processor::apply(contexts, |contexts, _meta| { // Reprocessing context sent from SDKs must not be accepted, it is a Sentry-internal @@ -1374,8 +1364,13 @@ fn normalize_contexts( // We need a TraceId to ingest the event into EAP. // If the event lacks a TraceContext, add a random one. - if config.derive_trace_id && !contexts.contains::() { + if !contexts.contains::() { contexts.add(TraceContext::random(event_id)) + } else { + let trace_ctx = contexts.get_or_default::(); + if trace_ctx.trace_id.0.is_none() { + trace_ctx.trace_id = Annotated::new(TraceId::from(event_id)) + } } for annotated in &mut contexts.0.values_mut() { @@ -4958,7 +4953,6 @@ mod tests { &mut Meta::default(), &NormalizationConfig { performance_score: Some(&performance_score), - derive_trace_id: true, ..Default::default() }, ); diff --git a/relay-server/src/processing/utils/event.rs b/relay-server/src/processing/utils/event.rs index 7c2e63a0ab1..455285dc1ae 100644 --- a/relay-server/src/processing/utils/event.rs +++ b/relay-server/src/processing/utils/event.rs @@ -301,7 +301,6 @@ pub fn normalize( performance_issues_spans: ctx .project_info .has_feature(Feature::PerformanceIssuesSpans), - derive_trace_id: project_info.has_feature(Feature::AddDefaultTraceID), }; metric!(timer(RelayTimers::EventProcessingNormalization), { diff --git a/relay-ua/uap-core b/relay-ua/uap-core index 880683dc600..7388149c18a 160000 --- a/relay-ua/uap-core +++ b/relay-ua/uap-core @@ -1 +1 @@ -Subproject commit 880683dc6000a8a9427ab2b6bd6a7f47109541a8 +Subproject commit 7388149c18ae0b614fc6e49758a2dd331a5b9559 From c02493531768a3214c4ce7a28106978c7bf32ce1 Mon Sep 17 00:00:00 2001 From: Charles Paul Date: Mon, 18 May 2026 10:20:06 -0700 Subject: [PATCH 2/2] tests --- py/CHANGELOG.md | 2 +- py/tests/test_processing.py | 21 +- relay-event-normalization/src/event.rs | 38 +++- .../src/normalize/mod.rs | 192 +++++++++++++++--- ...malize__tests__normalize_logger_empty.snap | 40 +++- ..._tests__normalize_logger_exact_length.snap | 40 +++- ...s__normalize_logger_short_no_trimming.snap | 40 +++- ...normalize_logger_too_long_single_word.snap | 36 +++- ...lize__tests__normalize_logger_trimmed.snap | 36 +++- ...s__normalize_logger_word_leading_dots.snap | 36 +++- ..._normalize_logger_word_trimmed_at_max.snap | 36 +++- ...malize_logger_word_trimmed_before_max.snap | 36 +++- relay-protocol/src/macros.rs | 16 ++ ...test_fixtures__android__pii_stripping.snap | 28 +++ .../test_fixtures__cocoa__pii_stripping.snap | 28 +++ ...test_fixtures__cordova__pii_stripping.snap | 30 +++ .../test_fixtures__dotnet__pii_stripping.snap | 30 +++ ..._legacy_node_exception__pii_stripping.snap | 32 +++ ...ixtures__legacy_python__pii_stripping.snap | 32 +++ ...ixtures__unity_android__pii_stripping.snap | 28 +++ ...st_fixtures__unity_ios__pii_stripping.snap | 28 +++ ..._fixtures__unity_linux__pii_stripping.snap | 28 +++ ..._fixtures__unity_macos__pii_stripping.snap | 28 +++ ...ixtures__unity_windows__pii_stripping.snap | 28 +++ .../test_pii__reponse_context_pii.snap | 32 ++- relay-server/tests/test_fixtures.rs | 4 +- relay-server/tests/test_pii.rs | 4 +- tests/fixtures/extended-event-output.json | 30 +++ tests/integration/test_flags.py | 25 ++- tests/integration/test_minidump.py | 9 + tests/integration/test_normalization.py | 4 +- tests/integration/test_playstation.py | 23 +++ tests/integration/test_security_report.py | 7 + 33 files changed, 960 insertions(+), 67 deletions(-) diff --git a/py/CHANGELOG.md b/py/CHANGELOG.md index 5bf7f44437b..c4414321e32 100644 --- a/py/CHANGELOG.md +++ b/py/CHANGELOG.md @@ -32,7 +32,7 @@ ## 0.9.25 - feat(tracemetric): Add TraceMetricByte datacategory ([#5719](https://github.com/getsentry/relay/pull/5719)) -- **Breaking**: To prevent false positives, non-public email addresses (e.g. `user@localhost`) are no longer scrubbed by default. ([#5737](https://github.com/getsentry/relay/pull/5737)) +- **Breaking**: To prevent false positives, non-public email addresses (e.g. `user@localhost`) are no longer scrubbed by default. ([#5737](https://github.com/getsentry/relay/pull/5737)) ## 0.9.24 diff --git a/py/tests/test_processing.py b/py/tests/test_processing.py index 256fcb7f915..3b517013b0b 100644 --- a/py/tests/test_processing.py +++ b/py/tests/test_processing.py @@ -119,17 +119,20 @@ def test_normalize_user_agent(must_normalize): ) if must_normalize: - assert event["contexts"] == { - "browser": { - "browser": "Firefox 15.0.1", - "name": "Firefox", - "version": "15.0.1", - "type": "browser", - }, - "client_os": {"name": "Ubuntu", "os": "Ubuntu", "type": "os"}, + assert event["contexts"]["browser"] == { + "browser": "Firefox 15.0.1", + "name": "Firefox", + "version": "15.0.1", + "type": "browser", + } + assert event["contexts"]["client_os"] == { + "name": "Ubuntu", + "os": "Ubuntu", + "type": "os", } + assert set(event["contexts"].keys()) == {"browser", "client_os", "trace"} else: - assert "contexts" not in event + assert set(event["contexts"].keys()) == {"trace"} def test_validate_pii_selector(): diff --git a/relay-event-normalization/src/event.rs b/relay-event-normalization/src/event.rs index b2a34f5c63d..06ae1d8866a 100644 --- a/relay-event-normalization/src/event.rs +++ b/relay-event-normalization/src/event.rs @@ -4877,14 +4877,48 @@ mod tests { }, ); - insta::assert_ron_snapshot!(SerializableAnnotated(&event.contexts), {}, @r###" + insta::assert_ron_snapshot!(SerializableAnnotated(&event.contexts), { + ".trace.trace_id" => "[trace-id]", + ".trace.span_id" => "[span-id]" + }, @r#" { "performance_score": { "score_profile_version": "beta", "type": "performancescore", }, + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "exclusive_time": 5000.0, + "type": "trace", + }, + "_meta": { + "trace": { + "span_id": { + "": Meta(Some(MetaInner( + rem: [ + [ + "span_id.missing", + s, + ], + ], + ))), + }, + "trace_id": { + "": Meta(Some(MetaInner( + rem: [ + [ + "trace_id.missing", + s, + ], + ], + ))), + }, + }, + }, } - "###); + "#); insta::assert_ron_snapshot!(SerializableAnnotated(&event.measurements), {}, @r###" { "inp": { diff --git a/relay-event-normalization/src/normalize/mod.rs b/relay-event-normalization/src/normalize/mod.rs index d9937aae002..23ee0d5cdd4 100644 --- a/relay-event-normalization/src/normalize/mod.rs +++ b/relay-event-normalization/src/normalize/mod.rs @@ -411,7 +411,7 @@ mod tests { }; use relay_protocol::{ Annotated, Error, ErrorKind, FromValue, Object, SerializableAnnotated, Value, - assert_annotated_snapshot, get_path, get_value, + assert_redacted_snapshot, get_path, get_value, }; use serde_json::json; use similar_asserts::assert_eq; @@ -821,14 +821,13 @@ mod tests { let event = event.value().unwrap(); - assert_eq!(event.contexts, { - let mut contexts = Contexts::new(); - contexts.add(ReplayContext { + assert_eq!( + event.context::(), + Some(&ReplayContext { replay_id: Annotated::new(EventId(replay_id)), other: Object::default(), - }); - Annotated::new(contexts) - }) + }) + ) } #[test] @@ -1259,9 +1258,10 @@ mod tests { insta::assert_ron_snapshot!(SerializableAnnotated(&event), { ".event_id" => "[event-id]", ".received" => "[received]", - ".timestamp" => "[timestamp]" - }, @r###" - { + ".timestamp" => "[timestamp]", + ".contexts.trace.trace_id" => "[trace-id]", + ".contexts.trace.span_id" => "[span-id]" + }, @r#" { "event_id": "[event-id]", "level": "error", "type": "default", @@ -1272,11 +1272,45 @@ mod tests { "platform": "other", "timestamp": "[timestamp]", "received": "[received]", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace", + }, + }, "grouping_config": { "id": "legacy:1234-12-12", }, + "_meta": { + "contexts": { + "trace": { + "span_id": { + "": Meta(Some(MetaInner( + rem: [ + [ + "span_id.missing", + s, + ], + ], + ))), + }, + "trace_id": { + "": Meta(Some(MetaInner( + rem: [ + [ + "trace_id.missing", + s, + ], + ], + ))), + }, + }, + }, + }, } - "###); + "#); } #[test] @@ -1300,7 +1334,11 @@ mod tests { normalize_event(&mut event, &NormalizationConfig::default()); - assert_json_snapshot!(SerializableAnnotated(&event), {".received" => "[received]"}, @r###" + assert_json_snapshot!(SerializableAnnotated(&event), { + ".received" => "[received]", + ".contexts.trace.trace_id" => "[trace-id]", + ".contexts.trace.span_id" => "[span-id]" + }, @r#" { "event_id": "74ad1301f4df489ead37d757295442b1", "level": "error", @@ -1310,7 +1348,39 @@ mod tests { "platform": "python", "timestamp": 1668148328.308933, "received": "[received]", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + } + }, "_meta": { + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } + }, "logentry": { "": { "err": [ @@ -1332,7 +1402,7 @@ mod tests { } } } - "###) + "#) } #[test] @@ -1360,8 +1430,10 @@ mod tests { normalize_event(&mut event, &NormalizationConfig::default()); insta::assert_ron_snapshot!(SerializableAnnotated(&event), { - ".event_id" => "[event-id]", - }, @r###" + ".event_id" => "[event-id]", + ".contexts.trace.trace_id" => "[trace-id]", + ".contexts.trace.span_id" => "[span-id]" + }, @r#" { "event_id": "[event-id]", "level": "error", @@ -1370,7 +1442,39 @@ mod tests { "platform": "other", "timestamp": 946857600.0, "received": 946857600.0, + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace", + }, + }, "_meta": { + "contexts": { + "trace": { + "span_id": { + "": Meta(Some(MetaInner( + rem: [ + [ + "span_id.missing", + s, + ], + ], + ))), + }, + "trace_id": { + "": Meta(Some(MetaInner( + rem: [ + [ + "trace_id.missing", + s, + ], + ], + ))), + }, + }, + }, "timestamp": { "": Meta(Some(MetaInner( err: [ @@ -1386,7 +1490,7 @@ mod tests { }, }, } - "###); + "#); } #[test] @@ -1414,8 +1518,10 @@ mod tests { normalize_event(&mut event, &NormalizationConfig::default()); insta::assert_ron_snapshot!(SerializableAnnotated(&event), { - ".event_id" => "[event-id]", - }, @r###" + ".event_id" => "[event-id]", + ".contexts.trace.trace_id" => "[trace-id]", + ".contexts.trace.span_id" => "[span-id]" + }, @r#" { "event_id": "[event-id]", "level": "error", @@ -1424,7 +1530,39 @@ mod tests { "platform": "other", "timestamp": 952041600.0, "received": 952041600.0, + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace", + }, + }, "_meta": { + "contexts": { + "trace": { + "span_id": { + "": Meta(Some(MetaInner( + rem: [ + [ + "span_id.missing", + s, + ], + ], + ))), + }, + "trace_id": { + "": Meta(Some(MetaInner( + rem: [ + [ + "trace_id.missing", + s, + ], + ], + ))), + }, + }, + }, "timestamp": { "": Meta(Some(MetaInner( err: [ @@ -1440,7 +1578,7 @@ mod tests { }, }, } - "###); + "#); } #[test] @@ -1455,7 +1593,7 @@ mod tests { ); normalize_event(&mut event, &NormalizationConfig::default()); - assert_annotated_snapshot!(event); + assert_redacted_snapshot!(SerializableAnnotated(&event)); } #[test] @@ -1470,7 +1608,7 @@ mod tests { ); normalize_event(&mut event, &NormalizationConfig::default()); - assert_annotated_snapshot!(event); + assert_redacted_snapshot!(SerializableAnnotated(&event)); } #[test] @@ -1485,7 +1623,7 @@ mod tests { ); normalize_event(&mut event, &NormalizationConfig::default()); - assert_annotated_snapshot!(event); + assert_redacted_snapshot!(SerializableAnnotated(&event)); } #[test] @@ -1500,7 +1638,7 @@ mod tests { ); normalize_event(&mut event, &NormalizationConfig::default()); - assert_annotated_snapshot!(event); + assert_redacted_snapshot!(SerializableAnnotated(&event)); } #[test] @@ -1515,7 +1653,7 @@ mod tests { ); normalize_event(&mut event, &NormalizationConfig::default()); - assert_annotated_snapshot!(event); + assert_redacted_snapshot!(SerializableAnnotated(&event)); } #[test] @@ -1530,7 +1668,7 @@ mod tests { ); normalize_event(&mut event, &NormalizationConfig::default()); - assert_annotated_snapshot!(event); + assert_redacted_snapshot!(SerializableAnnotated(&event)); } #[test] @@ -1547,7 +1685,7 @@ mod tests { ); normalize_event(&mut event, &NormalizationConfig::default()); - assert_annotated_snapshot!(event); + assert_redacted_snapshot!(SerializableAnnotated(&event)); } #[test] @@ -1562,7 +1700,7 @@ mod tests { ); normalize_event(&mut event, &NormalizationConfig::default()); - assert_annotated_snapshot!(event); + assert_redacted_snapshot!(SerializableAnnotated(&event)); } #[test] diff --git a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_empty.snap b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_empty.snap index 502578223a7..f886388397b 100644 --- a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_empty.snap +++ b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_empty.snap @@ -1,11 +1,45 @@ --- source: relay-event-normalization/src/normalize/mod.rs -expression: event +expression: SerializableAnnotated(&event) --- { - "event_id": "7637af36578e4e4592692e28a1d6e2ca", + "event_id": "[event-id]", "level": "error", "type": "default", "logger": "", - "platform": "java" + "platform": "java", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + } + }, + "_meta": { + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } + } + } } diff --git a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_exact_length.snap b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_exact_length.snap index d99b3c03633..f110745032f 100644 --- a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_exact_length.snap +++ b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_exact_length.snap @@ -1,11 +1,45 @@ --- source: relay-event-normalization/src/normalize/mod.rs -expression: event +expression: SerializableAnnotated(&event) --- { - "event_id": "7637af36578e4e4592692e28a1d6e2ca", + "event_id": "[event-id]", "level": "error", "type": "default", "logger": "this_is-exactly-the_max_len.012345678901234567890123456789012345", - "platform": "java" + "platform": "java", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + } + }, + "_meta": { + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } + } + } } diff --git a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_short_no_trimming.snap b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_short_no_trimming.snap index 573990edd36..1a9823916e6 100644 --- a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_short_no_trimming.snap +++ b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_short_no_trimming.snap @@ -1,11 +1,45 @@ --- source: relay-event-normalization/src/normalize/mod.rs -expression: event +expression: SerializableAnnotated(&event) --- { - "event_id": "7637af36578e4e4592692e28a1d6e2ca", + "event_id": "[event-id]", "level": "error", "type": "default", "logger": "my.short-logger.isnt_trimmed", - "platform": "java" + "platform": "java", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + } + }, + "_meta": { + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } + } + } } diff --git a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_too_long_single_word.snap b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_too_long_single_word.snap index 9f3e40ddf34..94aa3e0ffdd 100644 --- a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_too_long_single_word.snap +++ b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_too_long_single_word.snap @@ -1,13 +1,21 @@ --- source: relay-event-normalization/src/normalize/mod.rs -expression: event +expression: SerializableAnnotated(&event) --- { - "event_id": "7637af36578e4e4592692e28a1d6e2ca", + "event_id": "[event-id]", "level": "error", "type": "default", "logger": "*is-way_too_long-and_we_only_have_one_word-so_we_cant_smart_trim", "platform": "java", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + } + }, "_meta": { "": { "rem": [ @@ -19,6 +27,30 @@ expression: event ] ], "len": 68 + }, + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } } } } diff --git a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_trimmed.snap b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_trimmed.snap index 31b107f8429..33103dac1c0 100644 --- a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_trimmed.snap +++ b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_trimmed.snap @@ -1,13 +1,21 @@ --- source: relay-event-normalization/src/normalize/mod.rs -expression: event +expression: SerializableAnnotated(&event) --- { - "event_id": "7637af36578e4e4592692e28a1d6e2ca", + "event_id": "[event-id]", "level": "error", "type": "default", "logger": "", "platform": "java", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + } + }, "_meta": { "": { "rem": [ @@ -19,6 +27,30 @@ expression: event ] ], "len": 8 + }, + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } } } } diff --git a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_leading_dots.snap b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_leading_dots.snap index 406c9bff5ff..9c58444c60a 100644 --- a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_leading_dots.snap +++ b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_leading_dots.snap @@ -1,13 +1,21 @@ --- source: relay-event-normalization/src/normalize/mod.rs -expression: event +expression: SerializableAnnotated(&event) --- { - "event_id": "7637af36578e4e4592692e28a1d6e2ca", + "event_id": "[event-id]", "level": "error", "type": "default", "logger": "*this-tests-the-smart-trimming-and-word-removal-around-dot.words", "platform": "java", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + } + }, "_meta": { "": { "rem": [ @@ -19,6 +27,30 @@ expression: event ] ], "len": 66 + }, + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } } } } diff --git a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_trimmed_at_max.snap b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_trimmed_at_max.snap index bb82ed674eb..2fc14d6b07a 100644 --- a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_trimmed_at_max.snap +++ b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_trimmed_at_max.snap @@ -1,13 +1,21 @@ --- source: relay-event-normalization/src/normalize/mod.rs -expression: event +expression: SerializableAnnotated(&event) --- { - "event_id": "7637af36578e4e4592692e28a1d6e2ca", + "event_id": "[event-id]", "level": "error", "type": "default", "logger": "*.in.this_part-is-kept.this_right_here-is_an-extremely_long_word", "platform": "java", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + } + }, "_meta": { "": { "rem": [ @@ -19,6 +27,30 @@ expression: event ] ], "len": 78 + }, + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } } } } diff --git a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_trimmed_before_max.snap b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_trimmed_before_max.snap index 42d29ac2ea9..ac2a90e9dc8 100644 --- a/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_trimmed_before_max.snap +++ b/relay-event-normalization/src/normalize/snapshots/relay_event_normalization__normalize__tests__normalize_logger_word_trimmed_before_max.snap @@ -1,13 +1,21 @@ --- source: relay-event-normalization/src/normalize/mod.rs -expression: event +expression: SerializableAnnotated(&event) --- { - "event_id": "7637af36578e4e4592692e28a1d6e2ca", + "event_id": "[event-id]", "level": "error", "type": "default", "logger": "*.this_part-is-kept.this_right_here-is_a-very_long_word", "platform": "java", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + } + }, "_meta": { "": { "rem": [ @@ -19,6 +27,30 @@ expression: event ] ], "len": 87 + }, + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } } } } diff --git a/relay-protocol/src/macros.rs b/relay-protocol/src/macros.rs index 06d691b9832..3d3e0e8c218 100644 --- a/relay-protocol/src/macros.rs +++ b/relay-protocol/src/macros.rs @@ -251,6 +251,22 @@ macro_rules! assert_annotated_snapshot { }; } +/// Asserts the snapshot of annotated contexts with common redactions +#[cfg(feature = "test")] +#[macro_export] +macro_rules! assert_redacted_snapshot { + ($($arg:tt)*) => { + ::insta::assert_json_snapshot!( + $($arg)*, + { + ".event_id" => "[event-id]", + ".contexts.trace.trace_id" => "[trace-id]", + ".contexts.trace.span_id" => "[span-id]" + } + ) + }; +} + #[cfg(test)] mod tests { use similar_asserts::assert_eq; diff --git a/relay-server/tests/snapshots/test_fixtures__android__pii_stripping.snap b/relay-server/tests/snapshots/test_fixtures__android__pii_stripping.snap index 13815a3d1a0..57c6c8b3d47 100644 --- a/relay-server/tests/snapshots/test_fixtures__android__pii_stripping.snap +++ b/relay-server/tests/snapshots/test_fixtures__android__pii_stripping.snap @@ -60,6 +60,12 @@ expression: SerializableAnnotated(& event) "kernel_version": "Linux version 3.10.0+ (bjoernj@bjoernj.mtv.corp.google.com) (gcc version 4.9.x 20150123 (prerelease) (GCC) ) #256 SMP PREEMPT Fri May 19 11:58:12 PDT 2017", "rooted": true, "type": "os" + }, + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" } }, "exception": { @@ -734,6 +740,28 @@ expression: SerializableAnnotated(& event) ] } } + }, + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } } } } diff --git a/relay-server/tests/snapshots/test_fixtures__cocoa__pii_stripping.snap b/relay-server/tests/snapshots/test_fixtures__cocoa__pii_stripping.snap index 92446733ac7..759f60dd948 100644 --- a/relay-server/tests/snapshots/test_fixtures__cocoa__pii_stripping.snap +++ b/relay-server/tests/snapshots/test_fixtures__cocoa__pii_stripping.snap @@ -50,6 +50,12 @@ expression: SerializableAnnotated(& event) "kernel_version": "Darwin Kernel Version 17.6.0: Tue May 8 15:22:16 PDT 2018; root:xnu-4570.61.1~1/RELEASE_X86_64", "rooted": false, "type": "os" + }, + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" } }, "breadcrumbs": { @@ -2265,6 +2271,28 @@ expression: SerializableAnnotated(& event) ] } } + }, + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } } }, "threads": { diff --git a/relay-server/tests/snapshots/test_fixtures__cordova__pii_stripping.snap b/relay-server/tests/snapshots/test_fixtures__cordova__pii_stripping.snap index 9b3a6b392dd..a273c7a4d1c 100644 --- a/relay-server/tests/snapshots/test_fixtures__cordova__pii_stripping.snap +++ b/relay-server/tests/snapshots/test_fixtures__cordova__pii_stripping.snap @@ -55,6 +55,12 @@ expression: SerializableAnnotated(& event) "name": "Electron", "version": "2.0.2", "type": "runtime" + }, + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" } }, "breadcrumbs": { @@ -273,6 +279,30 @@ expression: SerializableAnnotated(& event) ] }, "_meta": { + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } + }, "exception": { "values": { "0": { diff --git a/relay-server/tests/snapshots/test_fixtures__dotnet__pii_stripping.snap b/relay-server/tests/snapshots/test_fixtures__dotnet__pii_stripping.snap index e787c892e70..1b3b677a1d0 100644 --- a/relay-server/tests/snapshots/test_fixtures__dotnet__pii_stripping.snap +++ b/relay-server/tests/snapshots/test_fixtures__dotnet__pii_stripping.snap @@ -311,6 +311,12 @@ expression: SerializableAnnotated(& event) "version": "2.0.7", "raw_description": ".NET Core 4.6.26328.01", "type": "runtime" + }, + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" } }, "breadcrumbs": { @@ -842,6 +848,30 @@ expression: SerializableAnnotated(& event) } } }, + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } + }, "exception": { "values": { "0": { diff --git a/relay-server/tests/snapshots/test_fixtures__legacy_node_exception__pii_stripping.snap b/relay-server/tests/snapshots/test_fixtures__legacy_node_exception__pii_stripping.snap index 31ebad00efc..8a6e3a2b2d6 100644 --- a/relay-server/tests/snapshots/test_fixtures__legacy_node_exception__pii_stripping.snap +++ b/relay-server/tests/snapshots/test_fixtures__legacy_node_exception__pii_stripping.snap @@ -73,6 +73,14 @@ expression: SerializableAnnotated(& event) "received": "[received]", "release": "randomRelease", "environment": "development", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + } + }, "exception": { "values": [ { @@ -230,6 +238,30 @@ expression: SerializableAnnotated(& event) } }, "_meta": { + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } + }, "exception": { "values": { "0": { diff --git a/relay-server/tests/snapshots/test_fixtures__legacy_python__pii_stripping.snap b/relay-server/tests/snapshots/test_fixtures__legacy_python__pii_stripping.snap index b386383fd89..ac8daa79534 100644 --- a/relay-server/tests/snapshots/test_fixtures__legacy_python__pii_stripping.snap +++ b/relay-server/tests/snapshots/test_fixtures__legacy_python__pii_stripping.snap @@ -16,6 +16,14 @@ expression: SerializableAnnotated(& event) "platform": "python", "timestamp": "[timestamp]", "received": "[received]", + "contexts": { + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + } + }, "exception": { "values": [ { @@ -63,6 +71,30 @@ expression: SerializableAnnotated(& event) "version": "6.9.0" }, "_meta": { + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } + }, "tags": { "0": { "1": { diff --git a/relay-server/tests/snapshots/test_fixtures__unity_android__pii_stripping.snap b/relay-server/tests/snapshots/test_fixtures__unity_android__pii_stripping.snap index 054120ca876..ba9c34478c5 100644 --- a/relay-server/tests/snapshots/test_fixtures__unity_android__pii_stripping.snap +++ b/relay-server/tests/snapshots/test_fixtures__unity_android__pii_stripping.snap @@ -181,6 +181,12 @@ expression: SerializableAnnotated(& event) "raw_description": "Mono 5.11.0 ((HEAD/e2385dca346)", "type": "runtime" }, + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + }, "unity": { "install_mode": "Editor", "type": "unity" @@ -331,6 +337,28 @@ expression: SerializableAnnotated(& event) ] } } + }, + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } } }, "exception": { diff --git a/relay-server/tests/snapshots/test_fixtures__unity_ios__pii_stripping.snap b/relay-server/tests/snapshots/test_fixtures__unity_ios__pii_stripping.snap index 054120ca876..ba9c34478c5 100644 --- a/relay-server/tests/snapshots/test_fixtures__unity_ios__pii_stripping.snap +++ b/relay-server/tests/snapshots/test_fixtures__unity_ios__pii_stripping.snap @@ -181,6 +181,12 @@ expression: SerializableAnnotated(& event) "raw_description": "Mono 5.11.0 ((HEAD/e2385dca346)", "type": "runtime" }, + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + }, "unity": { "install_mode": "Editor", "type": "unity" @@ -331,6 +337,28 @@ expression: SerializableAnnotated(& event) ] } } + }, + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } } }, "exception": { diff --git a/relay-server/tests/snapshots/test_fixtures__unity_linux__pii_stripping.snap b/relay-server/tests/snapshots/test_fixtures__unity_linux__pii_stripping.snap index 054120ca876..ba9c34478c5 100644 --- a/relay-server/tests/snapshots/test_fixtures__unity_linux__pii_stripping.snap +++ b/relay-server/tests/snapshots/test_fixtures__unity_linux__pii_stripping.snap @@ -181,6 +181,12 @@ expression: SerializableAnnotated(& event) "raw_description": "Mono 5.11.0 ((HEAD/e2385dca346)", "type": "runtime" }, + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + }, "unity": { "install_mode": "Editor", "type": "unity" @@ -331,6 +337,28 @@ expression: SerializableAnnotated(& event) ] } } + }, + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } } }, "exception": { diff --git a/relay-server/tests/snapshots/test_fixtures__unity_macos__pii_stripping.snap b/relay-server/tests/snapshots/test_fixtures__unity_macos__pii_stripping.snap index 054120ca876..ba9c34478c5 100644 --- a/relay-server/tests/snapshots/test_fixtures__unity_macos__pii_stripping.snap +++ b/relay-server/tests/snapshots/test_fixtures__unity_macos__pii_stripping.snap @@ -181,6 +181,12 @@ expression: SerializableAnnotated(& event) "raw_description": "Mono 5.11.0 ((HEAD/e2385dca346)", "type": "runtime" }, + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + }, "unity": { "install_mode": "Editor", "type": "unity" @@ -331,6 +337,28 @@ expression: SerializableAnnotated(& event) ] } } + }, + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } } }, "exception": { diff --git a/relay-server/tests/snapshots/test_fixtures__unity_windows__pii_stripping.snap b/relay-server/tests/snapshots/test_fixtures__unity_windows__pii_stripping.snap index b831228d218..fe6a0f86c72 100644 --- a/relay-server/tests/snapshots/test_fixtures__unity_windows__pii_stripping.snap +++ b/relay-server/tests/snapshots/test_fixtures__unity_windows__pii_stripping.snap @@ -179,6 +179,12 @@ expression: SerializableAnnotated(& event) "raw_description": "Mono 5.11.0 (Visual Studio built mono)", "type": "runtime" }, + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" + }, "unity": { "install_mode": "Editor", "type": "unity" @@ -333,6 +339,28 @@ expression: SerializableAnnotated(& event) ] } } + }, + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } } } } diff --git a/relay-server/tests/snapshots/test_pii__reponse_context_pii.snap b/relay-server/tests/snapshots/test_pii__reponse_context_pii.snap index 6199ae1917b..af272ce1750 100644 --- a/relay-server/tests/snapshots/test_pii__reponse_context_pii.snap +++ b/relay-server/tests/snapshots/test_pii__reponse_context_pii.snap @@ -1,9 +1,9 @@ --- source: relay-server/tests/test_pii.rs -expression: data +expression: SerializableAnnotated(&data) --- { - "event_id": "7b9e89cf79ee451986112e0425fa9fd4", + "event_id": "[event-id]", "level": "error", "type": "default", "logger": "", @@ -32,6 +32,12 @@ expression: data ], "status_code": 200, "type": "response" + }, + "trace": { + "trace_id": "[trace-id]", + "span_id": "[span-id]", + "status": "unknown", + "type": "trace" } }, "_meta": { @@ -86,6 +92,28 @@ expression: data } } } + }, + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } } } } diff --git a/relay-server/tests/test_fixtures.rs b/relay-server/tests/test_fixtures.rs index 0f0c4e3d0aa..8d789ef5fc7 100644 --- a/relay-server/tests/test_fixtures.rs +++ b/relay-server/tests/test_fixtures.rs @@ -85,7 +85,9 @@ macro_rules! event_snapshot { process_value(&mut event, &mut processor, ProcessingState::root()).unwrap(); insta::assert_json_snapshot!("pii_stripping", SerializableAnnotated(&event), { ".received" => "[received]", - ".timestamp" => "[timestamp]" + ".timestamp" => "[timestamp]", + ".contexts.trace.trace_id" => "[trace-id]", + ".contexts.trace.span_id" => "[span-id]", }); } } diff --git a/relay-server/tests/test_pii.rs b/relay-server/tests/test_pii.rs index 1475a270c92..82c0fbbd67c 100644 --- a/relay-server/tests/test_pii.rs +++ b/relay-server/tests/test_pii.rs @@ -2,7 +2,7 @@ use relay_event_normalization::{NormalizationConfig, normalize_event}; use relay_event_schema::processor::{self, ProcessingState}; use relay_event_schema::protocol::Event; use relay_pii::{DataScrubbingConfig, PiiProcessor}; -use relay_protocol::{FromValue, assert_annotated_snapshot}; +use relay_protocol::{FromValue, SerializableAnnotated, assert_redacted_snapshot}; #[test] fn test_reponse_context_pii() { @@ -37,5 +37,5 @@ fn test_reponse_context_pii() { let pii_config = ds_config.pii_config().as_ref().unwrap(); let mut pii_processor = PiiProcessor::new(pii_config.compiled()); processor::process_value(&mut data, &mut pii_processor, ProcessingState::root()).unwrap(); - assert_annotated_snapshot!(data); + assert_redacted_snapshot!(SerializableAnnotated(&data)); } diff --git a/tests/fixtures/extended-event-output.json b/tests/fixtures/extended-event-output.json index 818a02f9c68..6b553c1a845 100644 --- a/tests/fixtures/extended-event-output.json +++ b/tests/fixtures/extended-event-output.json @@ -80,6 +80,12 @@ "name": "Python Requests", "version": "2.26", "type": "browser" + }, + "trace": { + "span_id": "0fcbe8ac2d324ff1", + "status": "unknown", + "trace_id": "d7b6fd5dace9497e916ba39114bd97d5", + "type": "trace" } }, "exception": { @@ -179,6 +185,30 @@ }, "location": null, "_meta": { + "contexts": { + "trace": { + "span_id": { + "": { + "rem": [ + [ + "span_id.missing", + "s" + ] + ] + } + }, + "trace_id": { + "": { + "rem": [ + [ + "trace_id.missing", + "s" + ] + ] + } + } + } + }, "location": { "": { "err": [ diff --git a/tests/integration/test_flags.py b/tests/integration/test_flags.py index 9f09ab51521..10a0a17bfed 100644 --- a/tests/integration/test_flags.py +++ b/tests/integration/test_flags.py @@ -1,4 +1,5 @@ import uuid +from unittest import mock from sentry_sdk.envelope import Envelope, Item, PayloadRef @@ -37,7 +38,13 @@ def test_event_with_flags(relay, mini_sentry): "values": [{"flag": "hello", "result": "world", "key": "value"}], "abc": "def", "type": "flags", - } + }, + "trace": { + "span_id": mock.ANY, + "trace_id": mock.ANY, + "status": "unknown", + "type": "trace", + }, } assert mini_sentry.captured_envelopes.empty() @@ -66,7 +73,13 @@ def test_event_with_flags_malformed(relay, mini_sentry): envelope = mini_sentry.get_captured_envelope() assert envelope assert envelope.items[0].payload.json["contexts"] == { - "flags": {"values": None, "key": "value", "type": "flags"} + "flags": {"values": None, "key": "value", "type": "flags"}, + "trace": { + "span_id": mock.ANY, + "trace_id": mock.ANY, + "status": "unknown", + "type": "trace", + }, } assert mini_sentry.captured_envelopes.empty() @@ -101,6 +114,12 @@ def test_event_with_flags_malformed_inner_object(relay, mini_sentry): envelope = mini_sentry.get_captured_envelope() assert envelope assert envelope.items[0].payload.json["contexts"] == { - "flags": {"values": [{"flag": None, "key": "key"}, None], "type": "flags"} + "flags": {"values": [{"flag": None, "key": "key"}, None], "type": "flags"}, + "trace": { + "span_id": mock.ANY, + "trace_id": mock.ANY, + "status": "unknown", + "type": "trace", + }, } assert mini_sentry.captured_envelopes.empty() diff --git a/tests/integration/test_minidump.py b/tests/integration/test_minidump.py index 686bd4290bb..7132ed3c027 100644 --- a/tests/integration/test_minidump.py +++ b/tests/integration/test_minidump.py @@ -839,10 +839,19 @@ def test_minidump_placeholder( event, message = attachments_consumer.get_event() assert event == { + "_meta": mock.ANY, "_metrics": { "bytes.ingested.event.minidump": len(minidump_data), }, "event_id": "515539018c9b4260a6f999572f1661ee", + "contexts": { + "trace": { + "trace_id": mock.ANY, + "span_id": mock.ANY, + "status": "unknown", + "type": "trace", + }, + }, "exception": { "values": [ { diff --git a/tests/integration/test_normalization.py b/tests/integration/test_normalization.py index 81361dfd093..41d360147e2 100644 --- a/tests/integration/test_normalization.py +++ b/tests/integration/test_normalization.py @@ -25,9 +25,11 @@ def get_test_data(name): def drop_props(payload): - props = ["timestamp", "received", "ingest_path", "_metrics"] + props = ["timestamp", "received", "ingest_path", "_metrics", "_meta"] for prop in props: payload.pop(prop, None) + if payload.get("contexts", {}).get("trace"): + payload["contexts"].pop("trace", None) return payload diff --git a/tests/integration/test_playstation.py b/tests/integration/test_playstation.py index 771f0e7bb79..930bc478683 100644 --- a/tests/integration/test_playstation.py +++ b/tests/integration/test_playstation.py @@ -147,6 +147,12 @@ def playstation_event_json(sdk=mock.ANY): "version": "9.20.00.05-00.00.00.0.1", "type": "runtime", }, + "trace": { + "span_id": mock.ANY, + "trace_id": mock.ANY, + "status": "unknown", + "type": "trace", + }, }, "exception": { "values": [ @@ -177,6 +183,14 @@ def playstation_event_json(sdk=mock.ANY): "project": 42, "grouping_config": mock.ANY, "_metrics": mock.ANY, + "_meta": { + "contexts": { + "trace": { + "span_id": {"": {"rem": [["span_id.missing", "s"]]}}, + "trace_id": {"": {"rem": [["trace_id.missing", "s"]]}}, + } + } + }, } @@ -772,6 +786,14 @@ def test_playstation_attachment_no_feature_flag( assert payload == { "event_id": mock.ANY, + "contexts": { + "trace": { + "trace_id": mock.ANY, + "span_id": mock.ANY, + "status": "unknown", + "type": "trace", + }, + }, "level": "error", "version": "5", "type": "error", @@ -790,6 +812,7 @@ def test_playstation_attachment_no_feature_flag( "_metrics": { "bytes.ingested.event": 137, }, + "_meta": mock.ANY, } assert event["attachments"] == ( diff --git a/tests/integration/test_security_report.py b/tests/integration/test_security_report.py index 56dab5ad79e..58ff177bbff 100644 --- a/tests/integration/test_security_report.py +++ b/tests/integration/test_security_report.py @@ -95,6 +95,8 @@ def test_security_report_with_processing( expected_evt = fixture_provider.load(test_name, ext) event.pop("_metrics", None) + event.pop("_meta", None) + event.get("contexts", {}).pop("trace", None) assert event == expected_evt @@ -282,6 +284,11 @@ def test_security_report(mini_sentry, relay, test_case, json_fixture_provider): if "timestamp" in event: event.pop("timestamp") + if "_meta" in event: + event.pop("_meta") + + event.get("contexts", {}).pop("trace", None) + assert event == expected_evt