Skip to content

Commit

Permalink
Merge pull request #456 from DataDog/xgouchet/RUMM-1213/additional_co…
Browse files Browse the repository at this point in the history
…nfiguration

RUMM-1213 Allow additional configuration when initializing the SDK
  • Loading branch information
buranmert committed Apr 12, 2021
1 parent 8df6aa8 commit a4b099e
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 3 deletions.
12 changes: 11 additions & 1 deletion Sources/Datadog/DatadogConfiguration.swift
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ extension Datadog {
private(set) var rumErrorEventMapper: RUMErrorEventMapper?
private(set) var batchSize: BatchSize
private(set) var uploadFrequency: UploadFrequency
private(set) var additionalConfiguration: [String: Any]

/// Creates the builder for configuring the SDK to work with RUM, Logging and Tracing features.
/// - Parameter rumApplicationID: RUM Application ID obtained on Datadog website.
Expand Down Expand Up @@ -242,7 +243,8 @@ extension Datadog {
rumActionEventMapper: nil,
rumErrorEventMapper: nil,
batchSize: .medium,
uploadFrequency: .average
uploadFrequency: .average,
additionalConfiguration: [:]
)
}

Expand Down Expand Up @@ -515,6 +517,14 @@ extension Datadog {
return self
}

/// Sets additional configuration attributes.
/// This can be used to tweak internal features of the SDK.
/// - Parameter additionalConfiguration: `[:]` by default.
public func set(additionalConfiguration: [String: Any]) -> Builder {
configuration.additionalConfiguration = additionalConfiguration
return self
}

/// Builds `Datadog.Configuration` object.
public func build() -> Configuration {
return configuration
Expand Down
5 changes: 5 additions & 0 deletions Sources/DatadogObjc/DatadogConfiguration+objc.swift
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,11 @@ public class DDConfigurationBuilder: NSObject {
_ = sdkBuilder.set(uploadFrequency: uploadFrequency.swiftType)
}

@objc
public func set(additionalConfiguration: [String: Any]) {
_ = sdkBuilder.set(additionalConfiguration: additionalConfiguration)
}

@objc
public func build() -> DDConfiguration {
return DDConfiguration(sdkConfiguration: sdkBuilder.build())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ class DatadogConfigurationBuilderTests: XCTestCase {
XCTAssertNil(configuration.rumErrorEventMapper)
XCTAssertEqual(configuration.batchSize, .medium)
XCTAssertEqual(configuration.uploadFrequency, .average)
XCTAssertEqual(configuration.additionalConfiguration.count, 0)
}
}

Expand Down Expand Up @@ -80,6 +81,7 @@ class DatadogConfigurationBuilderTests: XCTestCase {
.setRUMActionEventMapper { _ in mockRUMActionEvent }
.set(batchSize: .small)
.set(uploadFrequency: .frequent)
.set(additionalConfiguration: ["foo": 42, "bar": "something"])

return builder
}
Expand Down Expand Up @@ -121,6 +123,8 @@ class DatadogConfigurationBuilderTests: XCTestCase {
XCTAssertEqual(configuration.rumErrorEventMapper?(.mockRandom()), mockRUMErrorEvent)
XCTAssertEqual(configuration.batchSize, .small)
XCTAssertEqual(configuration.uploadFrequency, .frequent)
XCTAssertEqual(configuration.additionalConfiguration["foo"] as? Int, 42)
XCTAssertEqual(configuration.additionalConfiguration["bar"] as? String, "something")
}

XCTAssertTrue(rumConfigurationWithDefaultValues.rumUIKitViewsPredicate is DefaultUIKitRUMViewsPredicate)
Expand Down
6 changes: 4 additions & 2 deletions Tests/DatadogTests/Datadog/Mocks/CoreMocks.swift
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ extension Datadog.Configuration {
rumUIKitViewsPredicate: UIKitRUMViewsPredicate? = nil,
rumUIKitActionsTrackingEnabled: Bool = false,
batchSize: BatchSize = .medium,
uploadFrequency: UploadFrequency = .average
uploadFrequency: UploadFrequency = .average,
additionalConfiguration: [String: Any] = [:]
) -> Datadog.Configuration {
return Datadog.Configuration(
rumApplicationID: rumApplicationID,
Expand All @@ -59,7 +60,8 @@ extension Datadog.Configuration {
rumUIKitViewsPredicate: rumUIKitViewsPredicate,
rumUIKitActionsTrackingEnabled: rumUIKitActionsTrackingEnabled,
batchSize: batchSize,
uploadFrequency: uploadFrequency
uploadFrequency: uploadFrequency,
additionalConfiguration: additionalConfiguration
)
}
}
Expand Down
5 changes: 5 additions & 0 deletions Tests/DatadogTests/DatadogObjc/DDConfigurationTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ class DDConfigurationTests: XCTestCase {
XCTAssertNil(configuration.rumResourceEventMapper)
XCTAssertNil(configuration.rumActionEventMapper)
XCTAssertNil(configuration.rumErrorEventMapper)
XCTAssertEqual(configuration.additionalConfiguration.count, 0)
}
}

Expand Down Expand Up @@ -146,6 +147,10 @@ class DDConfigurationTests: XCTestCase {

objcBuilder.set(uploadFrequency: .rare)
XCTAssertEqual(objcBuilder.build().sdkConfiguration.uploadFrequency, .rare)

objcBuilder.set(additionalConfiguration: ["foo": 42, "bar": "something"])
XCTAssertEqual(objcBuilder.build().sdkConfiguration.additionalConfiguration["foo"] as? Int, 42)
XCTAssertEqual(objcBuilder.build().sdkConfiguration.additionalConfiguration["bar"] as? String, "something")
}

func testScrubbingRUMEvents() {
Expand Down

0 comments on commit a4b099e

Please sign in to comment.