Skip to content

Commit 83ec4d4

Browse files
Merge pull request #2475 from DataDog/mariedm/fo-fix-command-properties-and-inject-s8s-id
Feature Operations - set `canStartBackgroundView` to `true` Co-authored-by: mariedm <marie.denis@datadoghq.com>
2 parents 8f4ba54 + f9b6d1f commit 83ec4d4

3 files changed

Lines changed: 73 additions & 1 deletion

File tree

DatadogRUM/Sources/RUMMonitor/RUMCommand.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -720,7 +720,7 @@ internal struct RUMOperationStepVitalCommand: RUMCommand {
720720
var time: Date
721721
var globalAttributes: [AttributeKey: AttributeValue] = [:]
722722
var attributes: [AttributeKey: AttributeValue]
723-
let canStartBackgroundView = false
723+
let canStartBackgroundView = true
724724
let isUserInteraction = false
725725
let missedEventType: SessionEndedMetric.MissedEventType? = nil
726726
let canStartApplicationLaunchView = true

DatadogRUM/Sources/RUMMonitor/RUMFeatureOperationManager.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,29 @@ internal class RUMFeatureOperationManager {
9696

9797
let vitalEvent = RUMVitalEvent(
9898
dd: .init(),
99+
account: .init(context: context),
99100
application: .init(id: parent.context.rumApplicationID),
101+
buildId: context.buildId,
102+
buildVersion: context.buildNumber,
103+
ciTest: dependencies.ciTest,
104+
connectivity: .init(context: context),
105+
container: nil,
100106
context: .init(contextInfo: mergedAttributes),
101107
date: command.time.addingTimeInterval(context.serverTimeOffset).timeIntervalSince1970.toInt64Milliseconds,
108+
ddtags: context.ddTags,
109+
device: context.normalizedDevice(),
110+
display: nil,
111+
os: context.os,
112+
service: context.service,
102113
session: .init(
103114
hasReplay: context.hasReplay,
104115
id: parent.context.sessionID.toRUMDataFormat,
105116
type: dependencies.sessionType
106117
),
118+
source: .init(rawValue: context.source) ?? .ios,
119+
synthetics: dependencies.syntheticsTest,
120+
usr: .init(context: context),
121+
version: context.version,
107122
view: .init(
108123
id: (activeView?.viewUUID).orNull.toRUMDataFormat,
109124
url: activeView?.viewPath ?? ""

DatadogRUM/Tests/RUMMonitor/RUMFeatureOperationManagerTests.swift

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ class RUMFeatureOperationManagerTests: XCTestCase {
5959

6060
let event = try XCTUnwrap(vitalEvents.first)
6161
XCTAssertNotNil(event)
62+
// Operation Step specific properties
6263
XCTAssertEqual(event.vital.type, .operationStep)
6364
XCTAssertEqual(event.vital.id, command.vitalId)
6465
XCTAssertEqual(event.vital.name, command.name)
@@ -69,6 +70,23 @@ class RUMFeatureOperationManagerTests: XCTestCase {
6970
XCTAssertEqual(event.view.url, view.viewPath)
7071
XCTAssertNil(event.vital.vitalDescription)
7172
XCTAssertNil(event.vital.duration)
73+
// Common properties
74+
XCTAssertNil(event.account)
75+
XCTAssertNil(event.buildId)
76+
XCTAssertNotNil(event.buildVersion)
77+
XCTAssertNil(event.ciTest)
78+
XCTAssertNotNil(event.connectivity)
79+
XCTAssertNil(event.container)
80+
XCTAssertNotNil(event.context)
81+
XCTAssertNotNil(event.ddtags)
82+
XCTAssertNotNil(event.device)
83+
XCTAssertNil(event.display)
84+
XCTAssertNotNil(event.os)
85+
XCTAssertNotNil(event.service)
86+
XCTAssertEqual(event.source, .ios)
87+
XCTAssertNil(event.synthetics)
88+
XCTAssertNil(event.usr)
89+
XCTAssertNotNil(event.version)
7290
}
7391

7492
func testProcess_MultipleOperations_CreatesCorrectNumberOfEvents() {
@@ -212,4 +230,43 @@ class RUMFeatureOperationManagerTests: XCTestCase {
212230
// Then
213231
XCTAssertNil(dd.logger.warnLog)
214232
}
233+
234+
// MARK: - Synthetics Test ID Tests
235+
236+
func testProcess_WithSyntheticsTestId_IncludesSyntheticsInVitalEvent() throws {
237+
// Given
238+
let fakeSyntheticsTestId: String = .mockRandom()
239+
let fakeSyntheticsResultId: String = .mockRandom()
240+
let syntheticsTest = RUMSyntheticsTest(
241+
injected: nil,
242+
resultId: fakeSyntheticsResultId,
243+
testId: fakeSyntheticsTestId
244+
)
245+
246+
mockDependencies = RUMScopeDependencies.mockWith(syntheticsTest: syntheticsTest)
247+
manager = RUMFeatureOperationManager(
248+
parent: mockParent,
249+
dependencies: mockDependencies
250+
)
251+
252+
let command = RUMOperationStepVitalCommand.mockRandom()
253+
let view: RUMViewScope = .mockAny()
254+
255+
// When
256+
manager.process(
257+
command,
258+
context: mockContext,
259+
writer: mockWriter,
260+
activeView: view
261+
)
262+
263+
// Then
264+
let vitalEvents = mockWriter.events(ofType: RUMVitalEvent.self)
265+
XCTAssertEqual(vitalEvents.count, 1)
266+
267+
let event = try XCTUnwrap(vitalEvents.first)
268+
XCTAssertEqual(event.synthetics?.testId, fakeSyntheticsTestId)
269+
XCTAssertEqual(event.synthetics?.resultId, fakeSyntheticsResultId)
270+
XCTAssertEqual(event.synthetics?.injected, nil)
271+
}
215272
}

0 commit comments

Comments
 (0)