|
29 | 29 | from sentry_sdk.tracing import Span |
30 | 30 | from tests.conftest import ApproxDict, unpack_werkzeug_response |
31 | 31 | from tests.integrations.django.myapp.wsgi import application |
| 32 | +from tests.integrations.django.myapp.signals import myapp_custom_signal_silenced |
32 | 33 | from tests.integrations.django.utils import pytest_mark_django_db_decorator |
33 | 34 |
|
34 | 35 | DJANGO_VERSION = DJANGO_VERSION[:2] |
@@ -1035,6 +1036,47 @@ def test_signals_spans_disabled(sentry_init, client, capture_events): |
1035 | 1036 | assert not transaction["spans"] |
1036 | 1037 |
|
1037 | 1038 |
|
| 1039 | +EXPECTED_SIGNALS_SPANS_FILTERED = """\ |
| 1040 | +- op="http.server": description=null |
| 1041 | + - op="event.django": description="django.db.reset_queries" |
| 1042 | + - op="event.django": description="django.db.close_old_connections" |
| 1043 | + - op="event.django": description="tests.integrations.django.myapp.signals.signal_handler"\ |
| 1044 | +""" |
| 1045 | + |
| 1046 | + |
| 1047 | +def test_signals_spans_filtering(sentry_init, client, capture_events, render_span_tree): |
| 1048 | + sentry_init( |
| 1049 | + integrations=[ |
| 1050 | + DjangoIntegration( |
| 1051 | + middleware_spans=False, |
| 1052 | + signals_denylist=[ |
| 1053 | + myapp_custom_signal_silenced, |
| 1054 | + ], |
| 1055 | + ), |
| 1056 | + ], |
| 1057 | + traces_sample_rate=1.0, |
| 1058 | + ) |
| 1059 | + events = capture_events() |
| 1060 | + |
| 1061 | + client.get(reverse("send_myapp_custom_signal")) |
| 1062 | + |
| 1063 | + (transaction,) = events |
| 1064 | + |
| 1065 | + assert render_span_tree(transaction) == EXPECTED_SIGNALS_SPANS_FILTERED |
| 1066 | + |
| 1067 | + assert transaction["spans"][0]["op"] == "event.django" |
| 1068 | + assert transaction["spans"][0]["description"] == "django.db.reset_queries" |
| 1069 | + |
| 1070 | + assert transaction["spans"][1]["op"] == "event.django" |
| 1071 | + assert transaction["spans"][1]["description"] == "django.db.close_old_connections" |
| 1072 | + |
| 1073 | + assert transaction["spans"][2]["op"] == "event.django" |
| 1074 | + assert ( |
| 1075 | + transaction["spans"][2]["description"] |
| 1076 | + == "tests.integrations.django.myapp.signals.signal_handler" |
| 1077 | + ) |
| 1078 | + |
| 1079 | + |
1038 | 1080 | def test_csrf(sentry_init, client): |
1039 | 1081 | """ |
1040 | 1082 | Assert that CSRF view decorator works even with the view wrapped in our own |
|
0 commit comments