57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
|
import pytest
|
||
|
import os
|
||
|
from . import make_dsn, run
|
||
|
from .conditions import has_http
|
||
|
|
||
|
pytestmark = pytest.mark.skipif(not has_http, reason="tests need http")
|
||
|
|
||
|
|
||
|
def test_retry_after(cmake, httpserver):
|
||
|
tmp_path = cmake(["sentry_example"], {"SENTRY_BACKEND": "none"})
|
||
|
|
||
|
env = dict(os.environ, SENTRY_DSN=make_dsn(httpserver))
|
||
|
|
||
|
# should respect retry-after also with `200` requests
|
||
|
httpserver.expect_oneshot_request("/api/123456/envelope/").respond_with_data(
|
||
|
"OK", 200, {"retry-after": "60"}
|
||
|
)
|
||
|
run(tmp_path, "sentry_example", ["log", "capture-multiple"], check=True, env=env)
|
||
|
assert len(httpserver.log) == 1
|
||
|
|
||
|
httpserver.expect_oneshot_request("/api/123456/envelope/").respond_with_data(
|
||
|
"OK", 429, {"retry-after": "60"}
|
||
|
)
|
||
|
run(tmp_path, "sentry_example", ["log", "capture-multiple"], check=True, env=env)
|
||
|
assert len(httpserver.log) == 2
|
||
|
|
||
|
|
||
|
def test_rate_limits(cmake, httpserver):
|
||
|
tmp_path = cmake(["sentry_example"], {"SENTRY_BACKEND": "none"})
|
||
|
|
||
|
env = dict(os.environ, SENTRY_DSN=make_dsn(httpserver))
|
||
|
headers = {"X-Sentry-Rate-Limits": "60::organization"}
|
||
|
|
||
|
httpserver.expect_oneshot_request("/api/123456/envelope/").respond_with_data(
|
||
|
"OK", 200, headers
|
||
|
)
|
||
|
run(tmp_path, "sentry_example", ["log", "capture-multiple"], check=True, env=env)
|
||
|
assert len(httpserver.log) == 1
|
||
|
|
||
|
httpserver.expect_oneshot_request("/api/123456/envelope/").respond_with_data(
|
||
|
"OK", 429, headers
|
||
|
)
|
||
|
run(tmp_path, "sentry_example", ["log", "capture-multiple"], check=True, env=env)
|
||
|
assert len(httpserver.log) == 2
|
||
|
|
||
|
|
||
|
def test_only_429(cmake, httpserver):
|
||
|
tmp_path = cmake(["sentry_example"], {"SENTRY_BACKEND": "none"})
|
||
|
|
||
|
env = dict(os.environ, SENTRY_DSN=make_dsn(httpserver))
|
||
|
|
||
|
httpserver.expect_oneshot_request("/api/123456/envelope/").respond_with_data(
|
||
|
"OK", 429
|
||
|
)
|
||
|
run(tmp_path, "sentry_example", ["log", "capture-multiple"], check=True, env=env)
|
||
|
assert len(httpserver.log) == 1
|