| 
22 | 22 | from sentry_sdk.consts import SPANDATA  | 
23 | 23 | from sentry_sdk.integrations.django import DjangoIntegration  | 
24 | 24 | from sentry_sdk.integrations.django.signals_handlers import _get_receiver_name  | 
 | 25 | +from sentry_sdk.integrations.django.caching import _get_span_description  | 
25 | 26 | from sentry_sdk.integrations.executing import ExecutingIntegration  | 
26 | 27 | from tests.integrations.django.myapp.wsgi import application  | 
27 | 28 | from tests.integrations.django.utils import pytest_mark_django_db_decorator  | 
@@ -1035,20 +1036,20 @@ def test_cache_spans_middleware(  | 
1035 | 1036 | 
 
  | 
1036 | 1037 |     (first_event, second_event) = events  | 
1037 | 1038 |     assert len(first_event["spans"]) == 1  | 
1038 |  | -    assert first_event["spans"][0]["op"] == "cache"  | 
 | 1039 | +    assert first_event["spans"][0]["op"] == "cache.get_item"  | 
1039 | 1040 |     assert first_event["spans"][0]["description"].startswith(  | 
1040 | 1041 |         "get views.decorators.cache.cache_header."  | 
1041 | 1042 |     )  | 
1042 | 1043 |     assert first_event["spans"][0]["data"] == {"cache.hit": False}  | 
1043 | 1044 | 
 
  | 
1044 | 1045 |     assert len(second_event["spans"]) == 2  | 
1045 |  | -    assert second_event["spans"][0]["op"] == "cache"  | 
 | 1046 | +    assert second_event["spans"][0]["op"] == "cache.get_item"  | 
1046 | 1047 |     assert second_event["spans"][0]["description"].startswith(  | 
1047 | 1048 |         "get views.decorators.cache.cache_header."  | 
1048 | 1049 |     )  | 
1049 | 1050 |     assert second_event["spans"][0]["data"] == {"cache.hit": False}  | 
1050 | 1051 | 
 
  | 
1051 |  | -    assert second_event["spans"][1]["op"] == "cache"  | 
 | 1052 | +    assert second_event["spans"][1]["op"] == "cache.get_item"  | 
1052 | 1053 |     assert second_event["spans"][1]["description"].startswith(  | 
1053 | 1054 |         "get views.decorators.cache.cache_page."  | 
1054 | 1055 |     )  | 
@@ -1077,20 +1078,20 @@ def test_cache_spans_decorator(sentry_init, client, capture_events, use_django_c  | 
1077 | 1078 | 
 
  | 
1078 | 1079 |     (first_event, second_event) = events  | 
1079 | 1080 |     assert len(first_event["spans"]) == 1  | 
1080 |  | -    assert first_event["spans"][0]["op"] == "cache"  | 
 | 1081 | +    assert first_event["spans"][0]["op"] == "cache.get_item"  | 
1081 | 1082 |     assert first_event["spans"][0]["description"].startswith(  | 
1082 | 1083 |         "get views.decorators.cache.cache_header."  | 
1083 | 1084 |     )  | 
1084 | 1085 |     assert first_event["spans"][0]["data"] == {"cache.hit": False}  | 
1085 | 1086 | 
 
  | 
1086 | 1087 |     assert len(second_event["spans"]) == 2  | 
1087 |  | -    assert second_event["spans"][0]["op"] == "cache"  | 
 | 1088 | +    assert second_event["spans"][0]["op"] == "cache.get_item"  | 
1088 | 1089 |     assert second_event["spans"][0]["description"].startswith(  | 
1089 | 1090 |         "get views.decorators.cache.cache_header."  | 
1090 | 1091 |     )  | 
1091 | 1092 |     assert second_event["spans"][0]["data"] == {"cache.hit": False}  | 
1092 | 1093 | 
 
  | 
1093 |  | -    assert second_event["spans"][1]["op"] == "cache"  | 
 | 1094 | +    assert second_event["spans"][1]["op"] == "cache.get_item"  | 
1094 | 1095 |     assert second_event["spans"][1]["description"].startswith(  | 
1095 | 1096 |         "get views.decorators.cache.cache_page."  | 
1096 | 1097 |     )  | 
@@ -1121,16 +1122,49 @@ def test_cache_spans_templatetag(  | 
1121 | 1122 | 
 
  | 
1122 | 1123 |     (first_event, second_event) = events  | 
1123 | 1124 |     assert len(first_event["spans"]) == 1  | 
1124 |  | -    assert first_event["spans"][0]["op"] == "cache"  | 
 | 1125 | +    assert first_event["spans"][0]["op"] == "cache.get_item"  | 
1125 | 1126 |     assert first_event["spans"][0]["description"].startswith(  | 
1126 | 1127 |         "get template.cache.some_identifier."  | 
1127 | 1128 |     )  | 
1128 | 1129 |     assert first_event["spans"][0]["data"] == {"cache.hit": False}  | 
1129 | 1130 | 
 
  | 
1130 | 1131 |     assert len(second_event["spans"]) == 1  | 
1131 |  | -    assert second_event["spans"][0]["op"] == "cache"  | 
 | 1132 | +    assert second_event["spans"][0]["op"] == "cache.get_item"  | 
1132 | 1133 |     assert second_event["spans"][0]["description"].startswith(  | 
1133 | 1134 |         "get template.cache.some_identifier."  | 
1134 | 1135 |     )  | 
1135 | 1136 |     assert second_event["spans"][0]["data"]["cache.hit"]  | 
1136 | 1137 |     assert "cache.item_size" in second_event["spans"][0]["data"]  | 
 | 1138 | + | 
 | 1139 | + | 
 | 1140 | +@pytest.mark.parametrize(  | 
 | 1141 | +    "method_name, args, kwargs, expected_description",  | 
 | 1142 | +    [  | 
 | 1143 | +        ("get", None, None, "get "),  | 
 | 1144 | +        ("get", [], {}, "get "),  | 
 | 1145 | +        ("get", ["bla", "blub", "foo"], {}, "get bla"),  | 
 | 1146 | +        (  | 
 | 1147 | +            "get_many",  | 
 | 1148 | +            [["bla 1", "bla 2", "bla 3"], "blub", "foo"],  | 
 | 1149 | +            {},  | 
 | 1150 | +            "get_many ['bla 1', 'bla 2', 'bla 3']",  | 
 | 1151 | +        ),  | 
 | 1152 | +        (  | 
 | 1153 | +            "get_many",  | 
 | 1154 | +            [["bla 1", "bla 2", "bla 3"], "blub", "foo"],  | 
 | 1155 | +            {"key": "bar"},  | 
 | 1156 | +            "get_many ['bla 1', 'bla 2', 'bla 3']",  | 
 | 1157 | +        ),  | 
 | 1158 | +        ("get", [], {"key": "bar"}, "get bar"),  | 
 | 1159 | +        (  | 
 | 1160 | +            "get",  | 
 | 1161 | +            "something",  | 
 | 1162 | +            {},  | 
 | 1163 | +            "get s",  | 
 | 1164 | +        ),  # this should never happen, just making sure that we are not raising an exception in that case.  | 
 | 1165 | +    ],  | 
 | 1166 | +)  | 
 | 1167 | +def test_cache_spans_get_span_description(  | 
 | 1168 | +    method_name, args, kwargs, expected_description  | 
 | 1169 | +):  | 
 | 1170 | +    assert _get_span_description(method_name, args, kwargs) == expected_description  | 
0 commit comments