def test_bad_http_code(mock_log, span, int_config, val, bad): trace_utils.set_http_meta(span, int_config, status_code=val) if bad: assert http.STATUS_CODE not in span.meta mock_log.debug.assert_called_once_with("failed to convert http status code %r to int", val) else: assert span.meta[http.STATUS_CODE] == str(val)
def test_set_http_meta_custom_errors(mock_log, span, int_config, error_codes, status_code, error, log_call): config.http_server.error_statuses = error_codes trace_utils.set_http_meta(span, int_config, status_code=status_code) assert span.error == error if log_call: mock_log.exception.assert_called_once_with(*log_call) else: mock_log.exception.assert_not_called()
def test_set_http_meta_no_headers(mock_store_headers, span, int_config): assert int_config.myint.is_header_tracing_configured is False trace_utils.set_http_meta( span, int_config.myint, request_headers={"HTTP_REQUEST_HEADER", "value"}, response_headers={"HTTP_RESPONSE_HEADER": "value"}, ) assert list(span.get_tags().keys()) == [ "runtime-id", ] mock_store_headers.assert_not_called()
def _set_span_meta(span, request, response): # type: (Span, httpx.Request, httpx.Response) -> None set_http_meta( span, config.httpx, method=request.method, url=_url_to_str(request.url), status_code=response.status_code if response else None, query=request.url.query, request_headers=request.headers, response_headers=response.headers if response else None, )
def test_set_http_meta(span, int_config, method, url, status_code, status_msg, query, request_headers): int_config.http.trace_headers(["my-header"]) int_config.trace_query_string = True trace_utils.set_http_meta( span, int_config, method=method, url=url, status_code=status_code, status_msg=status_msg, query=query, request_headers=request_headers, ) if method is not None: assert span.meta[http.METHOD] == method else: assert http.METHOD not in span.meta if url is not None: assert span.meta[http.URL] == stringify(url) else: assert http.URL not in span.meta if status_code is not None: assert span.meta[http.STATUS_CODE] == str(status_code) if 500 <= int(status_code) < 600: assert span.error == 1 else: assert span.error == 0 else: assert http.STATUS_CODE not in span.meta if status_msg is not None: assert span.meta[http.STATUS_MSG] == stringify(status_msg) if query is not None and int_config.trace_query_string: assert span.meta[http.QUERY_STRING] == query if request_headers is not None: for header, value in request_headers.items(): tag = "http.request.headers." + header assert span.get_tag(tag) == value
def test_sanitized_url_in_http_meta(span, int_config): FULL_URL = "http://example.com/search?q=test+query#frag?ment" STRIPPED_URL = "http://example.com/search#frag?ment" int_config.trace_query_string = False trace_utils.set_http_meta( span, int_config, method="GET", url=FULL_URL, status_code=200, ) assert span.get_tag(http.URL) == STRIPPED_URL int_config.trace_query_string = True trace_utils.set_http_meta( span, int_config, method="GET", url=FULL_URL, status_code=200, ) assert span.get_tag(http.URL) == FULL_URL
def test_set_http_meta(span, config, method, url, status_code): trace_utils.set_http_meta(span, config, method=method, url=url, status_code=status_code) if method is not None: assert span.meta[http.METHOD] == method else: assert http.METHOD not in span.meta if url is not None: assert span.meta[http.URL] == stringify(url) else: assert http.URL not in span.meta if status_code is not None: assert span.meta[http.STATUS_CODE] == str(status_code) if 500 <= int(status_code) < 600: assert span.error == 1 else: assert span.error == 0 else: assert http.STATUS_CODE not in span.meta