From 13793822525f1786436cb4c3b65783e6e7dc13ce Mon Sep 17 00:00:00 2001 From: William Conti Date: Mon, 3 Feb 2025 12:53:03 -0500 Subject: [PATCH] refactor errors --- tests/contrib/django/test_django.py | 2 +- .../test_djangorestframework.py | 2 +- tests/contrib/falcon/test_suite.py | 2 +- tests/contrib/flask/test_request.py | 7 +-- tests/contrib/molten/test_molten.py | 43 +++++++++--------- tests/contrib/pyramid/test_pyramid.py | 33 +++++++------- tests/contrib/starlette/test_starlette.py | 23 +++++++--- tests/contrib/tornado/test_tornado_web.py | 45 +++++++++---------- 8 files changed, 83 insertions(+), 74 deletions(-) diff --git a/tests/contrib/django/test_django.py b/tests/contrib/django/test_django.py index 3787a95cb38..c734a2e33e1 100644 --- a/tests/contrib/django/test_django.py +++ b/tests/contrib/django/test_django.py @@ -1823,7 +1823,7 @@ def test_inferred_spans_api_gateway_default(client, test_spans): web_span_name="django.request", web_span_component="django", web_span_service_name="django", - web_span_resource="GET ^$", + web_span_resource="GET ^error-500/$", api_gateway_service_name="local", api_gateway_resource="GET /", method="GET", diff --git a/tests/contrib/djangorestframework/test_djangorestframework.py b/tests/contrib/djangorestframework/test_djangorestframework.py index a8307deeb63..0b321a4dd96 100644 --- a/tests/contrib/djangorestframework/test_djangorestframework.py +++ b/tests/contrib/djangorestframework/test_djangorestframework.py @@ -65,7 +65,7 @@ def test_inferred_spans_api_gateway_default(client, test_spans): web_span, web_span_name="django.request", web_span_component="django", - web_span_service_name="tests.contrib.djangorestframework", + web_span_service_name="django", web_span_resource="GET /", api_gateway_service_name="local", api_gateway_resource="GET /", diff --git a/tests/contrib/falcon/test_suite.py b/tests/contrib/falcon/test_suite.py index 592a6cc4a6a..50c17a16787 100644 --- a/tests/contrib/falcon/test_suite.py +++ b/tests/contrib/falcon/test_suite.py @@ -344,7 +344,7 @@ def test_inferred_spans_api_gateway_default(self): api_gateway_resource="GET /", method="GET", route="/", - status_code="200", + status_code=test_endpoint["status"], url="local/", start=1736973768.0, is_distributed=test_headers == distributed_headers, diff --git a/tests/contrib/flask/test_request.py b/tests/contrib/flask/test_request.py index 94abb8c95c8..911c7ab14a6 100644 --- a/tests/contrib/flask/test_request.py +++ b/tests/contrib/flask/test_request.py @@ -330,7 +330,7 @@ def error_status_code(): web_span_service_name="flask", web_span_resource="GET /applicationerror", api_gateway_service_name="local", - api_gateway_resource="GET /applicationerror", + api_gateway_resource="GET /", method="GET", route="/", status_code="500", @@ -352,7 +352,7 @@ def error_status_code(): web_span_service_name="flask", web_span_resource="GET /returnerrorcode", api_gateway_service_name="local", - api_gateway_resource="GET /returnerrorcode", + api_gateway_resource="GET /", method="GET", route="/", status_code="599", @@ -406,8 +406,9 @@ def index(): web_span_name="flask.request", web_span_component="flask", web_span_service_name="flask", + web_span_resource="GET /", api_gateway_service_name="local", - resource="GET /returnerrorcode", + api_gateway_resource="GET /", method="GET", route="/", status_code="599", diff --git a/tests/contrib/molten/test_molten.py b/tests/contrib/molten/test_molten.py index 6993dbec146..78b812bdab0 100644 --- a/tests/contrib/molten/test_molten.py +++ b/tests/contrib/molten/test_molten.py @@ -14,8 +14,7 @@ from ddtrace.propagation.http import HTTP_HEADER_PARENT_ID from ddtrace.propagation.http import HTTP_HEADER_TRACE_ID from ddtrace.trace import Pin -from tests.tracer.utils_inferred_spans.test_helpers import assert_aws_api_gateway_span_behavior -from tests.tracer.utils_inferred_spans.test_helpers import assert_web_and_inferred_aws_api_gateway_common_metadata +from tests.tracer.utils_inferred_spans.test_helpers import assert_web_and_inferred_aws_api_gateway_span_data from tests.utils import TracerTestCase from tests.utils import assert_is_measured from tests.utils import assert_span_http_status_code @@ -481,27 +480,27 @@ def test_inferred_spans_api_gateway_default(self): if setting_enabled: aws_gateway_span = traces[0][0] web_span = traces[0][1] - assert web_span.name == "molten.request" - # Assert common behavior including aws gateway metadata - assert_aws_api_gateway_span_behavior(aws_gateway_span, "local") - assert_web_and_inferred_aws_api_gateway_common_metadata(web_span, aws_gateway_span) - assert ( - aws_gateway_span.resource - == test_headers["x-dd-proxy-httpmethod"] + " " + test_headers["x-dd-proxy-path"] + + assert_web_and_inferred_aws_api_gateway_span_data( + aws_gateway_span, + web_span, + web_span_name="molten.request", + web_span_component="molten", + web_span_service_name="molten", + web_span_resource=test_endpoint["resource_name"], + api_gateway_service_name="local", + api_gateway_resource="GET /", + method="GET", + route="/", + status_code=test_endpoint["status"], + url="local/", + start=1736973768, + is_distributed=test_headers == distributed_headers, + distributed_trace_id=1, + distributed_parent_id=2, + distributed_sampling_decision=True, + distributed_sampling_priority=USER_KEEP, ) - # Assert test specific behavior for molten - assert web_span.service == "molten" - assert web_span.resource == test_endpoint["resource_name"] - assert web_span.get_tag("http.url") == "http://127.0.0.1:8000" + test_endpoint["endpoint"] - assert web_span.get_tag("http.route") is None - assert web_span.get_tag("span.kind") == "server" - assert web_span.get_tag("component") == "molten" - assert web_span.get_tag("_dd.inferred_span") is None - if test_headers == distributed_headers: - assert web_span.sampled is True - assert web_span.trace_id == 1 - assert aws_gateway_span.trace_id == 1 - assert aws_gateway_span.get_metric(_SAMPLING_PRIORITY_KEY) == USER_KEEP else: web_span = traces[0][0] assert web_span._parent is None diff --git a/tests/contrib/pyramid/test_pyramid.py b/tests/contrib/pyramid/test_pyramid.py index 95d57609e6f..67094726505 100644 --- a/tests/contrib/pyramid/test_pyramid.py +++ b/tests/contrib/pyramid/test_pyramid.py @@ -7,8 +7,7 @@ from ddtrace.constants import _ORIGIN_KEY from ddtrace.constants import _SAMPLING_PRIORITY_KEY from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from tests.tracer.utils_inferred_spans.test_helpers import assert_aws_api_gateway_span_behavior -from tests.tracer.utils_inferred_spans.test_helpers import assert_web_and_inferred_aws_api_gateway_common_metadata +from tests.tracer.utils_inferred_spans.test_helpers import assert_web_and_inferred_aws_api_gateway_span_data from tests.utils import TracerTestCase from tests.utils import flaky from tests.webclient import Client @@ -333,22 +332,22 @@ def test_inferred_spans_api_gateway_default(self): if setting_enabled: aws_gateway_span = spans[0] web_span = spans[1] - assert web_span.name == "pyramid.request" - # Assert common behavior including aws gateway metadata - assert_aws_api_gateway_span_behavior(aws_gateway_span, "local") - assert_web_and_inferred_aws_api_gateway_common_metadata(web_span, aws_gateway_span) - assert ( - aws_gateway_span.resource - == test_headers["x-dd-proxy-httpmethod"] + " " + test_headers["x-dd-proxy-path"] + + assert_web_and_inferred_aws_api_gateway_span_data( + aws_gateway_span, + web_span, + web_span_name="pyramid.request", + web_span_component="pyramid", + web_span_service_name="pyramid", + web_span_resource=test_endpoint["resource_name"], + api_gateway_service_name="local", + api_gateway_resource="GET /", + method="GET", + route="/", + status_code=test_endpoint["status"], + url="local/", + start=1736973768, ) - # Assert test specific behavior for pyramid - assert web_span.service == "pyramid" - assert web_span.resource == test_endpoint["resource_name"] - assert test_endpoint["endpoint"] in web_span.get_tag("http.url") - assert web_span.get_tag("http.route") == test_endpoint["http.route"] - assert web_span.get_tag("span.kind") == "server" - assert web_span.get_tag("component") == "pyramid" - assert web_span.get_tag("_dd.inferred_span") is None else: web_span = spans[0] assert web_span._parent is None diff --git a/tests/contrib/starlette/test_starlette.py b/tests/contrib/starlette/test_starlette.py index 612fbe28cdc..adc7ebaf26f 100644 --- a/tests/contrib/starlette/test_starlette.py +++ b/tests/contrib/starlette/test_starlette.py @@ -16,8 +16,7 @@ from ddtrace.propagation import http as http_propagation from ddtrace.trace import Pin from tests.contrib.starlette.app import get_app -from tests.tracer.utils_inferred_spans.test_helpers import assert_aws_api_gateway_span_behavior -from tests.tracer.utils_inferred_spans.test_helpers import assert_web_and_inferred_aws_api_gateway_common_metadata +from tests.tracer.utils_inferred_spans.test_helpers import assert_web_and_inferred_aws_api_gateway_span_data from tests.utils import DummyTracer from tests.utils import TracerSpanContainer from tests.utils import override_global_config @@ -615,6 +614,20 @@ def test_inferred_spans_api_gateway(client, test_spans): client.get("/200", headers=headers) web_span = test_spans.find_span(name="starlette.request") aws_gateway_span = test_spans.find_span(name="aws.apigateway") - # Assert common behavior including aws gateway metadata - assert_aws_api_gateway_span_behavior(aws_gateway_span, "local") - assert_web_and_inferred_aws_api_gateway_common_metadata(web_span, aws_gateway_span) + + + assert_web_and_inferred_aws_api_gateway_span_data( + aws_gateway_span, + web_span, + web_span_name="molten.request", + web_span_component="molten", + web_span_service_name="molten", + web_span_resource="GET /200", + api_gateway_service_name="local", + api_gateway_resource="GET /", + method="GET", + route="/", + status_code="200", + url="local/", + start=1736973768, + ) diff --git a/tests/contrib/tornado/test_tornado_web.py b/tests/contrib/tornado/test_tornado_web.py index 73c7229520b..fd74c1e678f 100644 --- a/tests/contrib/tornado/test_tornado_web.py +++ b/tests/contrib/tornado/test_tornado_web.py @@ -9,8 +9,7 @@ from ddtrace.ext import http from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME from tests.opentracer.utils import init_tracer -from tests.tracer.utils_inferred_spans.test_helpers import assert_aws_api_gateway_span_behavior -from tests.tracer.utils_inferred_spans.test_helpers import assert_web_and_inferred_aws_api_gateway_common_metadata +from tests.tracer.utils_inferred_spans.test_helpers import assert_web_and_inferred_aws_api_gateway_span_data from tests.utils import assert_is_measured from tests.utils import assert_span_http_status_code @@ -725,29 +724,27 @@ def test_inferred_spans_api_gateway(self): if setting_enabled: aws_gateway_span = traces[0][0] web_span = traces[0][1] - assert web_span.name == "tornado.request" - # Assert common behavior including aws gateway metadata - assert_aws_api_gateway_span_behavior(aws_gateway_span, "local") - assert_web_and_inferred_aws_api_gateway_common_metadata(web_span, aws_gateway_span) - assert 1 == len(traces) - assert ( - aws_gateway_span.resource - == test_headers["x-dd-proxy-httpmethod"] + " " + test_headers["x-dd-proxy-path"] + + assert_web_and_inferred_aws_api_gateway_span_data( + aws_gateway_span, + web_span, + web_span_name="tornado.request", + web_span_component="tornado", + web_span_service_name="tornado-web", + web_span_resource=test_endpoint["resource_name"], + api_gateway_service_name="local", + api_gateway_resource="GET /", + method="GET", + route="/", + status_code=test_endpoint["status"], + url="local/", + start=1736973768, + is_distributed=test_headers == distributed_headers, + distributed_trace_id=1, + distributed_parent_id=2, + distributed_sampling_decision=True, + distributed_sampling_priority=USER_KEEP, ) - # Assert test specific behavior for tornado - assert web_span.service == "tornado-web" - assert web_span.resource == test_endpoint["resource_name"] - # Ports change per test, ie: http://127.0.0.1:59345/success/, which affects the http.url - assert test_endpoint["endpoint"] in web_span.get_tag("http.url") - assert web_span.get_tag("http.route") == test_endpoint["http.route"] - assert web_span.get_tag("span.kind") == "server" - assert web_span.get_tag("component") == "tornado" - assert web_span.get_tag("_dd.inferred_span") is None - if test_headers == distributed_headers: - assert web_span.sampled is True - assert web_span.trace_id == 1 - assert aws_gateway_span.trace_id == 1 - assert aws_gateway_span.get_metric(_SAMPLING_PRIORITY_KEY) == USER_KEEP else: web_span = traces[0][0] assert web_span._parent is None