@@ -611,7 +611,7 @@ def test_metric_bucket_limits(capturing_server, response_code, make_client):
611611 assert capturing_server .captured [0 ].path == "/api/132/envelope/"
612612 capturing_server .clear_captured ()
613613
614- assert set (client .transport ._disabled_until ) == set ([ "metric_bucket" ])
614+ assert set (client .transport ._disabled_until ) == { "metric_bucket" }
615615
616616 client .transport .capture_envelope (envelope )
617617 client .capture_event ({"type" : "transaction" })
@@ -629,6 +629,43 @@ def test_metric_bucket_limits(capturing_server, response_code, make_client):
629629 ]
630630
631631
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+
632669@pytest .mark .parametrize ("response_code" , [200 , 429 ])
633670def test_metric_bucket_limits_with_namespace (
634671 capturing_server , response_code , make_client
0 commit comments