From cceee8cfa2ca77f6df39a5108b71c84bba43150b Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Fri, 5 Feb 2021 12:36:33 +0100 Subject: [PATCH 01/18] Auto enabled auto session tracking --- sentry_sdk/sessions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sentry_sdk/sessions.py b/sentry_sdk/sessions.py index a8321685d0..a4303cd0d0 100644 --- a/sentry_sdk/sessions.py +++ b/sentry_sdk/sessions.py @@ -25,8 +25,8 @@ def is_auto_session_tracking_enabled(hub=None): hub = sentry_sdk.Hub.current should_track = hub.scope._force_auto_session_tracking if should_track is None: - exp = hub.client.options["_experiments"] if hub.client else {} - should_track = exp.get("auto_session_tracking") + client_options = hub.client.options if hub.client else {} + should_track = client_options.get("auto_session_tracking") or True return should_track From b9025d2c8c5fb24434632cd83f42fc0c15fd792c Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Fri, 5 Feb 2021 13:38:06 +0100 Subject: [PATCH 02/18] Moved auto_session_tracking outof expeirmental features and added it by default --- sentry_sdk/client.py | 2 +- sentry_sdk/consts.py | 2 ++ sentry_sdk/sessions.py | 2 +- tests/test_sessions.py | 42 ++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/sentry_sdk/client.py b/sentry_sdk/client.py index 7368b1055a..d33782c6c5 100644 --- a/sentry_sdk/client.py +++ b/sentry_sdk/client.py @@ -105,7 +105,7 @@ def _capture_envelope(envelope): try: _client_init_debug.set(self.options["debug"]) self.transport = make_transport(self.options) - session_mode = self.options["_experiments"].get( + session_mode = self.options.get( "session_mode", "application" ) self.session_flusher = SessionFlusher( diff --git a/sentry_sdk/consts.py b/sentry_sdk/consts.py index f40d2c24a6..57d1f54fa6 100644 --- a/sentry_sdk/consts.py +++ b/sentry_sdk/consts.py @@ -75,6 +75,8 @@ def __init__( traces_sample_rate=None, # type: Optional[float] traces_sampler=None, # type: Optional[TracesSampler] auto_enabling_integrations=True, # type: bool + auto_session_tracking=True, # type: bool + session_mode="application", # type: str _experiments={}, # type: Experiments # noqa: B006 ): # type: (...) -> None diff --git a/sentry_sdk/sessions.py b/sentry_sdk/sessions.py index a4303cd0d0..008825f006 100644 --- a/sentry_sdk/sessions.py +++ b/sentry_sdk/sessions.py @@ -26,7 +26,7 @@ def is_auto_session_tracking_enabled(hub=None): should_track = hub.scope._force_auto_session_tracking if should_track is None: client_options = hub.client.options if hub.client else {} - should_track = client_options.get("auto_session_tracking") or True + should_track = client_options.get("auto_session_tracking", True) return should_track diff --git a/tests/test_sessions.py b/tests/test_sessions.py index 6c84f029dd..d79472436e 100644 --- a/tests/test_sessions.py +++ b/tests/test_sessions.py @@ -11,7 +11,8 @@ def sorted_aggregates(item): def test_basic(sentry_init, capture_envelopes): - sentry_init(release="fun-release", environment="not-fun-env") + sentry_init(release="fun-release", + environment="not-fun-env") envelopes = capture_envelopes() hub = Hub.current @@ -47,7 +48,7 @@ def test_aggregates(sentry_init, capture_envelopes): sentry_init( release="fun-release", environment="not-fun-env", - _experiments={"auto_session_tracking": True, "session_mode": "request"}, + session_mode="request", ) envelopes = capture_envelopes() @@ -85,3 +86,40 @@ def test_aggregates(sentry_init, capture_envelopes): assert len(aggregates) == 1 assert aggregates[0]["exited"] == 2 assert aggregates[0]["errored"] == 1 + + +def test_aggregates_explicitly_disabled_session_tracking_request_mode( + sentry_init, capture_envelopes): + sentry_init( + release="fun-release", + environment="not-fun-env", + auto_session_tracking=False, + session_mode="request", + ) + envelopes = capture_envelopes() + + hub = Hub.current + + with auto_session_tracking(): + with sentry_sdk.push_scope(): + try: + raise Exception("all is wrong") + except Exception: + sentry_sdk.capture_exception() + + with auto_session_tracking(): + pass + + hub.start_session() + hub.end_session() + + sentry_sdk.flush() + + sess = envelopes[1] + assert len(sess.items) == 1 + sess_event = sess.items[0].payload.json + + aggregates = sorted_aggregates(sess_event) + assert len(aggregates) == 1 + assert aggregates[0]["exited"] == 1 + assert "errored" not in aggregates[0] From c6759d27e61bec05a5f0760fd9a6b60de6106434 Mon Sep 17 00:00:00 2001 From: sentry-bot Date: Fri, 5 Feb 2021 12:38:51 +0000 Subject: [PATCH 03/18] fix: Formatting --- sentry_sdk/client.py | 4 +--- tests/test_sessions.py | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/sentry_sdk/client.py b/sentry_sdk/client.py index d33782c6c5..22cc48aa36 100644 --- a/sentry_sdk/client.py +++ b/sentry_sdk/client.py @@ -105,9 +105,7 @@ def _capture_envelope(envelope): try: _client_init_debug.set(self.options["debug"]) self.transport = make_transport(self.options) - session_mode = self.options.get( - "session_mode", "application" - ) + session_mode = self.options.get("session_mode", "application") self.session_flusher = SessionFlusher( capture_func=_capture_envelope, session_mode=session_mode ) diff --git a/tests/test_sessions.py b/tests/test_sessions.py index d79472436e..d3aa950a5e 100644 --- a/tests/test_sessions.py +++ b/tests/test_sessions.py @@ -11,8 +11,7 @@ def sorted_aggregates(item): def test_basic(sentry_init, capture_envelopes): - sentry_init(release="fun-release", - environment="not-fun-env") + sentry_init(release="fun-release", environment="not-fun-env") envelopes = capture_envelopes() hub = Hub.current @@ -89,7 +88,8 @@ def test_aggregates(sentry_init, capture_envelopes): def test_aggregates_explicitly_disabled_session_tracking_request_mode( - sentry_init, capture_envelopes): + sentry_init, capture_envelopes +): sentry_init( release="fun-release", environment="not-fun-env", From 8d69b07a156b27deb5fa1d33d11ac9e93c44f56e Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Fri, 5 Feb 2021 13:51:17 +0100 Subject: [PATCH 04/18] Fixed type error --- sentry_sdk/sessions.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sentry_sdk/sessions.py b/sentry_sdk/sessions.py index 008825f006..dd1a4a3c78 100644 --- a/sentry_sdk/sessions.py +++ b/sentry_sdk/sessions.py @@ -16,10 +16,11 @@ from typing import Dict from typing import List from typing import Generator + from typing import Union def is_auto_session_tracking_enabled(hub=None): - # type: (Optional[sentry_sdk.Hub]) -> bool + # type: (Optional[sentry_sdk.Hub]) -> Union[bool, None] """Utility function to find out if session tracking is enabled.""" if hub is None: hub = sentry_sdk.Hub.current From bce03e3f8c994ed9e9f2dba50828f84573f82db8 Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Fri, 5 Feb 2021 15:00:39 +0100 Subject: [PATCH 05/18] Removed auto_session_tracking from from Experiment type --- sentry_sdk/consts.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sentry_sdk/consts.py b/sentry_sdk/consts.py index 57d1f54fa6..5d140e221d 100644 --- a/sentry_sdk/consts.py +++ b/sentry_sdk/consts.py @@ -31,7 +31,6 @@ { "max_spans": Optional[int], "record_sql_params": Optional[bool], - "auto_session_tracking": Optional[bool], "smart_transaction_trimming": Optional[bool], }, total=False, From 766a05465fa2a103489ad15b5ce1b96ee430104d Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Fri, 5 Feb 2021 15:00:56 +0100 Subject: [PATCH 06/18] Removed redundant default --- sentry_sdk/sessions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry_sdk/sessions.py b/sentry_sdk/sessions.py index dd1a4a3c78..1949a4212c 100644 --- a/sentry_sdk/sessions.py +++ b/sentry_sdk/sessions.py @@ -27,7 +27,7 @@ def is_auto_session_tracking_enabled(hub=None): should_track = hub.scope._force_auto_session_tracking if should_track is None: client_options = hub.client.options if hub.client else {} - should_track = client_options.get("auto_session_tracking", True) + should_track = client_options["auto_session_tracking"] return should_track From 3a3db4d39fa6542cde90d6db945312caa485619f Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Mon, 22 Feb 2021 11:26:22 +0100 Subject: [PATCH 07/18] Auto detection of session mode when auto_session_tracking is enabled --- sentry_sdk/client.py | 4 ++-- sentry_sdk/consts.py | 1 - sentry_sdk/hub.py | 6 +++++- sentry_sdk/integrations/wsgi.py | 2 +- sentry_sdk/session.py | 2 ++ sentry_sdk/sessions.py | 13 +++++++------ tests/test_sessions.py | 16 +++++++--------- 7 files changed, 24 insertions(+), 20 deletions(-) diff --git a/sentry_sdk/client.py b/sentry_sdk/client.py index 22cc48aa36..5ddc471383 100644 --- a/sentry_sdk/client.py +++ b/sentry_sdk/client.py @@ -105,9 +105,9 @@ def _capture_envelope(envelope): try: _client_init_debug.set(self.options["debug"]) self.transport = make_transport(self.options) - session_mode = self.options.get("session_mode", "application") + self.session_flusher = SessionFlusher( - capture_func=_capture_envelope, session_mode=session_mode + capture_func=_capture_envelope ) request_bodies = ("always", "never", "small", "medium") diff --git a/sentry_sdk/consts.py b/sentry_sdk/consts.py index 1e5b46554e..c18f249fc1 100644 --- a/sentry_sdk/consts.py +++ b/sentry_sdk/consts.py @@ -75,7 +75,6 @@ def __init__( traces_sampler=None, # type: Optional[TracesSampler] auto_enabling_integrations=True, # type: bool auto_session_tracking=True, # type: bool - session_mode="application", # type: str _experiments={}, # type: Experiments # noqa: B006 ): # type: (...) -> None diff --git a/sentry_sdk/hub.py b/sentry_sdk/hub.py index 8afa4938a2..4e77b0068f 100644 --- a/sentry_sdk/hub.py +++ b/sentry_sdk/hub.py @@ -623,7 +623,10 @@ def inner(): return inner() - def start_session(self): + def start_session( + self, + session_mode="application" # type: str + ): # type: (...) -> None """Starts a new session.""" self.end_session() @@ -632,6 +635,7 @@ def start_session(self): release=client.options["release"] if client else None, environment=client.options["environment"] if client else None, user=scope._user, + session_mode=session_mode ) def end_session(self): diff --git a/sentry_sdk/integrations/wsgi.py b/sentry_sdk/integrations/wsgi.py index 13b960a713..2f63298ffa 100644 --- a/sentry_sdk/integrations/wsgi.py +++ b/sentry_sdk/integrations/wsgi.py @@ -103,7 +103,7 @@ def __call__(self, environ, start_response): _wsgi_middleware_applied.set(True) try: hub = Hub(Hub.current) - with auto_session_tracking(hub): + with auto_session_tracking(hub, session_mode="request"): with hub: with capture_internal_exceptions(): with hub.configure_scope() as scope: diff --git a/sentry_sdk/session.py b/sentry_sdk/session.py index d22c0e70be..f771bf5415 100644 --- a/sentry_sdk/session.py +++ b/sentry_sdk/session.py @@ -30,6 +30,7 @@ def _make_uuid( class Session(object): def __init__( self, + session_mode, # type: str sid=None, # type: Optional[Union[str, uuid.UUID]] did=None, # type: Optional[str] timestamp=None, # type: Optional[datetime] @@ -58,6 +59,7 @@ def __init__( self.duration = None # type: Optional[float] self.user_agent = None # type: Optional[str] self.ip_address = None # type: Optional[str] + self.session_mode = session_mode # type: str self.errors = 0 self.update( diff --git a/sentry_sdk/sessions.py b/sentry_sdk/sessions.py index 1949a4212c..4fb5ef592c 100644 --- a/sentry_sdk/sessions.py +++ b/sentry_sdk/sessions.py @@ -32,14 +32,17 @@ def is_auto_session_tracking_enabled(hub=None): @contextmanager -def auto_session_tracking(hub=None): - # type: (Optional[sentry_sdk.Hub]) -> Generator[None, None, None] +def auto_session_tracking(hub=None, session_mode=None): + # type: (Optional[sentry_sdk.Hub], Optional[str]) -> Generator[None, None, None] """Starts and stops a session automatically around a block.""" if hub is None: hub = sentry_sdk.Hub.current should_track = is_auto_session_tracking_enabled(hub) if should_track: - hub.start_session() + if session_mode: + hub.start_session(session_mode=session_mode) + else: + hub.start_session() try: yield finally: @@ -60,12 +63,10 @@ class SessionFlusher(object): def __init__( self, capture_func, # type: Callable[[Envelope], None] - session_mode, # type: str flush_interval=60, # type: int ): # type: (...) -> None self.capture_func = capture_func - self.session_mode = session_mode self.flush_interval = flush_interval self.pending_sessions = [] # type: List[Any] self.pending_aggregates = {} # type: Dict[Any, Any] @@ -159,7 +160,7 @@ def add_session( self, session # type: Session ): # type: (...) -> None - if self.session_mode == "request": + if session.session_mode == "request": self.add_aggregate_session(session) else: self.pending_sessions.append(session.to_json()) diff --git a/tests/test_sessions.py b/tests/test_sessions.py index d3aa950a5e..24c8f6927f 100644 --- a/tests/test_sessions.py +++ b/tests/test_sessions.py @@ -47,13 +47,12 @@ def test_aggregates(sentry_init, capture_envelopes): sentry_init( release="fun-release", environment="not-fun-env", - session_mode="request", ) envelopes = capture_envelopes() hub = Hub.current - with auto_session_tracking(): + with auto_session_tracking(session_mode="request"): with sentry_sdk.push_scope(): try: with sentry_sdk.configure_scope() as scope: @@ -62,10 +61,10 @@ def test_aggregates(sentry_init, capture_envelopes): except Exception: sentry_sdk.capture_exception() - with auto_session_tracking(): + with auto_session_tracking(session_mode="request"): pass - hub.start_session() + hub.start_session(session_mode="request") hub.end_session() sentry_sdk.flush() @@ -93,24 +92,23 @@ def test_aggregates_explicitly_disabled_session_tracking_request_mode( sentry_init( release="fun-release", environment="not-fun-env", - auto_session_tracking=False, - session_mode="request", + auto_session_tracking=False ) envelopes = capture_envelopes() hub = Hub.current - with auto_session_tracking(): + with auto_session_tracking(session_mode="request"): with sentry_sdk.push_scope(): try: raise Exception("all is wrong") except Exception: sentry_sdk.capture_exception() - with auto_session_tracking(): + with auto_session_tracking(session_mode="request"): pass - hub.start_session() + hub.start_session(session_mode="request") hub.end_session() sentry_sdk.flush() From c073123b54f6e4ec39e26db4fdf70466745c1779 Mon Sep 17 00:00:00 2001 From: sentry-bot Date: Mon, 22 Feb 2021 10:27:12 +0000 Subject: [PATCH 08/18] fix: Formatting --- sentry_sdk/client.py | 4 +--- sentry_sdk/hub.py | 5 ++--- tests/test_sessions.py | 4 +--- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/sentry_sdk/client.py b/sentry_sdk/client.py index 5ddc471383..7687baa76f 100644 --- a/sentry_sdk/client.py +++ b/sentry_sdk/client.py @@ -106,9 +106,7 @@ def _capture_envelope(envelope): _client_init_debug.set(self.options["debug"]) self.transport = make_transport(self.options) - self.session_flusher = SessionFlusher( - capture_func=_capture_envelope - ) + self.session_flusher = SessionFlusher(capture_func=_capture_envelope) request_bodies = ("always", "never", "small", "medium") if self.options["request_bodies"] not in request_bodies: diff --git a/sentry_sdk/hub.py b/sentry_sdk/hub.py index 4e77b0068f..2e378cb56d 100644 --- a/sentry_sdk/hub.py +++ b/sentry_sdk/hub.py @@ -624,8 +624,7 @@ def inner(): return inner() def start_session( - self, - session_mode="application" # type: str + self, session_mode="application" # type: str ): # type: (...) -> None """Starts a new session.""" @@ -635,7 +634,7 @@ def start_session( release=client.options["release"] if client else None, environment=client.options["environment"] if client else None, user=scope._user, - session_mode=session_mode + session_mode=session_mode, ) def end_session(self): diff --git a/tests/test_sessions.py b/tests/test_sessions.py index 24c8f6927f..09b42b70a4 100644 --- a/tests/test_sessions.py +++ b/tests/test_sessions.py @@ -90,9 +90,7 @@ def test_aggregates_explicitly_disabled_session_tracking_request_mode( sentry_init, capture_envelopes ): sentry_init( - release="fun-release", - environment="not-fun-env", - auto_session_tracking=False + release="fun-release", environment="not-fun-env", auto_session_tracking=False ) envelopes = capture_envelopes() From 3025157605541f93ff8d346713fde7935ac6c5bd Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Mon, 22 Feb 2021 11:50:30 +0100 Subject: [PATCH 09/18] Added test that ensures session mode is flips from applicatoin to request in WSGI handler --- tests/integrations/wsgi/test_wsgi.py | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/integrations/wsgi/test_wsgi.py b/tests/integrations/wsgi/test_wsgi.py index 1f9613997a..9da64ce908 100644 --- a/tests/integrations/wsgi/test_wsgi.py +++ b/tests/integrations/wsgi/test_wsgi.py @@ -1,6 +1,7 @@ from werkzeug.test import Client import pytest +import sentry_sdk from sentry_sdk.integrations.wsgi import SentryWsgiMiddleware try: @@ -201,3 +202,34 @@ def app(environ, start_response): } ) ) + + +def test_session_mode_defaults_to_request_mode_in_wsgi_handler(capture_envelopes, sentry_init): + """ + Test that ensures that even though the default `session_mode` for + auto_session_tracking is `application`, that flips to `request` when we are + in the WSGI handler + """ + def app(environ, start_response): + start_response("200 OK", []) + return ["Go get the ball! Good dog!"] + + traces_sampler = mock.Mock(return_value=True) + sentry_init(send_default_pii=True, traces_sampler=traces_sampler) + + app = SentryWsgiMiddleware(app) + envelopes = capture_envelopes() + + client = Client(app) + + client.get("/dogs/are/great/") + + sentry_sdk.flush() + + sess = envelopes[1] + assert len(sess.items) == 1 + sess_event = sess.items[0].payload.json + + aggregates = sess_event["aggregates"] + assert len(aggregates) == 1 + assert aggregates[0]["exited"] == 1 \ No newline at end of file From 631c4ce2ea5f9d1de525babbf69fb65ce643c08d Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Mon, 22 Feb 2021 11:51:52 +0100 Subject: [PATCH 10/18] New line at end of file --- tests/integrations/wsgi/test_wsgi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integrations/wsgi/test_wsgi.py b/tests/integrations/wsgi/test_wsgi.py index 9da64ce908..c63923f220 100644 --- a/tests/integrations/wsgi/test_wsgi.py +++ b/tests/integrations/wsgi/test_wsgi.py @@ -232,4 +232,4 @@ def app(environ, start_response): aggregates = sess_event["aggregates"] assert len(aggregates) == 1 - assert aggregates[0]["exited"] == 1 \ No newline at end of file + assert aggregates[0]["exited"] == 1 From 7aae491ccece935d5b3e085a973939489b2c549b Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Mon, 22 Feb 2021 11:52:31 +0100 Subject: [PATCH 11/18] Linting fixes --- tests/integrations/wsgi/test_wsgi.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/integrations/wsgi/test_wsgi.py b/tests/integrations/wsgi/test_wsgi.py index c63923f220..010d0688a8 100644 --- a/tests/integrations/wsgi/test_wsgi.py +++ b/tests/integrations/wsgi/test_wsgi.py @@ -204,12 +204,15 @@ def app(environ, start_response): ) -def test_session_mode_defaults_to_request_mode_in_wsgi_handler(capture_envelopes, sentry_init): +def test_session_mode_defaults_to_request_mode_in_wsgi_handler( + capture_envelopes, sentry_init +): """ Test that ensures that even though the default `session_mode` for auto_session_tracking is `application`, that flips to `request` when we are in the WSGI handler """ + def app(environ, start_response): start_response("200 OK", []) return ["Go get the ball! Good dog!"] From 0abc86d7ac5d02420b4e3d687c5b5f47e9539287 Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Mon, 22 Feb 2021 12:03:52 +0100 Subject: [PATCH 12/18] Added default for session_mode in auto_session_tracking --- sentry_sdk/sessions.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/sentry_sdk/sessions.py b/sentry_sdk/sessions.py index 4fb5ef592c..e8c6f8990b 100644 --- a/sentry_sdk/sessions.py +++ b/sentry_sdk/sessions.py @@ -32,17 +32,14 @@ def is_auto_session_tracking_enabled(hub=None): @contextmanager -def auto_session_tracking(hub=None, session_mode=None): - # type: (Optional[sentry_sdk.Hub], Optional[str]) -> Generator[None, None, None] +def auto_session_tracking(hub=None, session_mode="application"): + # type: (Optional[sentry_sdk.Hub], str) -> Generator[None, None, None] """Starts and stops a session automatically around a block.""" if hub is None: hub = sentry_sdk.Hub.current should_track = is_auto_session_tracking_enabled(hub) if should_track: - if session_mode: - hub.start_session(session_mode=session_mode) - else: - hub.start_session() + hub.start_session(session_mode=session_mode) try: yield finally: From a6f314204f115d85cd9ff931031ac6911cdc9ede Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Mon, 22 Feb 2021 12:13:59 +0100 Subject: [PATCH 13/18] Added defaults to session_mode to Session class --- sentry_sdk/session.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry_sdk/session.py b/sentry_sdk/session.py index f771bf5415..6e0b6b954c 100644 --- a/sentry_sdk/session.py +++ b/sentry_sdk/session.py @@ -30,7 +30,7 @@ def _make_uuid( class Session(object): def __init__( self, - session_mode, # type: str + session_mode="application", # type: str sid=None, # type: Optional[Union[str, uuid.UUID]] did=None, # type: Optional[str] timestamp=None, # type: Optional[datetime] From 8a8c50fa36a56a867b4dfa12cb042fa5673f6867 Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Mon, 22 Feb 2021 12:14:31 +0100 Subject: [PATCH 14/18] Fixed failing test due to changes in WSGI handler tracking requests: --- tests/integrations/flask/test_flask.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/integrations/flask/test_flask.py b/tests/integrations/flask/test_flask.py index 4d49015811..822b8c8196 100644 --- a/tests/integrations/flask/test_flask.py +++ b/tests/integrations/flask/test_flask.py @@ -276,13 +276,14 @@ def index(): first_event = first_event.get_event() error_event = error_event.get_event() session = session.items[0].payload.json + aggregates = session['aggregates'] assert first_event["exception"]["values"][0]["type"] == "ValueError" assert error_event["exception"]["values"][0]["type"] == "ZeroDivisionError" - assert session["status"] == "crashed" - assert session["did"] == "42" - assert session["errors"] == 2 - assert session["init"] + + assert len(aggregates) == 1 + assert aggregates[0]["crashed"] == 1 + assert aggregates[0]["started"] assert session["attrs"]["release"] == "demo-release" assert session["attrs"]["ip_address"] == "1.2.3.4" assert session["attrs"]["user_agent"] == "blafasel/1.0" From ab12d789e3e78c009250e52bad5acc4ae8bae621 Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Mon, 22 Feb 2021 12:15:09 +0100 Subject: [PATCH 15/18] Reordered param to the end --- sentry_sdk/session.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry_sdk/session.py b/sentry_sdk/session.py index 6e0b6b954c..98a8c72cbb 100644 --- a/sentry_sdk/session.py +++ b/sentry_sdk/session.py @@ -30,7 +30,6 @@ def _make_uuid( class Session(object): def __init__( self, - session_mode="application", # type: str sid=None, # type: Optional[Union[str, uuid.UUID]] did=None, # type: Optional[str] timestamp=None, # type: Optional[datetime] @@ -43,6 +42,7 @@ def __init__( ip_address=None, # type: Optional[str] errors=None, # type: Optional[int] user=None, # type: Optional[Any] + session_mode="application", # type: str ): # type: (...) -> None if sid is None: From 0d3ea9b6efdb0da287ae88b12b34fc924110d4bb Mon Sep 17 00:00:00 2001 From: sentry-bot Date: Mon, 22 Feb 2021 11:15:12 +0000 Subject: [PATCH 16/18] fix: Formatting --- tests/integrations/flask/test_flask.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integrations/flask/test_flask.py b/tests/integrations/flask/test_flask.py index 822b8c8196..4573e7ad36 100644 --- a/tests/integrations/flask/test_flask.py +++ b/tests/integrations/flask/test_flask.py @@ -276,7 +276,7 @@ def index(): first_event = first_event.get_event() error_event = error_event.get_event() session = session.items[0].payload.json - aggregates = session['aggregates'] + aggregates = session["aggregates"] assert first_event["exception"]["values"][0]["type"] == "ValueError" assert error_event["exception"]["values"][0]["type"] == "ZeroDivisionError" From 6d3bb64b4798f134f8e8351a465cab4ec45cfc9d Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Mon, 22 Feb 2021 12:59:07 +0100 Subject: [PATCH 17/18] Modified flask test to match request mode sessions --- tests/integrations/flask/test_flask.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests/integrations/flask/test_flask.py b/tests/integrations/flask/test_flask.py index 4573e7ad36..d155e74a98 100644 --- a/tests/integrations/flask/test_flask.py +++ b/tests/integrations/flask/test_flask.py @@ -247,9 +247,6 @@ def test_flask_session_tracking(sentry_init, capture_envelopes, app): sentry_init( integrations=[flask_sentry.FlaskIntegration()], release="demo-release", - _experiments=dict( - auto_session_tracking=True, - ), ) @app.route("/") @@ -285,8 +282,6 @@ def index(): assert aggregates[0]["crashed"] == 1 assert aggregates[0]["started"] assert session["attrs"]["release"] == "demo-release" - assert session["attrs"]["ip_address"] == "1.2.3.4" - assert session["attrs"]["user_agent"] == "blafasel/1.0" @pytest.mark.parametrize("data", [{}, []], ids=["empty-dict", "empty-list"]) From 6d633d6b3ed5ef2d3dd14dce9ed3dfef59efe2a3 Mon Sep 17 00:00:00 2001 From: Ahmed Etefy Date: Mon, 22 Feb 2021 13:04:32 +0100 Subject: [PATCH 18/18] Removed redundant typing Union --- sentry_sdk/sessions.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sentry_sdk/sessions.py b/sentry_sdk/sessions.py index e8c6f8990b..06ad880d0f 100644 --- a/sentry_sdk/sessions.py +++ b/sentry_sdk/sessions.py @@ -16,11 +16,10 @@ from typing import Dict from typing import List from typing import Generator - from typing import Union def is_auto_session_tracking_enabled(hub=None): - # type: (Optional[sentry_sdk.Hub]) -> Union[bool, None] + # type: (Optional[sentry_sdk.Hub]) -> bool """Utility function to find out if session tracking is enabled.""" if hub is None: hub = sentry_sdk.Hub.current