@@ -223,8 +223,8 @@ def test_cache_spans_middleware(
223223    assert  second_event ["spans" ][0 ]["data" ]["cache.key" ][0 ].startswith (
224224        "views.decorators.cache.cache_header." 
225225    )
226-     assert  not   second_event ["spans" ][0 ]["data" ]["cache.hit" ]
227-     assert  "cache.item_size"   not   in   second_event ["spans" ][0 ]["data" ]
226+     assert  second_event ["spans" ][0 ]["data" ]["cache.hit" ]
227+     assert  second_event ["spans" ][0 ]["data" ][ "cache.item_size" ]  ==   2 
228228    # second_event - cache.get 2 
229229    assert  second_event ["spans" ][1 ]["op" ] ==  "cache.get" 
230230    assert  second_event ["spans" ][1 ]["description" ].startswith (
@@ -501,14 +501,76 @@ def test_cache_spans_item_size(sentry_init, client, capture_events, use_django_c
501501
502502    assert  len (second_event ["spans" ]) ==  2 
503503    assert  second_event ["spans" ][0 ]["op" ] ==  "cache.get" 
504-     assert  not   second_event ["spans" ][0 ]["data" ]["cache.hit" ]
505-     assert  "cache.item_size"   not   in   second_event ["spans" ][0 ]["data" ]
504+     assert  second_event ["spans" ][0 ]["data" ]["cache.hit" ]
505+     assert  second_event ["spans" ][0 ]["data" ][ "cache.item_size" ]  ==   2 
506506
507507    assert  second_event ["spans" ][1 ]["op" ] ==  "cache.get" 
508508    assert  second_event ["spans" ][1 ]["data" ]["cache.hit" ]
509509    assert  second_event ["spans" ][1 ]["data" ]["cache.item_size" ] ==  58 
510510
511511
512+ @pytest .mark .forked  
513+ @pytest_mark_django_db_decorator () 
514+ def  test_cache_spans_get_custom_default (
515+     sentry_init , capture_events , use_django_caching 
516+ ):
517+     sentry_init (
518+         integrations = [
519+             DjangoIntegration (
520+                 cache_spans = True ,
521+                 middleware_spans = False ,
522+                 signals_spans = False ,
523+             )
524+         ],
525+         traces_sample_rate = 1.0 ,
526+     )
527+     events  =  capture_events ()
528+ 
529+     id  =  os .getpid ()
530+ 
531+     from  django .core .cache  import  cache 
532+ 
533+     with  sentry_sdk .start_transaction ():
534+         cache .set (f"S{ id }  , "Sensitive1" )
535+         cache .set (f"S{ id  +  1 }  , "" )
536+ 
537+         cache .get (f"S{ id }  , "null" )
538+         cache .get (f"S{ id }  , default = "null" )
539+ 
540+         cache .get (f"S{ id  +  1 }  , "null" )
541+         cache .get (f"S{ id  +  1 }  , default = "null" )
542+ 
543+         cache .get (f"S{ id  +  2 }  , "null" )
544+         cache .get (f"S{ id  +  2 }  , default = "null" )
545+ 
546+     (transaction ,) =  events 
547+     assert  len (transaction ["spans" ]) ==  8 
548+ 
549+     assert  transaction ["spans" ][0 ]["op" ] ==  "cache.put" 
550+     assert  transaction ["spans" ][0 ]["description" ] ==  f"S{ id }  
551+ 
552+     assert  transaction ["spans" ][1 ]["op" ] ==  "cache.put" 
553+     assert  transaction ["spans" ][1 ]["description" ] ==  f"S{ id  +  1 }  
554+ 
555+     for  span  in  (transaction ["spans" ][2 ], transaction ["spans" ][3 ]):
556+         assert  span ["op" ] ==  "cache.get" 
557+         assert  span ["description" ] ==  f"S{ id }  
558+         assert  span ["data" ]["cache.hit" ]
559+         assert  span ["data" ]["cache.item_size" ] ==  10 
560+ 
561+     for  span  in  (transaction ["spans" ][4 ], transaction ["spans" ][5 ]):
562+         assert  span ["op" ] ==  "cache.get" 
563+         assert  span ["description" ] ==  f"S{ id  +  1 }  
564+         assert  span ["data" ]["cache.hit" ]
565+         assert  span ["data" ]["cache.item_size" ] ==  0 
566+ 
567+     for  span  in  (transaction ["spans" ][6 ], transaction ["spans" ][7 ]):
568+         assert  span ["op" ] ==  "cache.get" 
569+         assert  span ["description" ] ==  f"S{ id  +  2 }  
570+         assert  not  span ["data" ]["cache.hit" ]
571+         assert  "cache.item_size"  not  in span ["data" ]
572+ 
573+ 
512574@pytest .mark .forked  
513575@pytest_mark_django_db_decorator () 
514576def  test_cache_spans_get_many (sentry_init , capture_events , use_django_caching ):
@@ -538,24 +600,30 @@ def test_cache_spans_get_many(sentry_init, capture_events, use_django_caching):
538600
539601    assert  transaction ["spans" ][0 ]["op" ] ==  "cache.get" 
540602    assert  transaction ["spans" ][0 ]["description" ] ==  f"S{ id } { id  +  1 }  
603+     assert  not  transaction ["spans" ][0 ]["data" ]["cache.hit" ]
541604
542605    assert  transaction ["spans" ][1 ]["op" ] ==  "cache.get" 
543606    assert  transaction ["spans" ][1 ]["description" ] ==  f"S{ id }  
607+     assert  not  transaction ["spans" ][1 ]["data" ]["cache.hit" ]
544608
545609    assert  transaction ["spans" ][2 ]["op" ] ==  "cache.get" 
546610    assert  transaction ["spans" ][2 ]["description" ] ==  f"S{ id  +  1 }  
611+     assert  not  transaction ["spans" ][2 ]["data" ]["cache.hit" ]
547612
548613    assert  transaction ["spans" ][3 ]["op" ] ==  "cache.put" 
549614    assert  transaction ["spans" ][3 ]["description" ] ==  f"S{ id }  
550615
551616    assert  transaction ["spans" ][4 ]["op" ] ==  "cache.get" 
552617    assert  transaction ["spans" ][4 ]["description" ] ==  f"S{ id } { id  +  1 }  
618+     assert  transaction ["spans" ][4 ]["data" ]["cache.hit" ]
553619
554620    assert  transaction ["spans" ][5 ]["op" ] ==  "cache.get" 
555621    assert  transaction ["spans" ][5 ]["description" ] ==  f"S{ id }  
622+     assert  transaction ["spans" ][5 ]["data" ]["cache.hit" ]
556623
557624    assert  transaction ["spans" ][6 ]["op" ] ==  "cache.get" 
558625    assert  transaction ["spans" ][6 ]["description" ] ==  f"S{ id  +  1 }  
626+     assert  not  transaction ["spans" ][6 ]["data" ]["cache.hit" ]
559627
560628
561629@pytest .mark .forked  
0 commit comments