@@ -611,7 +611,7 @@ def test_metric_bucket_limits(capturing_server, response_code, make_client):
611
611
assert capturing_server .captured [0 ].path == "/api/132/envelope/"
612
612
capturing_server .clear_captured ()
613
613
614
- assert set (client .transport ._disabled_until ) == set ([ "metric_bucket" ])
614
+ assert set (client .transport ._disabled_until ) == { "metric_bucket" }
615
615
616
616
client .transport .capture_envelope (envelope )
617
617
client .capture_event ({"type" : "transaction" })
@@ -629,6 +629,43 @@ def test_metric_bucket_limits(capturing_server, response_code, make_client):
629
629
]
630
630
631
631
632
+ @pytest .mark .parametrize ("response_code" , [200 , 429 ])
633
+ def test_log_item_limits (capturing_server , response_code , make_client ):
634
+ client = make_client ()
635
+ capturing_server .respond_with (
636
+ code = response_code ,
637
+ headers = {
638
+ "X-Sentry-Rate-Limits" : "4711:log_item:organization:quota_exceeded:custom"
639
+ },
640
+ )
641
+
642
+ envelope = Envelope ()
643
+ envelope .add_item (Item (payload = b"{}" , type = "log" ))
644
+ client .transport .capture_envelope (envelope )
645
+ client .flush ()
646
+
647
+ assert len (capturing_server .captured ) == 1
648
+ assert capturing_server .captured [0 ].path == "/api/132/envelope/"
649
+ capturing_server .clear_captured ()
650
+
651
+ assert set (client .transport ._disabled_until ) == {"log_item" }
652
+
653
+ client .transport .capture_envelope (envelope )
654
+ client .capture_event ({"type" : "transaction" })
655
+ client .flush ()
656
+
657
+ assert len (capturing_server .captured ) == 2
658
+
659
+ envelope = capturing_server .captured [0 ].envelope
660
+ assert envelope .items [0 ].type == "transaction"
661
+ envelope = capturing_server .captured [1 ].envelope
662
+ assert envelope .items [0 ].type == "client_report"
663
+ report = parse_json (envelope .items [0 ].get_bytes ())
664
+ assert report ["discarded_events" ] == [
665
+ {"category" : "log_item" , "reason" : "ratelimit_backoff" , "quantity" : 1 },
666
+ ]
667
+
668
+
632
669
@pytest .mark .parametrize ("response_code" , [200 , 429 ])
633
670
def test_metric_bucket_limits_with_namespace (
634
671
capturing_server , response_code , make_client
0 commit comments