Skip to content

Commit f126016

Browse files
authored
Merge pull request #2735 from DataDog/eric.petzel/rum-ff-tracking-variant-key
use variant key instead of value in RUM feature flag tracking
2 parents 8213e95 + c88548a commit f126016

File tree

3 files changed

+11
-24
lines changed

3 files changed

+11
-24
lines changed

Datadog/IntegrationUnitTests/Flags/FlagsRUMIntegrationTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ final class FlagsRUMIntegrationTests: XCTestCase {
9898
)
9999

100100
XCTAssertEqual(featureFlags.count, 2)
101-
XCTAssertEqual(featureFlags["boolean-flag"] as? Bool, boolValue)
102-
XCTAssertEqual(featureFlags["string-flag"] as? String, stringValue)
101+
XCTAssertEqual(featureFlags["boolean-flag"] as? String, "variation-124")
102+
XCTAssertEqual(featureFlags["string-flag"] as? String, "variation-123")
103103
}
104104
}

DatadogFlags/Sources/Client/FlagsClient.swift

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -251,12 +251,12 @@ extension FlagsClient: FlagsClientProtocol {
251251
reason: flagAssignment.reason
252252
)
253253

254-
trackEvaluation(key: key, assignment: flagAssignment, value: value, context: context)
254+
trackEvaluation(key: key, assignment: flagAssignment, context: context)
255255

256256
return details
257257
}
258258

259-
internal func trackEvaluation(key: String, assignment: FlagAssignment, value: FlagValue, context: FlagsEvaluationContext) {
259+
private func trackEvaluation(key: String, assignment: FlagAssignment, context: FlagsEvaluationContext) {
260260
exposureLogger.logExposure(
261261
for: key,
262262
assignment: assignment,
@@ -272,7 +272,7 @@ extension FlagsClient: FlagsClientProtocol {
272272

273273
rumFlagEvaluationReporter.sendFlagEvaluation(
274274
flagKey: key,
275-
value: value
275+
value: assignment.variationKey
276276
)
277277
}
278278
}
@@ -287,16 +287,6 @@ extension FlagsClient: FlagsClientInternal {
287287

288288
@_spi(Internal)
289289
public func sendFlagEvaluation(key: String, assignment: FlagAssignment, context: FlagsEvaluationContext) {
290-
var value: FlagValue
291-
switch assignment.variation {
292-
case .boolean(let v): value = v
293-
case .string(let v): value = v
294-
case .integer(let v): value = v
295-
case .double(let v): value = v
296-
case .object(let v): value = v
297-
case .unknown: value = AnyValue.null
298-
}
299-
300-
trackEvaluation(key: key, assignment: assignment, value: value, context: context)
290+
trackEvaluation(key: key, assignment: assignment, context: context)
301291
}
302292
}

DatadogFlags/Tests/Client/FlagsClientTests.swift

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -544,34 +544,31 @@ final class FlagsClientTests: XCTestCase {
544544
XCTAssertEqual(exposureLogger.logExposureCalls[0].assignment, booleanAssignment)
545545
XCTAssertEqual(exposureLogger.logExposureCalls[0].context.targetingKey, "user-123")
546546
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[0].0, "bool-flag")
547-
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[0].1 as? Bool, true)
547+
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[0].1 as? String, "var-1")
548548

549549
// Test string tracking
550550
XCTAssertEqual(exposureLogger.logExposureCalls[1].flagKey, "string-flag")
551551
XCTAssertEqual(exposureLogger.logExposureCalls[1].assignment, stringAssignment)
552552
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[1].0, "string-flag")
553-
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[1].1 as? String, "test")
553+
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[1].1 as? String, "var-2")
554554

555555
// Test integer tracking
556556
XCTAssertEqual(exposureLogger.logExposureCalls[2].flagKey, "int-flag")
557557
XCTAssertEqual(exposureLogger.logExposureCalls[2].assignment, integerAssignment)
558558
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[2].0, "int-flag")
559-
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[2].1 as? Int, 42)
559+
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[2].1 as? String, "var-3")
560560

561561
// Test double tracking
562562
XCTAssertEqual(exposureLogger.logExposureCalls[3].flagKey, "double-flag")
563563
XCTAssertEqual(exposureLogger.logExposureCalls[3].assignment, doubleAssignment)
564564
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[3].0, "double-flag")
565-
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[3].1 as? Double, 3.14)
565+
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[3].1 as? String, "var-4")
566566

567567
// Test object tracking
568568
XCTAssertEqual(exposureLogger.logExposureCalls[4].flagKey, "object-flag")
569569
XCTAssertEqual(exposureLogger.logExposureCalls[4].assignment, objectAssignment)
570570
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[4].0, "object-flag")
571-
XCTAssertEqual(
572-
rumFlagEvaluationReporter.sendFlagEvaluationCalls[4].1 as? AnyValue,
573-
.dictionary(["key": .string("value")])
574-
)
571+
XCTAssertEqual(rumFlagEvaluationReporter.sendFlagEvaluationCalls[4].1 as? String, "var-5")
575572

576573
// Test evaluation logging
577574
XCTAssertEqual(evaluationLogger.logEvaluationCalls.count, 5)

0 commit comments

Comments
 (0)