From 5d4b391e2928b643a5522fbb4fa6cea649cb2767 Mon Sep 17 00:00:00 2001 From: Maxime Epain Date: Tue, 25 Apr 2023 13:57:51 +0200 Subject: [PATCH 1/3] RUMM-3239 Fix RUM context in Logs --- Sources/Datadog/Logging/RemoteLogger.swift | 4 +- Tests/DatadogTests/Datadog/LoggerTests.swift | 47 +++++++++++++------- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/Sources/Datadog/Logging/RemoteLogger.swift b/Sources/Datadog/Logging/RemoteLogger.swift index 72810b1f33..bf1f519492 100644 --- a/Sources/Datadog/Logging/RemoteLogger.swift +++ b/Sources/Datadog/Logging/RemoteLogger.swift @@ -125,8 +125,8 @@ internal final class RemoteLogger: LoggerProtocol { var internalAttributes: [String: Encodable] = [:] let contextAttributes = context.featuresAttributes - if self.rumContextIntegration, let attributes: [String: String] = contextAttributes["rum"]?.ids { - let attributes = attributes.compactMapValues(AnyEncodable.init) + if self.rumContextIntegration, let attributes: [String: AnyCodable?] = contextAttributes["rum"]?.ids { + let attributes = attributes.compactMapValues { $0 } internalAttributes.merge(attributes) { $1 } } diff --git a/Tests/DatadogTests/Datadog/LoggerTests.swift b/Tests/DatadogTests/Datadog/LoggerTests.swift index f6b2cc123a..ddf08eefe0 100644 --- a/Tests/DatadogTests/Datadog/LoggerTests.swift +++ b/Tests/DatadogTests/Datadog/LoggerTests.swift @@ -551,28 +551,41 @@ class LoggerTests: XCTestCase { // given let logger = Logger.builder.build(in: core) Global.rum = RUMMonitor.initialize(in: core) - Global.rum.startView(viewController: mockView) - Global.rum.startUserAction(type: .tap, name: .mockAny()) defer { Global.rum = DDNoopRUMMonitor() } // when - logger.info("info message") + Global.rum.startView(viewController: mockView) + logger.info("message 0") + Global.rum.startUserAction(type: .tap, name: .mockAny()) + logger.info("message 1") // then - let logMatcher = try core.waitAndReturnLogMatchers()[0] - logMatcher.assertValue( - forKeyPath: RUMContextAttributes.IDs.applicationID, - equals: rum.configuration.applicationID - ) - logMatcher.assertValue( - forKeyPath: RUMContextAttributes.IDs.sessionID, - isTypeOf: String.self - ) - logMatcher.assertValue( - forKeyPath: RUMContextAttributes.IDs.viewID, - isTypeOf: String.self - ) - logMatcher.assertValue( + let logMatchers = try core.waitAndReturnLogMatchers() + XCTAssertEqual(logMatchers.count, 2) + + logMatchers.forEach { + $0.assertValue( + forKeyPath: RUMContextAttributes.IDs.applicationID, + equals: rum.configuration.applicationID + ) + } + logMatchers.forEach { + $0.assertValue( + forKeyPath: RUMContextAttributes.IDs.sessionID, + isTypeOf: String.self + ) + } + + logMatchers.forEach { + $0.assertValue( + forKeyPath: RUMContextAttributes.IDs.viewID, + isTypeOf: String.self + ) + } + + logMatchers.first?.assertNoValue(forKeyPath: RUMContextAttributes.IDs.userActionID) + + logMatchers.last?.assertValue( forKeyPath: RUMContextAttributes.IDs.userActionID, isTypeOf: String.self ) From 35f40b3cfd246da8feda5a784e6bcde11c820fee Mon Sep 17 00:00:00 2001 From: Maxime Epain Date: Tue, 25 Apr 2023 14:02:08 +0200 Subject: [PATCH 2/3] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 476dfdaedb..04547f744d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Unreleased +- [BUGFIX] Fix RUM context not being attached to log when no user action exists. See [#1264][] + # 1.18.0 / 19-04-2023 - [IMPROVEMENT] Add start reason to the session. See [#1247][] - [IMPROVEMENT] Add ability to stop the session. See [#1219][] @@ -452,6 +454,7 @@ [#1219]: https://github.com/DataDog/dd-sdk-ios/pull/1219 [#1220]: https://github.com/DataDog/dd-sdk-ios/pull/1220 [#1247]: https://github.com/DataDog/dd-sdk-ios/pull/1247 +[#1264]: https://github.com/DataDog/dd-sdk-ios/pull/1264 [@00fa9a]: https://github.com/00FA9A [@britton-earnin]: https://github.com/Britton-Earnin [@hengyu]: https://github.com/Hengyu From 660aa75d95c39cf8ed34e33740685fdeaf0c0a68 Mon Sep 17 00:00:00 2001 From: Maxime Epain Date: Tue, 25 Apr 2023 17:55:11 +0200 Subject: [PATCH 3/3] Update LoggerTests.swift --- Tests/DatadogTests/Datadog/LoggerTests.swift | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Tests/DatadogTests/Datadog/LoggerTests.swift b/Tests/DatadogTests/Datadog/LoggerTests.swift index ddf08eefe0..70bbaaaf07 100644 --- a/Tests/DatadogTests/Datadog/LoggerTests.swift +++ b/Tests/DatadogTests/Datadog/LoggerTests.swift @@ -568,15 +568,12 @@ class LoggerTests: XCTestCase { forKeyPath: RUMContextAttributes.IDs.applicationID, equals: rum.configuration.applicationID ) - } - logMatchers.forEach { + $0.assertValue( forKeyPath: RUMContextAttributes.IDs.sessionID, isTypeOf: String.self ) - } - logMatchers.forEach { $0.assertValue( forKeyPath: RUMContextAttributes.IDs.viewID, isTypeOf: String.self