From e0e1bf7f922e12ffb562d3aac13bcf8b519e4849 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 18 Jan 2022 14:25:50 +0100 Subject: [PATCH 1/2] Provide autoFinishAfter in ctor --- .../src/navigation/sentry_navigator_observer.dart | 12 ++++++++---- flutter/test/sentry_navigator_observer_test.dart | 9 +++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/flutter/lib/src/navigation/sentry_navigator_observer.dart b/flutter/lib/src/navigation/sentry_navigator_observer.dart index 1d64b6e356..45fba0c277 100644 --- a/flutter/lib/src/navigation/sentry_navigator_observer.dart +++ b/flutter/lib/src/navigation/sentry_navigator_observer.dart @@ -41,9 +41,10 @@ typedef AdditionalInfoExtractor = Map? Function( /// ``` /// /// The option [enableAutoTransactions] is enabled by default. For every new -/// route a transaction is started. It's automatically finished after 3 seconds -/// or when all child spans are finished, if those happen to take longer. The -/// transaction will be set to [Scope.span] if the latter is empty. +/// route a transaction is started. It's automatically finished after +/// [autoFinishAfter] duration or when all child spans are finished, +/// if those happen to take longer. The transaction will be set to [Scope.span] +/// if the latter is empty. /// /// Enabling the [setRouteNameAsTransaction] option overrides the current /// [Scope.transaction] which will also override the name of the current @@ -57,17 +58,20 @@ class SentryNavigatorObserver extends RouteObserver> { SentryNavigatorObserver({ Hub? hub, bool enableAutoTransactions = true, + Duration autoFinishAfter = const Duration(seconds: 3), bool setRouteNameAsTransaction = false, RouteNameExtractor? routeNameExtractor, AdditionalInfoExtractor? additionalInfoProvider, }) : _hub = hub ?? HubAdapter(), _enableAutoTransactions = enableAutoTransactions, + _autoFinishAfter = autoFinishAfter, _setRouteNameAsTransaction = setRouteNameAsTransaction, _routeNameExtractor = routeNameExtractor, _additionalInfoProvider = additionalInfoProvider; final Hub _hub; final bool _enableAutoTransactions; + final Duration _autoFinishAfter; final bool _setRouteNameAsTransaction; final RouteNameExtractor? _routeNameExtractor; final AdditionalInfoExtractor? _additionalInfoProvider; @@ -152,7 +156,7 @@ class SentryNavigatorObserver extends RouteObserver> { name, 'navigation', waitForChildren: true, - autoFinishAfter: Duration(seconds: 3), + autoFinishAfter: _autoFinishAfter, ); if (arguments != null) { _transaction?.setData('route_settings_arguments', arguments); diff --git a/flutter/test/sentry_navigator_observer_test.dart b/flutter/test/sentry_navigator_observer_test.dart index 6afb05ed49..f9cd92eee9 100644 --- a/flutter/test/sentry_navigator_observer_test.dart +++ b/flutter/test/sentry_navigator_observer_test.dart @@ -39,7 +39,10 @@ void main() { final hub = _MockHub(); final span = MockNoOpSentrySpan(); _whenAnyStart(hub, span); - final sut = fixture.getSut(hub: hub); + final sut = fixture.getSut( + hub: hub, + autoFinishAfter: Duration(seconds: 5), + ); sut.didPush(currentRoute, null); @@ -47,7 +50,7 @@ void main() { 'Current Route', 'navigation', waitForChildren: true, - autoFinishAfter: Duration(seconds: 3), + autoFinishAfter: Duration(seconds: 5), )); hub.configureScope((scope) { @@ -583,6 +586,7 @@ class Fixture { SentryNavigatorObserver getSut({ required Hub hub, bool enableAutoTransactions = true, + Duration autoFinishAfter = const Duration(seconds: 3), bool setRouteNameAsTransaction = false, RouteNameExtractor? routeNameExtractor, AdditionalInfoExtractor? additionalInfoProvider, @@ -590,6 +594,7 @@ class Fixture { return SentryNavigatorObserver( hub: hub, enableAutoTransactions: enableAutoTransactions, + autoFinishAfter: autoFinishAfter, setRouteNameAsTransaction: setRouteNameAsTransaction, routeNameExtractor: routeNameExtractor, additionalInfoProvider: additionalInfoProvider, From 2bdb6bfc593b6d609c9f5677373287dc96ef8932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 18 Jan 2022 14:28:04 +0100 Subject: [PATCH 2/2] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1993b4121f..e2e36b000b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Unreleased +* Feat: Configure idle transaction duration (#705) + # 6.3.0-beta.2 * Feat: Improve configuration options of `SentryNavigatorObserver` (#684)