Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 14 additions & 22 deletions Datadog/Datadog.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import XCTest
import TestUtilities
import DatadogInternal
@testable import DatadogRUM
@testable import DatadogObjc

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import XCTest
import TestUtilities
import DatadogInternal
@testable import DatadogRUM
@testable import DatadogCore
@testable import DatadogObjc
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,11 @@
* Copyright 2019-Present Datadog, Inc.
*/

import DatadogInternal

// This file was generated from JSON Schema. Do not modify it directly.

// swiftlint:disable all

internal protocol RUMDataModel: Codable {}
public protocol RUMDataModel: Codable {}

/// Schema of all properties of an Action event
public struct RUMActionEvent: RUMDataModel {
Expand Down
2 changes: 1 addition & 1 deletion DatadogObjc/Sources/RUM/RUMDataModels+objc.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*/

import Foundation
import DatadogRUM
import DatadogInternal

// This file was generated from JSON Schema. Do not modify it directly.

Expand Down
5 changes: 5 additions & 0 deletions DatadogRUM/Sources/RUMConfiguration.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ import DatadogInternal
@_exported import protocol DatadogInternal.__URLSessionDelegateProviding
@_exported import enum DatadogInternal.URLSessionInstrumentation
@_exported import enum DatadogInternal.TraceContextInjection
@_exported import struct DatadogInternal.RUMViewEvent
@_exported import struct DatadogInternal.RUMResourceEvent
@_exported import struct DatadogInternal.RUMErrorEvent
@_exported import struct DatadogInternal.RUMActionEvent
@_exported import struct DatadogInternal.RUMLongTaskEvent
// swiftlint:enable duplicate_imports

extension RUM {
Expand Down
1 change: 1 addition & 0 deletions DatadogRUM/Sources/RUMContext/RUMContext.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
*/

import Foundation
import DatadogInternal

internal struct RUMContext {
/// The ID of RUM application.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@ class WatchdogTerminationReporterMock: WatchdogTerminationReporting {
self.didSend = didSend
}

func send(date: Date?, state: DatadogRUM.WatchdogTerminationAppState, viewEvent: DatadogRUM.RUMViewEvent) {
func send(date: Date?, state: DatadogRUM.WatchdogTerminationAppState, viewEvent: DatadogInternal.RUMViewEvent) {
sendParams = SendParams(date: date, state: state, viewEvent: viewEvent)
didSend.fulfill()
}

struct SendParams {
let date: Date?
let state: DatadogRUM.WatchdogTerminationAppState
let viewEvent: DatadogRUM.RUMViewEvent
let viewEvent: DatadogInternal.RUMViewEvent
}
}

Expand Down
13 changes: 4 additions & 9 deletions DatadogRUM/Tests/RUMEvent/RUMEventBuilderTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@

import XCTest
import TestUtilities
import DatadogInternal
@testable import DatadogRUM

class RUMEventBuilderTests: XCTestCase {
func testGivenEventBuilderWithEventMapper_whenEventIsModified_itBuildsModifiedEvent() throws {
let builder = RUMEventBuilder(
eventsMapper: .mockWith(
viewEventMapper: { viewEvent in
return RUMViewEvent.mockRandom()
}
viewEventMapper: { _ in.mockRandom() }
)
)
let originalEventModel = RUMViewEvent.mockRandom()
Expand All @@ -28,9 +27,7 @@ class RUMEventBuilderTests: XCTestCase {
func testGivenEventBuilderWithEventMapper_whenEventIsDropped_itBuildsNoEvent() {
let builder = RUMEventBuilder(
eventsMapper: .mockWith(
resourceEventMapper: { event in
return nil
}
resourceEventMapper: { _ in nil }
)
)
let event = builder.build(from: RUMResourceEvent.mockRandom())
Expand All @@ -40,9 +37,7 @@ class RUMEventBuilderTests: XCTestCase {
func testGivenEventBuilderWithNoEventMapper_whenBuildingAnEvent_itBuildsEventWithOriginalModel() throws {
let builder = RUMEventBuilder(
eventsMapper: .mockWith(
resourceEventMapper: { event in
return event
}
resourceEventMapper: { $0 }
)
)
let originalEventModel = RUMResourceEvent.mockRandom()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class SessionEndedMetricControllerTests: XCTestCase {
controller.startMetric(sessionID: sessionID, precondition: .mockRandom(), context: .mockRandom(), tracksBackgroundEvents: .mockRandom())

// When
viewIDs.forEach { controller.track(view: .mockRandomWith(sessionID: sessionID, viewID: $0), instrumentationType: nil, in: sessionID) }
viewIDs.forEach { controller.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: $0), instrumentationType: nil, in: sessionID) }
errorKinds.forEach { controller.track(sdkErrorKind: $0, in: sessionID) }
controller.track(missedEventType: .action, in: sessionID)
controller.trackWasStopped(sessionID: sessionID)
Expand All @@ -47,7 +47,7 @@ class SessionEndedMetricControllerTests: XCTestCase {
controller.startMetric(sessionID: sessionID1, precondition: .mockRandom(), context: .mockRandom(), tracksBackgroundEvents: .mockRandom())
controller.startMetric(sessionID: sessionID2, precondition: .mockRandom(), context: .mockRandom(), tracksBackgroundEvents: .mockRandom())
// Session 1:
controller.track(view: .mockRandomWith(sessionID: sessionID1), instrumentationType: nil, in: sessionID1)
controller.track(view: .mockRandomWith(sessionID: sessionID1.rawValue), instrumentationType: nil, in: sessionID1)
controller.track(sdkErrorKind: "error.kind1", in: sessionID1)
controller.trackWasStopped(sessionID: sessionID1)
// Session 2:
Expand Down Expand Up @@ -79,7 +79,7 @@ class SessionEndedMetricControllerTests: XCTestCase {
controller.startMetric(sessionID: sessionID1, precondition: .mockRandom(), context: .mockRandom(), tracksBackgroundEvents: .mockRandom())
controller.startMetric(sessionID: sessionID2, precondition: .mockRandom(), context: .mockRandom(), tracksBackgroundEvents: .mockRandom())
// Track latest session (`sessionID: nil`)
controller.track(view: .mockRandomWith(sessionID: sessionID2), instrumentationType: nil, in: nil)
controller.track(view: .mockRandomWith(sessionID: sessionID2.rawValue), instrumentationType: nil, in: nil)
controller.track(sdkErrorKind: "error.kind1", in: nil)
controller.track(missedEventType: .resource, in: nil)
controller.trackWasStopped(sessionID: nil)
Expand Down
62 changes: 31 additions & 31 deletions DatadogRUM/Tests/SDKMetrics/SessionEndedMetricTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ class SessionEndedMetricTests: XCTestCase {
func testComputingDurationFromSingleView() throws {
// Given
let metric = SessionEndedMetric.with(sessionID: sessionID)
let view: RUMViewEvent = .mockRandomWith(sessionID: sessionID)
let view: RUMViewEvent = .mockRandomWith(sessionID: sessionID.rawValue)

// When
try metric.track(view: view, instrumentationType: nil)
Expand All @@ -132,9 +132,9 @@ class SessionEndedMetricTests: XCTestCase {
func testComputingDurationFromMultipleViews() throws {
// Given
let metric = SessionEndedMetric.with(sessionID: sessionID)
let view1: RUMViewEvent = .mockRandomWith(sessionID: sessionID, date: 10.s2ms, viewTimeSpent: 10.s2ns)
let view2: RUMViewEvent = .mockRandomWith(sessionID: sessionID, date: 10.s2ms + 10.s2ms, viewTimeSpent: 20.s2ns)
let view3: RUMViewEvent = .mockRandomWith(sessionID: sessionID, date: 10.s2ms + 10.s2ms + 20.s2ms, viewTimeSpent: 50.s2ns)
let view1: RUMViewEvent = .mockRandomWith(sessionID: sessionID.rawValue, date: 10.s2ms, viewTimeSpent: 10.s2ns)
let view2: RUMViewEvent = .mockRandomWith(sessionID: sessionID.rawValue, date: 10.s2ms + 10.s2ms, viewTimeSpent: 20.s2ns)
let view3: RUMViewEvent = .mockRandomWith(sessionID: sessionID.rawValue, date: 10.s2ms + 10.s2ms + 20.s2ms, viewTimeSpent: 50.s2ns)

// When
try metric.track(view: view1, instrumentationType: nil)
Expand All @@ -150,8 +150,8 @@ class SessionEndedMetricTests: XCTestCase {
func testComputingDurationFromOverlappingViews() throws {
// Given
let metric = SessionEndedMetric.with(sessionID: sessionID)
let view1: RUMViewEvent = .mockRandomWith(sessionID: sessionID, date: 10.s2ms, viewTimeSpent: 10.s2ns)
let view2: RUMViewEvent = .mockRandomWith(sessionID: sessionID, date: 15.s2ms, viewTimeSpent: 20.s2ns) // starts in the middle of `view1`
let view1: RUMViewEvent = .mockRandomWith(sessionID: sessionID.rawValue, date: 10.s2ms, viewTimeSpent: 10.s2ns)
let view2: RUMViewEvent = .mockRandomWith(sessionID: sessionID.rawValue, date: 15.s2ms, viewTimeSpent: 20.s2ns) // starts in the middle of `view1`

// When
try metric.track(view: view1, instrumentationType: nil)
Expand All @@ -166,12 +166,12 @@ class SessionEndedMetricTests: XCTestCase {
func testDurationIsAlwaysComputedFromTheFirstAndLastView() throws {
// Given
let metric = SessionEndedMetric.with(sessionID: sessionID)
let firstView: RUMViewEvent = .mockRandomWith(sessionID: sessionID, date: 5.s2ms, viewTimeSpent: 10.s2ns)
let lastView: RUMViewEvent = .mockRandomWith(sessionID: sessionID, date: 5.s2ms + 10.s2ms, viewTimeSpent: 20.s2ns)
let firstView: RUMViewEvent = .mockRandomWith(sessionID: sessionID.rawValue, date: 5.s2ms, viewTimeSpent: 10.s2ns)
let lastView: RUMViewEvent = .mockRandomWith(sessionID: sessionID.rawValue, date: 5.s2ms + 10.s2ms, viewTimeSpent: 20.s2ns)

// When
try metric.track(view: firstView, instrumentationType: nil)
try (0..<10).forEach { _ in try metric.track(view: .mockRandomWith(sessionID: sessionID), instrumentationType: nil) } // middle views should not alter the duration
try (0..<10).forEach { _ in try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue), instrumentationType: nil) } // middle views should not alter the duration
try metric.track(view: lastView, instrumentationType: nil)
let attributes = metric.asMetricAttributes()

Expand Down Expand Up @@ -248,7 +248,7 @@ class SessionEndedMetricTests: XCTestCase {
let metric = SessionEndedMetric.with(sessionID: sessionID)

// When
try viewIDs.forEach { try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: $0), instrumentationType: nil) }
try viewIDs.forEach { try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: $0), instrumentationType: nil) }
let attributes = metric.asMetricAttributes()

// Then
Expand All @@ -265,8 +265,8 @@ class SessionEndedMetricTests: XCTestCase {

// When
try (0..<5).forEach { _ in // repeat few times
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: viewID1), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: viewID2), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: viewID1), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: viewID2), instrumentationType: nil)
}
let attributes = metric.asMetricAttributes()

Expand All @@ -286,7 +286,7 @@ class SessionEndedMetricTests: XCTestCase {
// When
try viewIDs.forEach { viewID in
let viewURL = backgroundViewIDs.contains(viewID) ? RUMOffViewEventsHandlingRule.Constants.backgroundViewURL : .mockRandom()
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: viewID, viewURL: viewURL), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: viewID, viewURL: viewURL), instrumentationType: nil)
}
let attributes = metric.asMetricAttributes()

Expand All @@ -306,7 +306,7 @@ class SessionEndedMetricTests: XCTestCase {
// When
try viewIDs.forEach { viewID in
let viewURL = appLaunchViewIDs.contains(viewID) ? RUMOffViewEventsHandlingRule.Constants.applicationLaunchViewURL : .mockRandom()
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: viewID, viewURL: viewURL), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: viewID, viewURL: viewURL), instrumentationType: nil)
}
let attributes = metric.asMetricAttributes()

Expand All @@ -326,16 +326,16 @@ class SessionEndedMetricTests: XCTestCase {

// When
try (0..<manualViewsCount).forEach { idx in
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "manual\(idx)"), instrumentationType: .manual)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "manual\(idx)"), instrumentationType: .manual)
}
try (0..<swiftuiViewsCount).forEach { idx in
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "swiftui\(idx)"), instrumentationType: .swiftui)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "swiftui\(idx)"), instrumentationType: .swiftui)
}
try (0..<uikitViewsCount).forEach { idx in
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "uikit\(idx)"), instrumentationType: .uikit)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "uikit\(idx)"), instrumentationType: .uikit)
}
try (0..<unknownViewsCount).forEach { idx in
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "unknown\(idx)"), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "unknown\(idx)"), instrumentationType: nil)
}
let attributes = metric.asMetricAttributes()

Expand All @@ -355,12 +355,12 @@ class SessionEndedMetricTests: XCTestCase {
func testWhenReportingViewsCountByInstrumentationType_itIgnoresSuccedingInstrumentationTypesForGivenViewID() throws {
// Given
let metric = SessionEndedMetric.with(sessionID: sessionID)
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "view-id"), instrumentationType: .manual)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "view-id"), instrumentationType: .manual)

// When
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "view-id"), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "view-id"), instrumentationType: .swiftui)
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "view-id"), instrumentationType: .uikit)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "view-id"), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "view-id"), instrumentationType: .swiftui)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "view-id"), instrumentationType: .uikit)
let attributes = metric.asMetricAttributes()

// Then
Expand All @@ -373,12 +373,12 @@ class SessionEndedMetricTests: XCTestCase {
let metric = SessionEndedMetric.with(sessionID: sessionID)

// When
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "1", hasReplay: nil), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "1", hasReplay: false), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "1", hasReplay: true), instrumentationType: nil) // count
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "2", hasReplay: false), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "3", hasReplay: true), instrumentationType: nil) // count
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewID: "3", hasReplay: false), instrumentationType: nil) // ignore
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "1", hasReplay: nil), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "1", hasReplay: false), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "1", hasReplay: true), instrumentationType: nil) // count
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "2", hasReplay: false), instrumentationType: nil)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "3", hasReplay: true), instrumentationType: nil) // count
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewID: "3", hasReplay: false), instrumentationType: nil) // ignore
let attributes = metric.asMetricAttributes()

// Then
Expand Down Expand Up @@ -532,9 +532,9 @@ class SessionEndedMetricTests: XCTestCase {
func testEncodedMetricAttributesFollowTheSpec() throws {
// Given
let metric = SessionEndedMetric.with(sessionID: sessionID, context: .mockWith(applicationBundleType: .iOSApp))
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewTimeSpent: 10), instrumentationType: .manual)
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewTimeSpent: 10), instrumentationType: .swiftui)
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewTimeSpent: 10), instrumentationType: .uikit)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewTimeSpent: 10), instrumentationType: .manual)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewTimeSpent: 10), instrumentationType: .swiftui)
try metric.track(view: .mockRandomWith(sessionID: sessionID.rawValue, viewTimeSpent: 10), instrumentationType: .uikit)
metric.track(uploadQuality: [UploadQualityMetric.track: "feature"])

// When
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* Copyright 2019-Present Datadog, Inc.
*/

import DatadogInternal
import TestUtilities
import XCTest

Expand Down
Loading