Skip to content

Commit de4fe5a

Browse files
committed
RUM-8042 Move upload_cycle to dedicated aggregation
1 parent f233e0e commit de4fe5a

File tree

10 files changed

+22
-101
lines changed

10 files changed

+22
-101
lines changed

Datadog/Datadog.xcodeproj/project.pbxproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -940,8 +940,6 @@
940940
D22743E729DEB953001A7EF9 /* UIApplicationSwizzlerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61410166251A661D00E3C2D9 /* UIApplicationSwizzlerTests.swift */; };
941941
D22743EB29DEC9E6001A7EF9 /* Casting+RUM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61411B0F24EC15AC0012EAB2 /* Casting+RUM.swift */; };
942942
D22743EC29DEC9E6001A7EF9 /* Casting+RUM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61411B0F24EC15AC0012EAB2 /* Casting+RUM.swift */; };
943-
D22789362D64A0D7007E9DB0 /* UploadCycleMetric.swift in Sources */ = {isa = PBXBuildFile; fileRef = D22789352D64A0D3007E9DB0 /* UploadCycleMetric.swift */; };
944-
D22789372D64A0D7007E9DB0 /* UploadCycleMetric.swift in Sources */ = {isa = PBXBuildFile; fileRef = D22789352D64A0D3007E9DB0 /* UploadCycleMetric.swift */; };
945943
D227A0A42C7622EA00C83324 /* BenchmarkProfiler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D227A0A32C7622EA00C83324 /* BenchmarkProfiler.swift */; };
946944
D227A0A52C7622EA00C83324 /* BenchmarkProfiler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D227A0A32C7622EA00C83324 /* BenchmarkProfiler.swift */; };
947945
D22C5BC82A98A0B20024CC1F /* Baggages.swift in Sources */ = {isa = PBXBuildFile; fileRef = D22C5BC52A989D130024CC1F /* Baggages.swift */; };
@@ -1002,6 +1000,8 @@
10021000
D23354FD2A42E32000AFCAE2 /* InternalExtended.swift in Sources */ = {isa = PBXBuildFile; fileRef = D23354FB2A42E32000AFCAE2 /* InternalExtended.swift */; };
10031001
D234613128B7713000055D4C /* FeatureContextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D234613028B7712F00055D4C /* FeatureContextTests.swift */; };
10041002
D234613228B7713000055D4C /* FeatureContextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D234613028B7712F00055D4C /* FeatureContextTests.swift */; };
1003+
D2393EF82DB2555F006B3C75 /* UploadCycleMetric.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2393EF72DB2555F006B3C75 /* UploadCycleMetric.swift */; };
1004+
D2393EF92DB2555F006B3C75 /* UploadCycleMetric.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2393EF72DB2555F006B3C75 /* UploadCycleMetric.swift */; };
10051005
D23F8E5229DDCD28001CFAE8 /* UIViewControllerHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61F3CDA2251118FB00C816E5 /* UIViewControllerHandler.swift */; };
10061006
D23F8E5329DDCD28001CFAE8 /* RUMCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61C3E63A24BF1A4B008053F2 /* RUMCommand.swift */; };
10071007
D23F8E5429DDCD28001CFAE8 /* ValuePublisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 611529A425E3DD51004F740E /* ValuePublisher.swift */; };
@@ -2907,7 +2907,6 @@
29072907
D2216EC22A96632F00ADAEC8 /* FeatureBaggageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureBaggageTests.swift; sourceTree = "<group>"; };
29082908
D22442C42CA301DA002E71E4 /* UIColor+SessionReplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+SessionReplay.swift"; sourceTree = "<group>"; };
29092909
D224430C29E95D6600274EC7 /* CrashReportReceiverTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CrashReportReceiverTests.swift; sourceTree = "<group>"; };
2910-
D22789352D64A0D3007E9DB0 /* UploadCycleMetric.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UploadCycleMetric.swift; sourceTree = "<group>"; };
29112910
D227A0A32C7622EA00C83324 /* BenchmarkProfiler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BenchmarkProfiler.swift; sourceTree = "<group>"; };
29122911
D22C1F5B271484B400922024 /* LogEventMapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogEventMapper.swift; sourceTree = "<group>"; };
29132912
D22C5BC52A989D130024CC1F /* Baggages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Baggages.swift; sourceTree = "<group>"; };
@@ -2957,6 +2956,7 @@
29572956
D23354FB2A42E32000AFCAE2 /* InternalExtended.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InternalExtended.swift; sourceTree = "<group>"; };
29582957
D234613028B7712F00055D4C /* FeatureContextTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureContextTests.swift; sourceTree = "<group>"; };
29592958
D236BE2729520FED00676E67 /* CrashReportReceiver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrashReportReceiver.swift; sourceTree = "<group>"; };
2959+
D2393EF72DB2555F006B3C75 /* UploadCycleMetric.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UploadCycleMetric.swift; sourceTree = "<group>"; };
29602960
D23F8E9929DDCD28001CFAE8 /* DatadogRUM.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DatadogRUM.framework; sourceTree = BUILT_PRODUCTS_DIR; };
29612961
D23F8ECD29DDCD38001CFAE8 /* DatadogRUMTests tvOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "DatadogRUMTests tvOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
29622962
D240684D27CE6C9E00C04F44 /* Example tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Example tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -5036,6 +5036,7 @@
50365036
isa = PBXGroup;
50375037
children = (
50385038
614396712A67D74F00197326 /* BatchMetrics.swift */,
5039+
D2393EF72DB2555F006B3C75 /* UploadCycleMetric.swift */,
50395040
D2E6E8FA2D8039B200FF1398 /* BenchmarkURLSessionTaskDelegate.swift */,
50405041
);
50415042
path = SDKMetrics;
@@ -5054,7 +5055,6 @@
50545055
children = (
50555056
6174D60B2BFDDEDF00EC7469 /* SDKMetricFields.swift */,
50565057
A7FA98CD2BA1A6930018D6B5 /* MethodCalledMetric.swift */,
5057-
D22789352D64A0D3007E9DB0 /* UploadCycleMetric.swift */,
50585058
);
50595059
path = SDKMetrics;
50605060
sourceTree = "<group>";
@@ -8023,6 +8023,7 @@
80238023
617699182A860D9D0030022B /* HTTPClient.swift in Sources */,
80248024
D21C26C528A3B49C005DD405 /* FeatureStorage.swift in Sources */,
80258025
61133BD42423979B00786299 /* FileReader.swift in Sources */,
8026+
D2393EF82DB2555F006B3C75 /* UploadCycleMetric.swift in Sources */,
80268027
D29294E0291D5ED100F8EFF9 /* ApplicationVersionPublisher.swift in Sources */,
80278028
61D3E0D9277B23F1008BE766 /* KronosNTPProtocol.swift in Sources */,
80288029
61D3E0DA277B23F1008BE766 /* KronosTimeFreeze.swift in Sources */,
@@ -8581,7 +8582,6 @@
85818582
D2160CA229C0DE5700FAA9A5 /* NetworkInstrumentationFeature.swift in Sources */,
85828583
D2EBEE1F29BA160F00B15732 /* HTTPHeadersReader.swift in Sources */,
85838584
E2AA55E72C32C6D9002FEF28 /* ApplicationNotifications.swift in Sources */,
8584-
D22789372D64A0D7007E9DB0 /* UploadCycleMetric.swift in Sources */,
85858585
D263BCAF29DAFFEB00FA0E21 /* PerformancePresetOverride.swift in Sources */,
85868586
D23039E7298D5236001A1FA3 /* NetworkConnectionInfo.swift in Sources */,
85878587
D23039E9298D5236001A1FA3 /* TrackingConsent.swift in Sources */,
@@ -9361,6 +9361,7 @@
93619361
617699192A860D9D0030022B /* HTTPClient.swift in Sources */,
93629362
D2FB1255292E0E99005B13F8 /* TrackingConsentPublisher.swift in Sources */,
93639363
D26C49C0288982DA00802B2D /* FeatureUpload.swift in Sources */,
9364+
D2393EF92DB2555F006B3C75 /* UploadCycleMetric.swift in Sources */,
93649365
D2CB6E8127C50EAE00A62B57 /* DataUploader.swift in Sources */,
93659366
D2CB6E8827C50EAE00A62B57 /* FileReader.swift in Sources */,
93669367
D2CB6E8D27C50EAE00A62B57 /* KronosNTPProtocol.swift in Sources */,
@@ -9628,7 +9629,6 @@
96289629
D2160CA329C0DE5700FAA9A5 /* NetworkInstrumentationFeature.swift in Sources */,
96299630
D2EBEE2D29BA161100B15732 /* HTTPHeadersReader.swift in Sources */,
96309631
E2AA55E82C32C6D9002FEF28 /* ApplicationNotifications.swift in Sources */,
9631-
D22789362D64A0D7007E9DB0 /* UploadCycleMetric.swift in Sources */,
96329632
D263BCB029DAFFEB00FA0E21 /* PerformancePresetOverride.swift in Sources */,
96339633
D2DA2359298D57AA00C6C7E6 /* NetworkConnectionInfo.swift in Sources */,
96349634
D2DA235A298D57AA00C6C7E6 /* TrackingConsent.swift in Sources */,

DatadogCore/Sources/Core/Upload/DataUploadWorker.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,9 @@ internal class DataUploadWorker: DataUploadWorkerType {
239239
}
240240

241241
private func sendUploadCycleMetric() {
242-
telemetry.metric(
243-
name: UploadCycleMetric.name,
244-
attributes: [UploadCycleMetric.track: featureName]
242+
telemetry.increment(
243+
metric: UploadCycleMetric.name,
244+
cardinalities: [UploadCycleMetric.track: .string(featureName)]
245245
)
246246
}
247247

DatadogCore/Tests/Datadog/Core/Upload/DataUploadWorkerTests.swift

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,9 @@ class DataUploadWorkerTests: XCTestCase {
8989
XCTAssertEqual(try orchestrator.directory.files().count, 0)
9090

9191
XCTAssertEqual(telemetry.messages.count, 3)
92-
let metric = try XCTUnwrap(telemetry.messages.firstMetricReport(named: "upload_cycle"), "An upload cycle metric should be send to `telemetry`.")
93-
XCTAssertEqual(metric.attributes["track"] as? String, featureName)
92+
let metric = try XCTUnwrap(telemetry.messages.firstMetricIncrement(named: "upload_cycle"), "An upload cycle metric should be send to `telemetry`.")
93+
XCTAssertEqual(metric.increment, 1)
94+
XCTAssertEqual(metric.cardinalities["track"], .string(featureName))
9495
}
9596

9697
func testItUploadsDataSequentiallyWithoutDelay_whenMaxBatchesPerUploadIsSet() throws {
@@ -140,8 +141,9 @@ class DataUploadWorkerTests: XCTestCase {
140141
XCTAssertEqual(try orchestrator.directory.files().count, 1)
141142

142143
XCTAssertEqual(telemetry.messages.count, 1)
143-
let metric = try XCTUnwrap(telemetry.messages.firstMetricReport(named: "upload_cycle"), "An upload cycle metric should be send to `telemetry`.")
144-
XCTAssertEqual(metric.attributes["track"] as? String, featureName)
144+
let metric = try XCTUnwrap(telemetry.messages.firstMetricIncrement(named: "upload_cycle"), "An upload cycle metric should be send to `telemetry`.")
145+
XCTAssertEqual(metric.increment, 1)
146+
XCTAssertEqual(metric.cardinalities["track"], .string(featureName))
145147
}
146148

147149
func testGivenDataToUpload_whenUploadFinishesAndDoesNotNeedToBeRetried_thenDataIsDeleted() {
@@ -610,7 +612,9 @@ class DataUploadWorkerTests: XCTestCase {
610612

611613
// Then
612614
XCTAssertEqual(telemetry.messages.count, 1)
613-
XCTAssertNotNil(telemetry.messages.firstMetricReport(named: "upload_cycle"), "An upload cycle metric should be send to `telemetry`.")
615+
let metric = try XCTUnwrap(telemetry.messages.firstMetricIncrement(named: "upload_cycle"), "An upload cycle metric should be send to `telemetry`.")
616+
XCTAssertEqual(metric.increment, 1)
617+
XCTAssertEqual(metric.cardinalities["track"], .string(featureName))
614618
}
615619

616620
func testWhenDataIsUploadedWithAlertingStatusCode_itSendsErrorTelemetry() throws {
@@ -780,8 +784,9 @@ class DataUploadWorkerTests: XCTestCase {
780784
let error = try XCTUnwrap(telemetry.messages.firstError(), "An error should be send to `telemetry`.")
781785
XCTAssertEqual(error.message, #"Failed to initiate 'some-feature' data upload - Failed to prepare upload"#)
782786

783-
let metric = try XCTUnwrap(telemetry.messages.firstMetricReport(named: "upload_cycle"), "An upload cycle metric should be send to `telemetry`.")
784-
XCTAssertEqual(metric.attributes["track"] as? String, "some-feature")
787+
let metric = try XCTUnwrap(telemetry.messages.firstMetricIncrement(named: "upload_cycle"), "An upload cycle metric should be send to `telemetry`.")
788+
XCTAssertEqual(metric.increment, 1)
789+
XCTAssertEqual(metric.cardinalities["track"], .string("some-feature"))
785790
}
786791

787792
// MARK: - Tearing Down

DatadogRUM/Sources/Integrations/TelemetryInterceptor.swift

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,6 @@ internal struct TelemetryInterceptor: FeatureMessageReceiver {
2020
switch telemetry {
2121
case .error(let id, let message, let kind, let stack):
2222
interceptError(id: id, message: message, kind: kind, stack: stack)
23-
case let .metric(.report(metric)) where metric.name == UploadCycleMetric.name:
24-
// Intercept the 'upload_cycle' metric for aggregation in the rse
25-
// metric
26-
interceptUploadCycleMetric(attributes: metric.attributes)
27-
return true // do not forward the message
28-
2923
default:
3024
break
3125
}
@@ -36,8 +30,4 @@ internal struct TelemetryInterceptor: FeatureMessageReceiver {
3630
private func interceptError(id: String, message: String, kind: String, stack: String) {
3731
sessionEndedMetric.track(sdkErrorKind: kind, in: nil) // `nil` - track in current session
3832
}
39-
40-
private func interceptUploadCycleMetric(attributes: [String: Encodable]) {
41-
sessionEndedMetric.track(uploadCycle: attributes, in: nil) // `nil` - track in current session
42-
}
4333
}

DatadogRUM/Sources/SDKMetrics/SessionEndedMetric.swift

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,6 @@ internal class SessionEndedMetric {
102102
/// Indicates if the session was stopped through `stopSession()` API.
103103
private var wasStopped = false
104104

105-
/// Information about the upload cycle during the session.
106-
private var uploadCycle: [String: Int] = [:]
107-
108105
/// If `RUM.Configuration.trackBackgroundEvents` was enabled for this session.
109106
private let tracksBackgroundEvents: Bool
110107

@@ -202,18 +199,6 @@ internal class SessionEndedMetric {
202199
wasStopped = true
203200
}
204201

205-
/// Tracks the upload quality metric for aggregation.
206-
///
207-
/// - Parameters:
208-
/// - attributes: The upload quality attributes
209-
func track(uploadCycle attributes: [String: Encodable]) {
210-
guard let track = attributes[UploadCycleMetric.track] as? String else {
211-
return
212-
}
213-
214-
uploadCycle[track, default: 0] += 1
215-
}
216-
217202
// MARK: - Exporting Attributes
218203

219204
/// Set of quality and diagnostic attributes for the Session Ended metric.
@@ -311,10 +296,6 @@ internal class SessionEndedMetric {
311296
/// Information on number of events missed due to absence of an active view.
312297
let noViewEventsCount: NoViewEventsCount
313298

314-
/// Information about the upload cycles during the session.
315-
/// The upload cycles is splitting between upload track name.
316-
let uploadCycle: [String: Int]
317-
318299
enum CodingKeys: String, CodingKey {
319300
case processType = "process_type"
320301
case precondition
@@ -325,7 +306,6 @@ internal class SessionEndedMetric {
325306
case sdkErrorsCount = "sdk_errors_count"
326307
case ntpOffset = "ntp_offset"
327308
case noViewEventsCount = "no_view_events_count"
328-
case uploadCycle = "upload_cycle"
329309
}
330310
}
331311

@@ -392,8 +372,7 @@ internal class SessionEndedMetric {
392372
resources: missedEvents[.resource] ?? 0,
393373
errors: missedEvents[.error] ?? 0,
394374
longTasks: missedEvents[.longTask] ?? 0
395-
),
396-
uploadCycle: uploadCycle
375+
)
397376
)
398377
]
399378
}

DatadogRUM/Sources/SDKMetrics/SessionEndedMetricController.swift

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,6 @@ internal final class SessionEndedMetricController {
104104
}
105105
}
106106

107-
/// Tracks the upload quality metric for aggregation.
108-
///
109-
/// - Parameters:
110-
/// - attributes: The upload quality attributes
111-
func track(uploadCycle attributes: [String: Encodable], in sessionID: RUMUUID?) {
112-
updateMetric(for: sessionID) { $0?.track(uploadCycle: attributes) }
113-
}
114-
115107
private func updateMetric(for sessionID: RUMUUID?, _ mutation: (inout SessionEndedMetric?) throws -> Void) {
116108
_metricsBySessionID.mutate { metrics in
117109
guard let sessionID = (sessionID ?? pendingSessionIDs.last) else {

DatadogRUM/Tests/Integrations/TelemetryInterceptorTests.swift

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,4 @@ class TelemetryInterceptorTests: XCTestCase {
3131
let rse = try XCTUnwrap(metric.attributes[SessionEndedMetric.Constants.rseKey] as? SessionEndedMetric.Attributes)
3232
XCTAssertEqual(rse.sdkErrorsCount.total, 1)
3333
}
34-
35-
func testWhenInterceptingUploadQualityMetric_itItUpdatesSessionEndedMetric() throws {
36-
let sessionID: RUMUUID = .mockRandom()
37-
38-
// Given
39-
let metricController = SessionEndedMetricController(telemetry: telemetry, sampleRate: 100)
40-
let interceptor = TelemetryInterceptor(sessionEndedMetric: metricController)
41-
42-
// When
43-
metricController.startMetric(sessionID: sessionID, precondition: .mockRandom(), context: .mockAny(), tracksBackgroundEvents: .mockRandom())
44-
let metricTelemetry: TelemetryMessage = .metric(.report(.init(name: UploadCycleMetric.name, attributes: [UploadCycleMetric.track: "feature"], sampleRate: .mockRandom())))
45-
let result = interceptor.receive(message: .telemetry(metricTelemetry), from: NOPDatadogCore())
46-
XCTAssertTrue(result)
47-
48-
// Then
49-
metricController.endMetric(sessionID: sessionID, with: .mockRandom())
50-
let metric = try XCTUnwrap(telemetry.messages.lastMetric(named: SessionEndedMetric.Constants.name))
51-
let rse = try XCTUnwrap(metric.attributes[SessionEndedMetric.Constants.rseKey] as? SessionEndedMetric.Attributes)
52-
XCTAssertEqual(rse.uploadCycle["feature"], 1)
53-
}
5434
}

DatadogRUM/Tests/SDKMetrics/SessionEndedMetricControllerTests.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,6 @@ class SessionEndedMetricControllerTests: XCTestCase {
114114
{ controller.track(missedEventType: .action, in: sessionIDs.randomElement()!) },
115115
{ controller.track(missedEventType: .resource, in: nil) },
116116
{ controller.trackWasStopped(sessionID: nil) },
117-
{ controller.track(uploadCycle: mockRandomAttributes(), in: nil) },
118117
{ controller.endMetric(sessionID: sessionIDs.randomElement()!, with: .mockRandom()) },
119118
],
120119
iterations: 100

DatadogRUM/Tests/SDKMetrics/SessionEndedMetricTests.swift

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -492,28 +492,6 @@ class SessionEndedMetricTests: XCTestCase {
492492
XCTAssertEqual(rse.noViewEventsCount.longTasks, missedLongTasksCount)
493493
}
494494

495-
// MARK: - Tracks Upload Quality
496-
497-
func testUploadQualityMetricAggregation() throws {
498-
let metric = SessionEndedMetric.with(sessionID: sessionID, context: .mockWith(applicationBundleType: .iOSApp))
499-
500-
let count1: Int = .mockRandom(min: 10, max: 100)
501-
for _ in 0..<count1 {
502-
metric.track(uploadCycle: [UploadCycleMetric.track: "feature1"])
503-
}
504-
505-
let count2: Int = .mockRandom(min: 10, max: 100)
506-
for _ in 0..<count2 {
507-
metric.track(uploadCycle: [UploadCycleMetric.track: "feature2"])
508-
}
509-
510-
// When
511-
let matcher = try JSONObjectMatcher(AnyEncodable(metric.asMetricAttributes()))
512-
513-
XCTAssertEqual(try matcher.value("rse.upload_cycle.feature1") as Int, count1)
514-
XCTAssertEqual(try matcher.value("rse.upload_cycle.feature2") as Int, count2)
515-
}
516-
517495
// MARK: - Metric Spec
518496

519497
func testEncodedMetricAttributesFollowTheSpec() throws {
@@ -522,7 +500,6 @@ class SessionEndedMetricTests: XCTestCase {
522500
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewTimeSpent: 10), instrumentationType: .manual)
523501
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewTimeSpent: 10), instrumentationType: .swiftui)
524502
try metric.track(view: .mockRandomWith(sessionID: sessionID, viewTimeSpent: 10), instrumentationType: .uikit)
525-
metric.track(uploadCycle: [UploadCycleMetric.track: "feature"])
526503

527504
// When
528505
let matcher = try JSONObjectMatcher(AnyEncodable(metric.asMetricAttributes()))
@@ -548,7 +525,6 @@ class SessionEndedMetricTests: XCTestCase {
548525
XCTAssertNotNil(try matcher.value("rse.no_view_events_count.resources") as Int)
549526
XCTAssertNotNil(try matcher.value("rse.no_view_events_count.errors") as Int)
550527
XCTAssertNotNil(try matcher.value("rse.no_view_events_count.long_tasks") as Int)
551-
XCTAssertNotNil(try matcher.value("rse.upload_cycle.feature") as Int)
552528
}
553529
}
554530

0 commit comments

Comments
 (0)