mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-05 11:58:32 +00:00
Track sub-spans as transactions as well so that we can plot them on a sentry dashboard.
This commit is contained in:
committed by
Stefan Ceriu
parent
9534bd2469
commit
a436ea6504
@@ -40,20 +40,22 @@ class Signposter {
|
|||||||
static let subsystem = "ElementX"
|
static let subsystem = "ElementX"
|
||||||
static let category = "PerformanceTests"
|
static let category = "PerformanceTests"
|
||||||
|
|
||||||
private var appStartupSpan: Span
|
private var appStartupTransaction: Span
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
appStartupSpan = SentrySDK.startTransaction(name: Name.appStartup, operation: Name.appStarted)
|
appStartupTransaction = SentrySDK.startTransaction(name: Name.appStartup, operation: Name.appStarted)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Login
|
// MARK: - Login
|
||||||
|
|
||||||
private var loginState: OSSignpostIntervalState?
|
private var loginState: OSSignpostIntervalState?
|
||||||
|
private var loginTransaction: Span?
|
||||||
private var loginSpan: Span?
|
private var loginSpan: Span?
|
||||||
|
|
||||||
func beginLogin() {
|
func beginLogin() {
|
||||||
loginState = signposter.beginInterval(Name.login)
|
loginState = signposter.beginInterval(Name.login)
|
||||||
loginSpan = appStartupSpan.startChild(operation: "\(Name.login)", description: "\(Name.login)")
|
loginTransaction = SentrySDK.startTransaction(name: "\(Name.login)", operation: "\(Name.login)")
|
||||||
|
loginSpan = appStartupTransaction.startChild(operation: "\(Name.login)", description: "\(Name.login)")
|
||||||
}
|
}
|
||||||
|
|
||||||
func endLogin() {
|
func endLogin() {
|
||||||
@@ -63,55 +65,68 @@ class Signposter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
signposter.endInterval(Name.login, loginState)
|
signposter.endInterval(Name.login, loginState)
|
||||||
|
loginTransaction?.finish()
|
||||||
loginSpan?.finish()
|
loginSpan?.finish()
|
||||||
|
|
||||||
self.loginState = nil
|
self.loginState = nil
|
||||||
|
loginTransaction = nil
|
||||||
loginSpan = nil
|
loginSpan = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - FirstSync
|
// MARK: - FirstSync
|
||||||
|
|
||||||
private var firstSyncState: OSSignpostIntervalState?
|
private var firstSyncState: OSSignpostIntervalState?
|
||||||
|
private var firstSyncTransaction: Span?
|
||||||
private var firstSyncSpan: Span?
|
private var firstSyncSpan: Span?
|
||||||
|
|
||||||
func beginFirstSync(serverName: String) {
|
func beginFirstSync(serverName: String) {
|
||||||
appStartupSpan.setTag(value: serverName, key: Name.homeserver)
|
appStartupTransaction.setTag(value: serverName, key: Name.homeserver)
|
||||||
|
|
||||||
firstSyncState = signposter.beginInterval(Name.firstSync)
|
firstSyncState = signposter.beginInterval(Name.firstSync)
|
||||||
firstSyncSpan = appStartupSpan.startChild(operation: "\(Name.firstSync)", description: "\(Name.firstSync)")
|
|
||||||
|
firstSyncTransaction = SentrySDK.startTransaction(name: "\(Name.firstSync)", operation: "\(Name.firstSync)")
|
||||||
|
firstSyncTransaction?.setTag(value: serverName, key: Name.homeserver)
|
||||||
|
|
||||||
|
firstSyncSpan = appStartupTransaction.startChild(operation: "\(Name.firstSync)", description: "\(Name.firstSync)")
|
||||||
}
|
}
|
||||||
|
|
||||||
func endFirstSync() {
|
func endFirstSync() {
|
||||||
guard let firstSyncState else { return }
|
guard let firstSyncState else { return }
|
||||||
|
|
||||||
signposter.endInterval(Name.firstSync, firstSyncState)
|
signposter.endInterval(Name.firstSync, firstSyncState)
|
||||||
|
firstSyncTransaction?.finish()
|
||||||
firstSyncSpan?.finish()
|
firstSyncSpan?.finish()
|
||||||
|
|
||||||
self.firstSyncState = nil
|
self.firstSyncState = nil
|
||||||
|
firstSyncTransaction = nil
|
||||||
firstSyncSpan = nil
|
firstSyncSpan = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - FirstRooms
|
// MARK: - FirstRooms
|
||||||
|
|
||||||
private var firstRoomsState: OSSignpostIntervalState?
|
private var firstRoomsState: OSSignpostIntervalState?
|
||||||
|
private var firstRoomsTransaction: Span?
|
||||||
private var firstRoomsSpan: Span?
|
private var firstRoomsSpan: Span?
|
||||||
|
|
||||||
func beginFirstRooms() {
|
func beginFirstRooms() {
|
||||||
firstRoomsState = signposter.beginInterval(Name.firstRooms)
|
firstRoomsState = signposter.beginInterval(Name.firstRooms)
|
||||||
firstRoomsSpan = appStartupSpan.startChild(operation: "\(Name.firstRooms)", description: "\(Name.firstRooms)")
|
firstRoomsTransaction = SentrySDK.startTransaction(name: "\(Name.firstRooms)", operation: "\(Name.firstRooms)")
|
||||||
|
firstRoomsSpan = appStartupTransaction.startChild(operation: "\(Name.firstRooms)", description: "\(Name.firstRooms)")
|
||||||
}
|
}
|
||||||
|
|
||||||
func endFirstRooms() {
|
func endFirstRooms() {
|
||||||
defer {
|
defer {
|
||||||
appStartupSpan.finish()
|
appStartupTransaction.finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let firstRoomsState else { return }
|
guard let firstRoomsState else { return }
|
||||||
|
|
||||||
signposter.endInterval(Name.firstRooms, firstRoomsState)
|
signposter.endInterval(Name.firstRooms, firstRoomsState)
|
||||||
|
firstRoomsTransaction?.finish()
|
||||||
firstRoomsSpan?.finish()
|
firstRoomsSpan?.finish()
|
||||||
|
|
||||||
self.firstRoomsState = nil
|
self.firstRoomsState = nil
|
||||||
|
firstRoomsTransaction = nil
|
||||||
firstRoomsSpan = nil
|
firstRoomsSpan = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user