Skip to content

Commit

Permalink
Update Flask html meta helper (#2203)
Browse files Browse the repository at this point in the history
Update Flask html meta helper to use the new top level API for getting sentry-trace and baggage information.
  • Loading branch information
antonpirker committed Jul 4, 2023
1 parent 7113508 commit 8051d92
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 23 deletions.
5 changes: 4 additions & 1 deletion sentry_sdk/hub.py
Original file line number Diff line number Diff line change
Expand Up @@ -805,7 +805,10 @@ def trace_propagation_meta(self, span=None):

baggage = self.get_baggage()
if baggage is not None:
meta += '<meta name="%s" content="%s">' % (BAGGAGE_HEADER_NAME, baggage)
meta += '<meta name="%s" content="%s">' % (
BAGGAGE_HEADER_NAME,
baggage,
)

return meta

Expand Down
19 changes: 5 additions & 14 deletions sentry_sdk/integrations/flask.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from sentry_sdk.integrations._wsgi_common import RequestExtractor
from sentry_sdk.integrations.wsgi import SentryWsgiMiddleware
from sentry_sdk.scope import Scope
from sentry_sdk.tracing import SENTRY_TRACE_HEADER_NAME, SOURCE_FOR_STYLE
from sentry_sdk.tracing import SOURCE_FOR_STYLE
from sentry_sdk.utils import (
capture_internal_exceptions,
event_from_exception,
Expand Down Expand Up @@ -93,22 +93,13 @@ def sentry_patched_wsgi_app(self, environ, start_response):

def _add_sentry_trace(sender, template, context, **extra):
# type: (Flask, Any, Dict[str, Any], **Any) -> None

if "sentry_trace" in context:
return

sentry_span = Hub.current.scope.span
context["sentry_trace"] = (
Markup(
'<meta name="%s" content="%s" />'
% (
SENTRY_TRACE_HEADER_NAME,
sentry_span.to_traceparent(),
)
)
if sentry_span
else ""
)
hub = Hub.current
trace_meta = Markup(hub.trace_propagation_meta())
context["sentry_trace"] = trace_meta # for backwards compatibility
context["sentry_trace_meta"] = trace_meta


def _set_transaction_name_and_source(scope, transaction_style, request):
Expand Down
27 changes: 19 additions & 8 deletions tests/integrations/flask/test_flask.py
Original file line number Diff line number Diff line change
Expand Up @@ -806,22 +806,33 @@ def dispatch_request(self):
assert event["transaction"] == "hello_class"


def test_sentry_trace_context(sentry_init, app, capture_events):
sentry_init(integrations=[flask_sentry.FlaskIntegration()])
@pytest.mark.parametrize(
"template_string", ["{{ sentry_trace }}", "{{ sentry_trace_meta }}"]
)
def test_sentry_trace_context(sentry_init, app, capture_events, template_string):
sentry_init(integrations=[flask_sentry.FlaskIntegration()], traces_sample_rate=1.0)
events = capture_events()

@app.route("/")
def index():
sentry_span = Hub.current.scope.span
capture_message(sentry_span.to_traceparent())
return render_template_string("{{ sentry_trace }}")
hub = Hub.current
capture_message(hub.get_traceparent() + "\n" + hub.get_baggage())
return render_template_string(template_string)

with app.test_client() as client:
response = client.get("/")
assert response.status_code == 200
assert response.data.decode(
"utf-8"
) == '<meta name="sentry-trace" content="%s" />' % (events[0]["message"],)

rendered_meta = response.data.decode("utf-8")
traceparent, baggage = events[0]["message"].split("\n")
expected_meta = (
'<meta name="sentry-trace" content="%s"><meta name="baggage" content="%s">'
% (
traceparent,
baggage,
)
)
assert rendered_meta == expected_meta


def test_dont_override_sentry_trace_context(sentry_init, app):
Expand Down

0 comments on commit 8051d92

Please sign in to comment.