Skip to content

Commit 2fe7c2f

Browse files
Hongyan JiangGitHub Enterprise
authored andcommitted
send use features of drop beacons, performance beacons to server (#80)
1 parent 93c4e46 commit 2fe7c2f

9 files changed

Lines changed: 128 additions & 23 deletions

File tree

Sources/InstanaAgent/Beacons/CoreBeacon/CoreBeaconFactory.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,19 @@ class CoreBeaconFactory {
1313
if conf.monitorTypes.contains(.crash) {
1414
array.append(mobileFeatureCrash)
1515
}
16+
if conf.monitorTypes.contains(.memoryWarning) {
17+
array.append(mobileFeaturePerformanceLowMemory)
18+
}
19+
if conf.anrThreshold != nil, conf.monitorTypes.contains(
20+
.alertApplicationNotResponding(threshold: conf.anrThreshold!)) {
21+
array.append(mobileFeaturePerformanceANR)
22+
}
1623
if session.autoCaptureScreenNames {
1724
array.append(mobileFeatureAutoScreenNameCapture)
1825
}
26+
if session.dropBeaconReporting {
27+
array.append(mobileFeatureDropBeaconReporting)
28+
}
1929
return array.isEmpty ? nil : array.joined(separator: ",")
2030
}
2131

Sources/InstanaAgent/Configuration/Defines.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,7 @@ let internalMetaFlutterKeys = ["settings.route.name", "widget.name", "child.widg
6464
/// Mobile Features
6565
///
6666
let mobileFeatureCrash = "c"
67+
let mobileFeaturePerformanceLowMemory = "lm"
68+
let mobileFeaturePerformanceANR = "anr"
6769
let mobileFeatureAutoScreenNameCapture = "sn"
70+
let mobileFeatureDropBeaconReporting = "db"

Sources/InstanaAgent/Configuration/InstanaConfiguraton.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class InstanaConfiguration {
7272
var monitorTypes: Set<MonitorTypes>
7373
var slowSendInterval: Instana.Types.Seconds
7474
var usiRefreshTimeIntervalInHrs: Double
75+
var anrThreshold: Double?
7576
var reporterSendDebounce: Instana.Types.Seconds
7677
var reporterSendLowBatteryDebounce: Instana.Types.Seconds
7778
var maxRetries: Int
@@ -105,7 +106,8 @@ class InstanaConfiguration {
105106
monitorTypes.insert(.memoryWarning)
106107
}
107108
if perfConfig?.enableAnrReport == true {
108-
monitorTypes.insert(.alertApplicationNotResponding(threshold: perfConfig!.anrThreshold))
109+
anrThreshold = perfConfig!.anrThreshold
110+
monitorTypes.insert(.alertApplicationNotResponding(threshold: anrThreshold!))
109111
}
110112

111113
if enableCrashReporting {

Tests/InstanaAgentTests/Beacons/Beacon Types/CustomBeaconTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ class CustomBeaconTests: InstanaTestCase {
114114
let expectedCPU = InstanaSystemUtils.deviceModel
115115
let expectedErrorType = "\(type(of: customBeacon.error!))"
116116
let expectedErrorMessage = "\(customBeacon.error!)"
117-
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nav\t\(InstanaSystemUtils.applicationVersion)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\nbt\t\(customBeacon.backendTracingID ?? "")\ncen\t\(customBeacon.name)\ncm\t12.34567\ncn\tNone\nct\t\(InstanaSystemUtils.networkUtility.connectionType.description)\nd\t\(customBeacon.duration ?? 0)\ndma\tApple\ndmo\t\(expectedCPU)\nec\t1\nem\t\(expectedErrorMessage)\net\t\(expectedErrorType)\nk\tKEY\nm_\(customBeacon.metaData?.keys.first ?? "")\t\(customBeacon.metaData?.values.first ?? "")\nosn\tiOS\nosv\t\(InstanaSystemUtils.systemVersion)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\tcustom\nti\t\(customBeacon.timestamp)\nuf\tc\nul\ten\nusi\t\(mockedInstanaSession.usi!.uuidString)\nv\t\(customBeacon.viewName ?? "")\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
117+
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nav\t\(InstanaSystemUtils.applicationVersion)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\nbt\t\(customBeacon.backendTracingID ?? "")\ncen\t\(customBeacon.name)\ncm\t12.34567\ncn\tNone\nct\t\(InstanaSystemUtils.networkUtility.connectionType.description)\nd\t\(customBeacon.duration ?? 0)\ndma\tApple\ndmo\t\(expectedCPU)\nec\t1\nem\t\(expectedErrorMessage)\net\t\(expectedErrorType)\nk\tKEY\nm_\(customBeacon.metaData?.keys.first ?? "")\t\(customBeacon.metaData?.values.first ?? "")\nosn\tiOS\nosv\t\(InstanaSystemUtils.systemVersion)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\tcustom\nti\t\(customBeacon.timestamp)\nuf\tc,lm\nul\ten\nusi\t\(mockedInstanaSession.usi!.uuidString)\nv\t\(customBeacon.viewName ?? "")\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
118118
AssertEqualAndNotNil(sut, expected)
119119
}
120120

@@ -141,7 +141,7 @@ class CustomBeaconTests: InstanaTestCase {
141141
AssertEqualAndNotNil(beacon.v, nil)
142142

143143
let expectedCPU = InstanaSystemUtils.deviceModel
144-
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nav\t\(InstanaSystemUtils.applicationVersion)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\ncen\t\(name)\ncn\tNone\nct\t\(InstanaSystemUtils.networkUtility.connectionType.description)\ndma\tApple\ndmo\t\(expectedCPU)\nk\tKEY\nosn\tiOS\nosv\t\(InstanaSystemUtils.systemVersion)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\tcustom\nti\t\(customBeacon.timestamp)\nuf\tc\nul\ten\nusi\t\(session.usi!.uuidString)\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
144+
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nav\t\(InstanaSystemUtils.applicationVersion)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\ncen\t\(name)\ncn\tNone\nct\t\(InstanaSystemUtils.networkUtility.connectionType.description)\ndma\tApple\ndmo\t\(expectedCPU)\nk\tKEY\nosn\tiOS\nosv\t\(InstanaSystemUtils.systemVersion)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\tcustom\nti\t\(customBeacon.timestamp)\nuf\tc,lm\nul\ten\nusi\t\(session.usi!.uuidString)\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
145145
AssertEqualAndNotNil(sut, expected)
146146
}
147147

@@ -169,7 +169,7 @@ class CustomBeaconTests: InstanaTestCase {
169169
AssertEqualAndNotNil(customBeacon.viewName, CustomBeaconDefaultViewNameID)
170170
AssertEqualAndNotNil(beacon.v, viewName)
171171

172-
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nav\t\(InstanaSystemUtils.applicationVersion)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\ncen\t\(name)\ncn\tNone\nct\t\(InstanaSystemUtils.networkUtility.connectionType.description)\ndma\tApple\ndmo\t\(InstanaSystemUtils.deviceModel)\nk\tKEY\nosn\tiOS\nosv\t\(InstanaSystemUtils.systemVersion)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\tcustom\nti\t\(customBeacon.timestamp)\nuf\tc\nul\ten\nusi\t\(session.usi!.uuidString)\nv\t\(viewName)\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
172+
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nav\t\(InstanaSystemUtils.applicationVersion)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\ncen\t\(name)\ncn\tNone\nct\t\(InstanaSystemUtils.networkUtility.connectionType.description)\ndma\tApple\ndmo\t\(InstanaSystemUtils.deviceModel)\nk\tKEY\nosn\tiOS\nosv\t\(InstanaSystemUtils.systemVersion)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\tcustom\nti\t\(customBeacon.timestamp)\nuf\tc,lm\nul\ten\nusi\t\(session.usi!.uuidString)\nv\t\(viewName)\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
173173
AssertEqualAndNotNil(sut, expected)
174174
}
175175

Tests/InstanaAgentTests/Beacons/Beacon Types/DiagnosticBeaconTest.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class DiagnosticBeaconTests: InstanaTestCase {
7070
let sut = beacon.asString
7171
// When
7272
let conn = InstanaSystemUtils.networkUtility.connectionType
73-
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nast\tmockCrashPayload\nav\t\(beacon.av)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\ncn\tmockCarrier\nct\tmockConnectionType\ncti\t\(crashTime)\nd\t0\ndma\tApple\ndmo\t\(beacon.dmo)\nem\tmockErrorType - crash terminationReason\net\tmockErrorType\nk\t\(key)\nm_cn\t\(conn.cellular.carrierName)\nm_ct\t\(conn.description)\nm_id\t\(mockSession.id)\nm_mg\t\(crashGroupID.uuidString)\nm_mt\tcrash\nm_sym\ttrue\nm_ver\t\(currentInstanaCrashPayloadVersion)\nosn\tiOS\nosv\t\(beacon.osv)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(crashSession.id)\nst\tmockSymbolicated\nt\tcrash\nti\t\(crashBeacon.timestamp)\nue\tmockEmail\nuf\tc\nui\tmockUserID\nul\ten\nun\tmockUserName\nusi\t\(mockSession.usi!.uuidString)\nv\tmockViewName\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
73+
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nast\tmockCrashPayload\nav\t\(beacon.av)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\ncn\tmockCarrier\nct\tmockConnectionType\ncti\t\(crashTime)\nd\t0\ndma\tApple\ndmo\t\(beacon.dmo)\nem\tmockErrorType - crash terminationReason\net\tmockErrorType\nk\t\(key)\nm_cn\t\(conn.cellular.carrierName)\nm_ct\t\(conn.description)\nm_id\t\(mockSession.id)\nm_mg\t\(crashGroupID.uuidString)\nm_mt\tcrash\nm_sym\ttrue\nm_ver\t\(currentInstanaCrashPayloadVersion)\nosn\tiOS\nosv\t\(beacon.osv)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(crashSession.id)\nst\tmockSymbolicated\nt\tcrash\nti\t\(crashBeacon.timestamp)\nue\tmockEmail\nuf\tc,lm\nui\tmockUserID\nul\ten\nun\tmockUserName\nusi\t\(mockSession.usi!.uuidString)\nv\tmockViewName\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
7474
XCTAssertEqual(sut, expected)
7575
}
7676
}

Tests/InstanaAgentTests/Beacons/Beacon Types/HTTPBeaconTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ class HTTPBeaconTests: InstanaTestCase {
146146

147147
// When
148148
let expectedErrorMessage = "\(HTTPError.timeout.rawValue): \(HTTPError.timeout.errorDescription)"
149-
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nav\t\(beacon.av)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\nbt\t\(backendTracingID)\ncn\t\(beacon.cn ?? "")\nct\t\(beacon.ct ?? "")\nd\t\(duration)\ndbs\t\(responseSize.bodyBytesAfterDecoding!)\ndma\tApple\ndmo\t\(beacon.dmo)\nebs\t\(responseSize.bodyBytes!)\nec\t1\nem\t\(expectedErrorMessage)\net\tHTTPError\nh_X-Key1\tSec\nh_X-Key2\tP\nhm\t\(method)\nhp\t\(url.path)\nhs\t\(responseCode)\nhu\t\(url.absoluteString)\nk\t\(key)\nosn\tiOS\nosv\t\(beacon.osv)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\thttpRequest\nti\t\(timestamp)\ntrs\t\(responseSize.headerBytes! + responseSize.bodyBytes!)\nuf\tc\nul\ten\nusi\t\(mockedInstanaSession.usi!.uuidString)\nv\t\(viewName)\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
149+
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nav\t\(beacon.av)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\nbt\t\(backendTracingID)\ncn\t\(beacon.cn ?? "")\nct\t\(beacon.ct ?? "")\nd\t\(duration)\ndbs\t\(responseSize.bodyBytesAfterDecoding!)\ndma\tApple\ndmo\t\(beacon.dmo)\nebs\t\(responseSize.bodyBytes!)\nec\t1\nem\t\(expectedErrorMessage)\net\tHTTPError\nh_X-Key1\tSec\nh_X-Key2\tP\nhm\t\(method)\nhp\t\(url.path)\nhs\t\(responseCode)\nhu\t\(url.absoluteString)\nk\t\(key)\nosn\tiOS\nosv\t\(beacon.osv)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\thttpRequest\nti\t\(timestamp)\ntrs\t\(responseSize.headerBytes! + responseSize.bodyBytes!)\nuf\tc,lm\nul\ten\nusi\t\(mockedInstanaSession.usi!.uuidString)\nv\t\(viewName)\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
150150
XCTAssertEqual(sut, expected)
151151
}
152152

Tests/InstanaAgentTests/Beacons/Beacon Types/PerfLowMemoryBeaconTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class PerfLowMemoryBeaconTests: InstanaTestCase {
3939
let sut = beacon.asString
4040

4141
// When
42-
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\namb\t60\nav\t\(beacon.av)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\ncn\t\(beacon.cn ?? "")\nct\t\(beacon.ct ?? "")\ndma\tApple\ndmo\t\(beacon.dmo)\nk\t\(key)\nmmb\t32686\nosn\tiOS\nosv\t\(beacon.osv)\np\tiOS\npst\toom\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\tperf\nti\t\(perf.timestamp)\nuf\tc\nul\ten\numb\t20\nusi\t\(mockedInstanaSession.usi!.uuidString)\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
42+
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\namb\t60\nav\t\(beacon.av)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\ncn\t\(beacon.cn ?? "")\nct\t\(beacon.ct ?? "")\ndma\tApple\ndmo\t\(beacon.dmo)\nk\t\(key)\nmmb\t32686\nosn\tiOS\nosv\t\(beacon.osv)\np\tiOS\npst\toom\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\tperf\nti\t\(perf.timestamp)\nuf\tc,lm\nul\ten\numb\t20\nusi\t\(mockedInstanaSession.usi!.uuidString)\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
4343
XCTAssertEqual(sut, expected)
4444
}
4545

Tests/InstanaAgentTests/Beacons/Beacon Types/SessionProfileBeaconTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class SessionProfileBeaconTests: InstanaTestCase {
3636
let sut = beacon.asString
3737

3838
// When
39-
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nav\t\(beacon.av)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\ncn\t\(beacon.cn ?? "")\nct\t\(beacon.ct ?? "")\ndma\tApple\ndmo\t\(beacon.dmo)\nk\t\(key)\nosn\tiOS\nosv\t\(beacon.osv)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\tsessionStart\nti\t\(session.timestamp)\nuf\tc\nul\ten\nusi\t\(mockInstanaSession.usi!.uuidString)\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
39+
let expected = "ab\t\(beacon.ab)\nagv\t\(beacon.agv)\nav\t\(beacon.av)\nbi\t\(beacon.bi)\nbid\t\(beacon.bid)\ncn\t\(beacon.cn ?? "")\nct\t\(beacon.ct ?? "")\ndma\tApple\ndmo\t\(beacon.dmo)\nk\t\(key)\nosn\tiOS\nosv\t\(beacon.osv)\np\tiOS\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t\(beacon.sid)\nt\tsessionStart\nti\t\(session.timestamp)\nuf\tc,lm\nul\ten\nusi\t\(mockInstanaSession.usi!.uuidString)\nvh\t\(Int(UIScreen.main.bounds.height))\nvw\t\(Int(UIScreen.main.bounds.width))"
4040
XCTAssertEqual(sut, expected)
4141
}
4242

Tests/InstanaAgentTests/Beacons/CoreBeacon/CoreBeaconFactoryTests.swift

Lines changed: 105 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class CoreBeaconFactoryTests: InstanaTestCase {
3131
let mfs = CoreBeaconFactory(mfSession)
3232

3333
// Then
34-
AssertEqualAndNotNil(mfs.mobileFeatures!, "\(mobileFeatureCrash),\(mobileFeatureAutoScreenNameCapture)")
34+
AssertEqualAndNotNil(mfs.mobileFeatures!, "c,lm,sn")
3535
}
3636

3737
func test_mobileFeatures_autoCaptureScreenNames_disabled() {
@@ -43,7 +43,7 @@ class CoreBeaconFactoryTests: InstanaTestCase {
4343
let mfs = CoreBeaconFactory(mfSession)
4444

4545
// Then
46-
AssertEqualAndNotNil(mfs.mobileFeatures!, "\(mobileFeatureCrash)")
46+
AssertEqualAndNotNil(mfs.mobileFeatures!, "c,lm")
4747
}
4848

4949
func test_map_beacon() {
@@ -65,7 +65,7 @@ class CoreBeaconFactoryTests: InstanaTestCase {
6565
AssertEqualAndNotNil(sut.k, key)
6666
AssertEqualAndNotNil(sut.ti, "\(beacon.timestamp)")
6767
AssertEqualAndNotNil(sut.bid, "\(beacon.id)")
68-
AssertEqualAndNotNil(sut.uf, mobileFeatureCrash)
68+
AssertEqualAndNotNil(sut.uf, "c,lm")
6969
AssertEqualAndNotNil(sut.bi, "\(InstanaSystemUtils.applicationBundleIdentifier)")
7070
AssertEqualAndNotNil(sut.ul, "en")
7171
AssertEqualAndNotNil(sut.agv, InstanaSystemUtils.agentVersion)
@@ -99,10 +99,7 @@ class CoreBeaconFactoryTests: InstanaTestCase {
9999
let factory = CoreBeaconFactory(session)
100100

101101
// When
102-
guard let sut = try? factory.map(beacon) else {
103-
XCTFail("Could not map Beacon to CoreBeacon")
104-
return
105-
}
102+
let sut = try! factory.map(beacon)
106103

107104
// Then
108105
AssertEqualAndNotNil(sut.v, viewName)
@@ -119,10 +116,7 @@ class CoreBeaconFactoryTests: InstanaTestCase {
119116
let factory = CoreBeaconFactory(session)
120117

121118
// When
122-
guard let sut = try? factory.map(beacon) else {
123-
XCTFail("Could not map Beacon to CoreBeacon")
124-
return
125-
}
119+
let sut = try! factory.map(beacon)
126120

127121
// Then
128122
AssertEqualAndNotNil(sut.v, "Background")
@@ -137,16 +131,112 @@ class CoreBeaconFactoryTests: InstanaTestCase {
137131
let factory = CoreBeaconFactory(.mock)
138132

139133
// When
140-
guard let sut = try? factory.map(beacon) else {
141-
XCTFail("Could not map CustomBeacon to CoreBeacon")
142-
return
143-
}
134+
let sut = try! factory.map(beacon)
144135

145136
// Then
146137
let internalMetaEventType = sut.im![internalMetaDataKeyCustom_eventType]
147138
AssertEqualAndNotNil(internalMetaEventType, eventType)
148139
}
149140

141+
func test_map_ViewChangeBeacon_autoScreenNameCapture1() {
142+
// Given
143+
let beacon = ViewChange(viewName: "testViewName",
144+
accessibilityLabel: "testAccessibilityLabelValue",
145+
navigationItemTitle: "testNavigationItemTitle",
146+
className: "testClassName", isSwiftUI: true)
147+
let factory = CoreBeaconFactory(.mock)
148+
149+
// When
150+
let sut = try! factory.map(beacon)
151+
152+
// Then
153+
AssertTrue(sut.im!["view.clsName"] == "testClassName")
154+
AssertTrue(sut.im!["view.accLabel"] == "testAccessibilityLabelValue")
155+
}
156+
157+
func test_map_ViewChangeBeacon_autoScreenNameCapture2() {
158+
// Given
159+
let beacon = ViewChange(viewName: "testViewName",
160+
navigationItemTitle: "testNavigationItemTitle",
161+
className: "testClassName", isSwiftUI: true,
162+
viewInternalCPMetaMap: ["testKey": "testValue"])
163+
let factory = CoreBeaconFactory(.mock)
164+
165+
// When
166+
let sut = try! factory.map(beacon)
167+
168+
// Then
169+
AssertTrue(sut.im!["view.clsName"] == "testClassName")
170+
AssertTrue(sut.im!["view.navItemTitle"] == "testNavigationItemTitle")
171+
AssertTrue(sut.im!["testKey"] == "testValue")
172+
}
173+
174+
func test_map_droppedBeacons() {
175+
// Given
176+
let beaconsMap: [String: String] = ["droppedBeaconKey": "droppedBeaconValue"]
177+
let beacon = DroppedBeacons(beaconsMap: beaconsMap,
178+
timestamp: Date().millisecondsSince1970,
179+
viewName: "TestViewName")
180+
let factory = CoreBeaconFactory(session)
181+
182+
// When
183+
let sut = try! factory.map(beacon)
184+
185+
// Then
186+
AssertTrue(sut.im!["droppedBeaconKey"] == "droppedBeaconValue")
187+
}
188+
189+
func test_map_performanceBeacon_appLaunch_cold() {
190+
// Given
191+
let beacon = PerfAppLaunchBeacon(appColdStartTime: 12345)
192+
let factory = CoreBeaconFactory(.mock)
193+
194+
// When
195+
let sut = try! factory.map(beacon)
196+
197+
// Then
198+
AssertTrue(sut.acs == "12345")
199+
}
200+
201+
func test_map_performanceBeacon_appLaunch_warm() {
202+
// Given
203+
let beacon = PerfAppLaunchBeacon(appWarmStartTime: 678)
204+
let factory = CoreBeaconFactory(.mock)
205+
206+
// When
207+
let sut = try! factory.map(beacon)
208+
209+
// Then
210+
AssertTrue(sut.aws == "678")
211+
}
212+
213+
func test_map_performanceBeacon_appLaunch_hot() {
214+
// Given
215+
let beacon = PerfAppLaunchBeacon(appHotStartTime: 9)
216+
let factory = CoreBeaconFactory(.mock)
217+
218+
// When
219+
let sut = try! factory.map(beacon)
220+
221+
// Then
222+
AssertTrue(sut.ahs == "9")
223+
}
224+
225+
func test_mobileFeatures() {
226+
// Given
227+
let config = InstanaConfiguration.default(key: "key", reportingURL: URL(string: "http://localhost:3000")!,
228+
enableCrashReporting: true, perfConfig: InstanaPerformanceConfig(enableAppStartTimeReport: true,
229+
enableAnrReport: true, anrThreshold: 4.0, enableLowMemoryReport: true))
230+
let session = InstanaSession(configuration: config, propertyHandler: InstanaPropertyHandler(),
231+
collectionEnabled: true, autoCaptureScreenNames: true, debugAllScreenNames: true,
232+
dropBeaconReporting: true)
233+
// When
234+
let factory = CoreBeaconFactory(session)
235+
236+
// Then
237+
AssertTrue(factory.mobileFeatures! == "c,lm,anr,sn,db")
238+
}
239+
150240
func test_create_from_string() {
151241
// Given
152242
let httpBody = "ab\t15702\nav\tunknown-version\nbid\tB5FAF31C-FE37-482E-97F2-20D49C506586\nbt\tBackendTracingID\nbi\tcom.apple.dt.xctest.tool\ncn\tNone\nct\tWifi\nd\t1578569955952\ndma\tApple\ndmo\tx86_64\nec\t1\nem\tA client or server connection was severed in the middle of an in-progress load.\net\tNetwork Connection Lost\nhm\tPOST\nhs\t200\nhu\thttps://www.example.com\nk\tKEY\np\tiOS\nosn\tiOS\nosv\t13.3\nagv\t1.0.4\nro\t\(String(InstanaSystemUtils.isDeviceJailbroken))\nsid\t70BED140-D947-4EC7-ADE9-8F1F7C6955D0\nusi\t70BED140-D947-4EC7-ADE9-8F1F7C6955D0\nt\thttpRequest\nti\t1578569955952\nuf\tc\nul\ten\nvh\t1792\nvw\t828\nm_meta1\tV\nm_meta2\tL\nh_X_K\tV"

0 commit comments

Comments
 (0)