From 672d5fe08f2485697d9677daa26adf63ffafa2d1 Mon Sep 17 00:00:00 2001 From: Dhiogo Brustolin Date: Thu, 21 Jul 2022 09:17:11 +0200 Subject: [PATCH 1/2] transaction back --- Sources/Sentry/SentryBaggage.m | 5 +++++ Sources/Sentry/SentryTraceContext.m | 8 ++++++++ Sources/Sentry/include/SentryBaggage.h | 1 + Sources/Sentry/include/SentryTraceContext.h | 6 ++++++ Tests/SentryTests/Helper/SentrySerializationTests.swift | 4 ++-- Tests/SentryTests/Protocol/SentryEnvelopeTests.swift | 2 +- Tests/SentryTests/Transaction/SentryBaggageTests.swift | 6 +++--- Tests/SentryTests/Transaction/SentryTraceStateTests.swift | 3 +++ 8 files changed, 29 insertions(+), 6 deletions(-) diff --git a/Sources/Sentry/SentryBaggage.m b/Sources/Sentry/SentryBaggage.m index 305ca50e76d..1ac7a8fdbb6 100644 --- a/Sources/Sentry/SentryBaggage.m +++ b/Sources/Sentry/SentryBaggage.m @@ -14,6 +14,7 @@ - (instancetype)initWithTraceId:(SentryId *)traceId publicKey:(NSString *)publicKey releaseName:(nullable NSString *)releaseName environment:(nullable NSString *)environment + transaction:(nullable NSString *)transaction userSegment:(nullable NSString *)userSegment sampleRate:(nullable NSString *)sampleRate { @@ -23,6 +24,7 @@ - (instancetype)initWithTraceId:(SentryId *)traceId _publicKey = publicKey; _releaseName = releaseName; _environment = environment; + _transaction = transaction; _userSegment = userSegment; _sampleRate = sampleRate; } @@ -42,6 +44,9 @@ - (NSString *)toHTTPHeader if (_environment != nil) [information setValue:_environment forKey:@"sentry-environment"]; + if (_transaction != nil) + [information setValue:_transaction forKey:@"sentry-transaction"]; + if (_userSegment != nil) [information setValue:_userSegment forKey:@"sentry-user_segment"]; diff --git a/Sources/Sentry/SentryTraceContext.m b/Sources/Sentry/SentryTraceContext.m index 8acc9bbc1d6..8f9425a0097 100644 --- a/Sources/Sentry/SentryTraceContext.m +++ b/Sources/Sentry/SentryTraceContext.m @@ -17,6 +17,7 @@ - (instancetype)initWithTraceId:(SentryId *)traceId publicKey:(NSString *)publicKey releaseName:(nullable NSString *)releaseName environment:(nullable NSString *)environment + transaction:(nullable NSString *)transaction userSegment:(nullable NSString *)userSegment sampleRate:(nullable NSString *)sampleRate { @@ -25,6 +26,7 @@ - (instancetype)initWithTraceId:(SentryId *)traceId _publicKey = publicKey; _environment = environment; _releaseName = releaseName; + _transaction = transaction; _userSegment = userSegment; _sampleRate = sampleRate; } @@ -63,6 +65,7 @@ - (nullable instancetype)initWithTracer:(SentryTracer *)tracer publicKey:options.parsedDsn.url.user releaseName:options.releaseName environment:options.environment + transaction:tracer.name userSegment:userSegment sampleRate:sampleRate]; } @@ -87,6 +90,7 @@ - (nullable instancetype)initWithDict:(NSDictionary *)dictionary publicKey:publicKey releaseName:dictionary[@"release"] environment:dictionary[@"environment"] + transaction:dictionary[@"transaction"] userSegment:userSegment sampleRate:dictionary[@"sample_rate"]]; } @@ -97,6 +101,7 @@ - (SentryBaggage *)toBaggage publicKey:_publicKey releaseName:_releaseName environment:_environment + transaction:_transaction userSegment:_userSegment sampleRate:_sampleRate]; return result; @@ -113,6 +118,9 @@ - (SentryBaggage *)toBaggage if (_environment != nil) [result setValue:_environment forKey:@"environment"]; + if (_transaction != nil) + [result setValue:_transaction forKey:@"transaction"]; + if (_userSegment != nil) [result setValue:_userSegment forKey:@"user_segment"]; diff --git a/Sources/Sentry/include/SentryBaggage.h b/Sources/Sentry/include/SentryBaggage.h index b6c91dc3545..b57001f615f 100644 --- a/Sources/Sentry/include/SentryBaggage.h +++ b/Sources/Sentry/include/SentryBaggage.h @@ -53,6 +53,7 @@ static NSString *const SENTRY_BAGGAGE_HEADER = @"baggage"; publicKey:(NSString *)publicKey releaseName:(nullable NSString *)releaseName environment:(nullable NSString *)environment + transaction:(nullable NSString *)transaction userSegment:(nullable NSString *)userSegment sampleRate:(nullable NSString *)sampleRate; diff --git a/Sources/Sentry/include/SentryTraceContext.h b/Sources/Sentry/include/SentryTraceContext.h index 6c976622f39..818ea29c696 100644 --- a/Sources/Sentry/include/SentryTraceContext.h +++ b/Sources/Sentry/include/SentryTraceContext.h @@ -29,6 +29,11 @@ NS_ASSUME_NONNULL_BEGIN */ @property (nullable, nonatomic, readonly) NSString *environment; +/** + * The transaction name set on the scope. + */ +@property (nullable, nonatomic, readonly) NSString *transaction; + /** * A subset of the scope's user context. */ @@ -46,6 +51,7 @@ NS_ASSUME_NONNULL_BEGIN publicKey:(NSString *)publicKey releaseName:(nullable NSString *)releaseName environment:(nullable NSString *)environment + transaction:(nullable NSString *)transaction userSegment:(nullable NSString *)userSegment sampleRate:(nullable NSString *)sampleRate; diff --git a/Tests/SentryTests/Helper/SentrySerializationTests.swift b/Tests/SentryTests/Helper/SentrySerializationTests.swift index d4e9b345c14..d032d31ecd4 100644 --- a/Tests/SentryTests/Helper/SentrySerializationTests.swift +++ b/Tests/SentryTests/Helper/SentrySerializationTests.swift @@ -4,7 +4,7 @@ class SentrySerializationTests: XCTestCase { private class Fixture { static var invalidData = "hi".data(using: .utf8)! - static var traceContext = SentryTraceContext(trace: SentryId(), publicKey: "PUBLIC_KEY", releaseName: "RELEASE_NAME", environment: "TEST", userSegment: "some segment", sampleRate: "0.25") + static var traceContext = SentryTraceContext(trace: SentryId(), publicKey: "PUBLIC_KEY", releaseName: "RELEASE_NAME", environment: "TEST", transaction: "transaction", userSegment: "some segment", sampleRate: "0.25") } func testSentryEnvelopeSerializer_WithSingleEvent() { @@ -111,7 +111,7 @@ class SentrySerializationTests: XCTestCase { } func testSentryEnvelopeSerializer_TraceStateWithoutUser() { - let trace = SentryTraceContext(trace: SentryId(), publicKey: "PUBLIC_KEY", releaseName: "RELEASE_NAME", environment: "TEST", userSegment: nil, sampleRate: nil) + let trace = SentryTraceContext(trace: SentryId(), publicKey: "PUBLIC_KEY", releaseName: "RELEASE_NAME", environment: "TEST", transaction: "transaction", userSegment: nil, sampleRate: nil) let envelopeHeader = SentryEnvelopeHeader(id: nil, traceContext: trace) let envelope = SentryEnvelope(header: envelopeHeader, singleItem: createItemWithEmptyAttachment()) diff --git a/Tests/SentryTests/Protocol/SentryEnvelopeTests.swift b/Tests/SentryTests/Protocol/SentryEnvelopeTests.swift index 898aafbbd62..b60a20e2545 100644 --- a/Tests/SentryTests/Protocol/SentryEnvelopeTests.swift +++ b/Tests/SentryTests/Protocol/SentryEnvelopeTests.swift @@ -159,7 +159,7 @@ class SentryEnvelopeTests: XCTestCase { func testInitSentryEnvelopeHeader_SetIdAndTraceState() { let eventId = SentryId() - let traceContext = SentryTraceContext(trace: SentryId(), publicKey: "publicKey", releaseName: "releaseName", environment: "environment", userSegment: nil, sampleRate: nil) + let traceContext = SentryTraceContext(trace: SentryId(), publicKey: "publicKey", releaseName: "releaseName", environment: "environment", transaction: "transaction", userSegment: nil, sampleRate: nil) let envelopeHeader = SentryEnvelopeHeader(id: eventId, traceContext: traceContext) XCTAssertEqual(eventId, envelopeHeader.eventId) diff --git a/Tests/SentryTests/Transaction/SentryBaggageTests.swift b/Tests/SentryTests/Transaction/SentryBaggageTests.swift index 0e6dcb4ceb0..ac6789fcd2c 100644 --- a/Tests/SentryTests/Transaction/SentryBaggageTests.swift +++ b/Tests/SentryTests/Transaction/SentryBaggageTests.swift @@ -5,13 +5,13 @@ import XCTest class SentryBaggageTests: XCTestCase { func test_baggageToHeader() { - let header = SentryBaggage(trace: SentryId.empty, publicKey: "publicKey", releaseName: "release name", environment: "teste", userSegment: "test user", sampleRate: "0.49").toHTTPHeader() + let header = SentryBaggage(trace: SentryId.empty, publicKey: "publicKey", releaseName: "release name", environment: "teste", transaction: "transaction", userSegment: "test user", sampleRate: "0.49").toHTTPHeader() - XCTAssertEqual(header, "sentry-environment=teste,sentry-public_key=publicKey,sentry-release=release%20name,sentry-sample_rate=0.49,sentry-trace_id=00000000000000000000000000000000,sentry-user_segment=test%20user") + XCTAssertEqual(header, "sentry-environment=teste,sentry-public_key=publicKey,sentry-release=release%20name,sentry-sample_rate=0.49,sentry-trace_id=00000000000000000000000000000000,sentry-transaction=transaction,sentry-user_segment=test%20user") } func test_baggageToHeader_onlyTrace_ignoreNils() { - let header = SentryBaggage(trace: SentryId.empty, publicKey: "publicKey", releaseName: nil, environment: nil, userSegment: nil, sampleRate: nil).toHTTPHeader() + let header = SentryBaggage(trace: SentryId.empty, publicKey: "publicKey", releaseName: nil, environment: nil, transaction: nil, userSegment: nil, sampleRate: nil).toHTTPHeader() XCTAssertEqual(header, "sentry-public_key=publicKey,sentry-trace_id=00000000000000000000000000000000") } diff --git a/Tests/SentryTests/Transaction/SentryTraceStateTests.swift b/Tests/SentryTests/Transaction/SentryTraceStateTests.swift index 71c911b046c..7ae33f62276 100644 --- a/Tests/SentryTests/Transaction/SentryTraceStateTests.swift +++ b/Tests/SentryTests/Transaction/SentryTraceStateTests.swift @@ -54,6 +54,7 @@ class SentryTraceContextTests: XCTestCase { publicKey: fixture.publicKey, releaseName: fixture.releaseName, environment: fixture.environment, + transaction: fixture.transactionName, userSegment: fixture.userSegment, sampleRate: fixture.sampleRate) @@ -92,6 +93,7 @@ class SentryTraceContextTests: XCTestCase { publicKey: fixture.publicKey, releaseName: fixture.releaseName, environment: fixture.environment, + transaction: fixture.transactionName, userSegment: fixture.userSegment, sampleRate: fixture.sampleRate) @@ -110,6 +112,7 @@ class SentryTraceContextTests: XCTestCase { XCTAssertEqual(traceContext.publicKey, fixture.publicKey) XCTAssertEqual(traceContext.releaseName, fixture.releaseName) XCTAssertEqual(traceContext.environment, fixture.environment) + XCTAssertEqual(traceContext.transaction, fixture.transactionName) XCTAssertEqual(traceContext.userSegment, fixture.userSegment) } From cb3f8f138396388ca101f9ac98733826230d1215 Mon Sep 17 00:00:00 2001 From: Dhiogo Brustolin Date: Thu, 21 Jul 2022 09:20:39 +0200 Subject: [PATCH 2/2] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88b671cc441..40c3c7d374b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Features - Read free_memory when the event is captured, not only at SDK startup (#1962) +- Add transaction to baggage and trace headers (#1992) ### Fixes