def test_get_config_handle_exception(mock_urlopen, caplog, elasticapm_client): transport = Transport("http://example.com/" + constants.EVENTS_API_PATH, client=elasticapm_client) mock_urlopen.side_effect = urllib3.exceptions.RequestError(transport.http, "http://example.com/", "boom") with caplog.at_level("DEBUG", "elasticapm.transport.http"): version, data, max_age = transport.get_config("1", {}) assert version == "1" assert max_age == 300 record = caplog.records[-1] assert "HTTP error" in record.msg
def test_get_config_empty_response(waiting_httpserver, caplog, elasticapm_client): waiting_httpserver.serve_content(code=200, content=b"", headers={"Cache-Control": "max-age=5"}) url = waiting_httpserver.url transport = Transport(url + "/" + constants.EVENTS_API_PATH, client=elasticapm_client) with caplog.at_level("DEBUG", "elasticapm.transport.http"): version, data, max_age = transport.get_config("1", {}) assert version == "1" assert data is None assert max_age == 5 record = caplog.records[-1] assert record.message == "APM Server answered with empty body and status code 200"
def test_get_config_cache_headers_304(waiting_httpserver, caplog, elasticapm_client): waiting_httpserver.serve_content(code=304, content=b"", headers={"Cache-Control": "max-age=5"}) url = waiting_httpserver.url transport = Transport(url + "/" + constants.EVENTS_API_PATH, client=elasticapm_client) with caplog.at_level("DEBUG", "elasticapm.transport.http"): version, data, max_age = transport.get_config("1", {}) assert waiting_httpserver.requests[0].headers["If-None-Match"] == "1" assert version == "1" assert data is None assert max_age == 5 record = caplog.records[-1] assert "Configuration unchanged" in record.msg
def test_get_config_bad_cache_control_header(waiting_httpserver, caplog, elasticapm_client): waiting_httpserver.serve_content( code=200, content=b'{"x": "y"}', headers={"Cache-Control": "max-age=fifty", "Etag": "2"} ) url = waiting_httpserver.url transport = Transport(url + "/" + constants.EVENTS_API_PATH, client=elasticapm_client) with caplog.at_level("DEBUG", "elasticapm.transport.http"): version, data, max_age = transport.get_config("1", {}) assert version == "2" assert data == {"x": "y"} assert max_age == 300 record = caplog.records[-1] assert record.message == "Could not parse Cache-Control header: max-age=fifty"
def test_get_config(waiting_httpserver, elasticapm_client): waiting_httpserver.serve_content(code=200, content=b'{"x": "y"}', headers={ "Cache-Control": "max-age=5", "Etag": "2" }) url = waiting_httpserver.url transport = Transport(url + "/" + constants.EVENTS_API_PATH, client=elasticapm_client) version, data, max_age = transport.get_config("1", {}) assert version == "2" assert data == {"x": "y"} assert max_age == 5
def test_get_config(waiting_httpserver, elasticapm_client): waiting_httpserver.serve_content( code=200, content=b'{"x": "y"}', headers={"Cache-Control": "max-age=5", "Etag": "2"} ) url = waiting_httpserver.url transport = Transport( url + "/" + constants.EVENTS_API_PATH, client=elasticapm_client, headers={"Content-Type": "application/x-ndjson", "Content-Encoding": "gzip"}, ) version, data, max_age = transport.get_config("1", {}) assert version == "2" assert data == {"x": "y"} assert max_age == 5 assert "Content-Encoding" not in waiting_httpserver.requests[0].headers assert waiting_httpserver.requests[0].headers["Content-Type"] == "application/json"