From 20d61738dc4ee9e6aa023be31fac726e8c69d02d Mon Sep 17 00:00:00 2001 From: Munir Abdinur Date: Tue, 4 Feb 2025 12:04:19 -0500 Subject: [PATCH] chore(pin): prevent overriding the global tracer --- ddtrace/_trace/pin.py | 30 +--------- ddtrace/contrib/internal/asgi/middleware.py | 5 +- ddtrace/contrib/internal/django/patch.py | 5 +- ddtrace/contrib/internal/mongoengine/trace.py | 8 +-- ddtrace/contrib/internal/pylibmc/client.py | 7 +-- ddtrace/contrib/internal/sqlalchemy/engine.py | 5 +- .../contrib/internal/tornado/application.py | 5 +- .../appsec/contrib_appsec/django_app/urls.py | 3 +- .../appsec/contrib_appsec/fastapi_app/app.py | 3 +- tests/appsec/contrib_appsec/flask_app/app.py | 3 +- tests/appsec/contrib_appsec/test_flask.py | 2 +- tests/appsec/contrib_appsec/utils.py | 7 ++- .../integrations/django_tests/conftest.py | 2 +- tests/commands/ddtrace_run_integration.py | 2 +- tests/contrib/aiobotocore/utils.py | 2 +- tests/contrib/aiohttp/test_aiohttp_client.py | 6 +- tests/contrib/aiohttp_jinja2/conftest.py | 2 +- .../aiohttp_jinja2/test_aiohttp_jinja2.py | 2 +- tests/contrib/aiomysql/test_aiomysql.py | 2 +- tests/contrib/aiopg/test.py | 2 +- tests/contrib/algoliasearch/test.py | 2 +- tests/contrib/anthropic/conftest.py | 2 +- tests/contrib/aredis/test_aredis.py | 4 +- tests/contrib/asyncpg/test_asyncpg.py | 2 +- tests/contrib/avro/test_avro.py | 2 +- tests/contrib/boto/test.py | 2 +- tests/contrib/botocore/test.py | 2 +- tests/contrib/botocore/test_bedrock.py | 2 +- tests/contrib/botocore/test_bedrock_llmobs.py | 2 +- tests/contrib/botocore/test_stepfunctions.py | 2 +- tests/contrib/cassandra/test.py | 2 +- tests/contrib/celery/autopatch.py | 2 +- tests/contrib/celery/base.py | 2 +- tests/contrib/celery/test_app.py | 2 +- tests/contrib/celery/test_integration.py | 2 +- tests/contrib/celery/test_patch.py | 2 +- tests/contrib/celery/test_tagging.py | 2 +- tests/contrib/consul/test.py | 2 +- tests/contrib/dbapi/test_dbapi.py | 2 +- tests/contrib/dbapi/test_dbapi_appsec.py | 2 +- tests/contrib/dbapi_async/test_dbapi_async.py | 2 +- tests/contrib/django/conftest.py | 2 +- tests/contrib/django/test_django_dbm.py | 2 +- tests/contrib/dogpile_cache/test_tracing.py | 2 +- tests/contrib/dramatiq/test_integration.py | 2 +- .../elasticsearch/test_elasticsearch.py | 2 +- tests/contrib/flask/__init__.py | 2 +- tests/contrib/flask/test_blueprint.py | 2 +- tests/contrib/flask/test_flask_helpers.py | 2 +- tests/contrib/flask/test_signals.py | 2 +- tests/contrib/flask/test_template.py | 2 +- .../flask_autopatch/test_flask_autopatch.py | 2 +- tests/contrib/google_generativeai/conftest.py | 2 +- tests/contrib/grpc/common.py | 2 +- tests/contrib/grpc/test_grpc.py | 2 +- tests/contrib/grpc_aio/test_grpc_aio.py | 2 +- tests/contrib/httplib/test_httplib.py | 2 +- .../httplib/test_httplib_distributed.py | 2 +- tests/contrib/httpx/test_httpx.py | 2 +- tests/contrib/httpx/test_httpx_pre_0_11.py | 2 +- tests/contrib/jinja2/test_jinja2.py | 2 +- tests/contrib/kafka/test_kafka.py | 10 ++-- tests/contrib/kombu/test.py | 2 +- tests/contrib/langchain/conftest.py | 2 +- tests/contrib/langgraph/conftest.py | 2 +- tests/contrib/mako/test_mako.py | 2 +- tests/contrib/mariadb/test_mariadb.py | 2 +- tests/contrib/molten/test_molten.py | 2 +- tests/contrib/molten/test_molten_di.py | 2 +- tests/contrib/mongoengine/test.py | 2 +- tests/contrib/mysql/test_mysql.py | 2 +- tests/contrib/mysqldb/test_mysqldb.py | 2 +- tests/contrib/openai/conftest.py | 2 +- tests/contrib/psycopg/test_psycopg.py | 2 +- tests/contrib/psycopg/test_psycopg_async.py | 2 +- tests/contrib/psycopg2/test_psycopg.py | 2 +- tests/contrib/pylibmc/test.py | 2 +- tests/contrib/pymemcache/test_client.py | 2 +- .../pymemcache/test_client_defaults.py | 2 +- tests/contrib/pymemcache/test_client_mixin.py | 2 +- tests/contrib/pymongo/test.py | 2 +- tests/contrib/pymysql/test_pymysql.py | 2 +- tests/contrib/pynamodb/test_pynamodb.py | 2 +- tests/contrib/pyodbc/test_pyodbc.py | 2 +- tests/contrib/pytest/test_pytest.py | 2 +- tests/contrib/redis/test_redis.py | 2 +- tests/contrib/redis/test_redis_asyncio.py | 2 +- tests/contrib/redis/test_redis_cluster.py | 2 +- .../redis/test_redis_cluster_asyncio.py | 16 +++--- tests/contrib/rediscluster/test.py | 2 +- tests/contrib/rq/test_rq.py | 2 +- tests/contrib/shared_tests.py | 2 +- tests/contrib/shared_tests_async.py | 2 +- tests/contrib/snowflake/test_snowflake.py | 2 +- tests/contrib/sqlalchemy/test_patch.py | 2 +- tests/contrib/sqlite3/test_sqlite3.py | 2 +- tests/contrib/starlette/test_starlette.py | 2 +- tests/contrib/subprocess/test_subprocess.py | 2 +- tests/contrib/urllib3/test_urllib3.py | 2 +- tests/contrib/vertexai/conftest.py | 2 +- tests/contrib/vertica/test_vertica.py | 2 +- tests/contrib/yaaredis/test_yaaredis.py | 2 +- tests/tracer/test_instance_config.py | 2 +- tests/tracer/test_trace_utils.py | 2 +- tests/utils.py | 57 +++++++++++++++++++ 105 files changed, 183 insertions(+), 169 deletions(-) diff --git a/ddtrace/_trace/pin.py b/ddtrace/_trace/pin.py index dd41a1040a1..1730a3f7b9e 100644 --- a/ddtrace/_trace/pin.py +++ b/ddtrace/_trace/pin.py @@ -38,19 +38,11 @@ def __init__( self, service=None, # type: Optional[str] tags=None, # type: Optional[Dict[str, str]] - tracer=None, _config=None, # type: Optional[Dict[str, Any]] ): # type: (...) -> None - if tracer is not None and tracer is not ddtrace.tracer: - deprecate( - "Initializing ddtrace.trace.Pin with `tracer` argument is deprecated", - message="All Pin instances should use the global tracer instance", - removal_version="3.0.0", - ) - tracer = tracer or ddtrace.tracer self.tags = tags - self.tracer = tracer + self.tracer = ddtrace.tracer self._target = None # type: Optional[int] # keep the configuration attribute internal because the # public API to access it is not the Pin class @@ -127,7 +119,6 @@ def override( obj, # type: Any service=None, # type: Optional[str] tags=None, # type: Optional[Dict[str, str]] - tracer=None, ): # type: (...) -> None """Override an object with the given attributes. @@ -139,20 +130,14 @@ def override( >>> # Override a pin for a specific connection >>> Pin.override(conn, service='user-db') """ - if tracer is not None: - deprecate( - "Calling ddtrace.trace.Pin.override(...) with the `tracer` argument is deprecated", - message="All Pin instances should use the global tracer instance", - removal_version="3.0.0", - ) if not obj: return pin = cls.get_from(obj) if pin is None: - Pin(service=service, tags=tags, tracer=tracer).onto(obj) + Pin(service=service, tags=tags).onto(obj) else: - pin.clone(service=service, tags=tags, tracer=tracer).onto(obj) + pin.clone(service=service, tags=tags).onto(obj) def enabled(self): # type: () -> bool @@ -198,7 +183,6 @@ def clone( self, service=None, # type: Optional[str] tags=None, # type: Optional[Dict[str, str]] - tracer=None, ): # type: (...) -> Pin """Return a clone of the pin with the given attributes replaced.""" @@ -206,13 +190,6 @@ def clone( if not tags and self.tags: tags = self.tags.copy() - if tracer is not None: - deprecate( - "Initializing ddtrace.trace.Pin with `tracer` argument is deprecated", - message="All Pin instances should use the global tracer instance", - removal_version="3.0.0", - ) - # we use a copy instead of a deepcopy because we expect configurations # to have only a root level dictionary without nested objects. Using # deepcopy introduces a big overhead: @@ -224,6 +201,5 @@ def clone( return Pin( service=service or self.service, tags=tags, - tracer=tracer or self.tracer, # do not clone the Tracer _config=config, ) diff --git a/ddtrace/contrib/internal/asgi/middleware.py b/ddtrace/contrib/internal/asgi/middleware.py index 7da2b11b929..efd214f35ef 100644 --- a/ddtrace/contrib/internal/asgi/middleware.py +++ b/ddtrace/contrib/internal/asgi/middleware.py @@ -152,10 +152,7 @@ async def __call__(self, scope, receive, send): # Calling ddtrace.trace.Pin(...) with the `tracer` argument is deprecated # Remove this if statement when the `tracer` argument is removed - if self.tracer is ddtrace.tracer: - pin = ddtrace.trace.Pin(service="asgi") - else: - pin = ddtrace.trace.Pin(service="asgi", tracer=self.tracer) + pin = ddtrace.trace.Pin(service="asgi") with core.context_with_data( "asgi.__call__", diff --git a/ddtrace/contrib/internal/django/patch.py b/ddtrace/contrib/internal/django/patch.py index ba96675fef3..235727f6cf2 100644 --- a/ddtrace/contrib/internal/django/patch.py +++ b/ddtrace/contrib/internal/django/patch.py @@ -151,10 +151,7 @@ def cursor(django, pin, func, instance, args, kwargs): # Calling ddtrace.pin.Pin(...) with the `tracer` argument generates a deprecation warning. # Remove this if statement when the `tracer` argument is removed - if pin.tracer is ddtrace.tracer: - pin = Pin(service, tags=tags) - else: - pin = Pin(service, tags=tags, tracer=pin.tracer) + pin = Pin(service, tags=tags) cursor = func(*args, **kwargs) diff --git a/ddtrace/contrib/internal/mongoengine/trace.py b/ddtrace/contrib/internal/mongoengine/trace.py index 5539cf1d2e4..94739b6fd81 100644 --- a/ddtrace/contrib/internal/mongoengine/trace.py +++ b/ddtrace/contrib/internal/mongoengine/trace.py @@ -29,11 +29,5 @@ def __call__(self, *args, **kwargs): client = self.__wrapped__(*args, **kwargs) pin = ddtrace.trace.Pin.get_from(self) if pin: - # Calling ddtrace.trace.Pin(...) with the `tracer` argument generates a deprecation warning. - # Remove this if statement when the `tracer` argument is removed - if pin.tracer is ddtrace.tracer: - ddtrace.trace.Pin(service=pin.service).onto(client) - else: - ddtrace.trace.Pin(service=pin.service, tracer=pin.tracer).onto(client) - + ddtrace.trace.Pin(service=pin.service).onto(client) return client diff --git a/ddtrace/contrib/internal/pylibmc/client.py b/ddtrace/contrib/internal/pylibmc/client.py index 5c48e8465f8..b918add8fbf 100644 --- a/ddtrace/contrib/internal/pylibmc/client.py +++ b/ddtrace/contrib/internal/pylibmc/client.py @@ -51,12 +51,7 @@ def __init__(self, client=None, service=memcached.SERVICE, tracer=None, *args, * super(TracedClient, self).__init__(client) schematized_service = schematize_service_name(service) - # Calling ddtrace.trace.Pin(...) with the `tracer` argument generates a deprecation warning. - # Remove this if statement when the `tracer` argument is removed - if tracer is ddtrace.tracer: - pin = ddtrace.trace.Pin(service=schematized_service) - else: - pin = ddtrace.trace.Pin(service=schematized_service, tracer=tracer) + pin = ddtrace.trace.Pin(service=schematized_service) pin.onto(self) # attempt to collect the pool of urls this client talks to diff --git a/ddtrace/contrib/internal/sqlalchemy/engine.py b/ddtrace/contrib/internal/sqlalchemy/engine.py index a3dcb324700..221a548ebdd 100644 --- a/ddtrace/contrib/internal/sqlalchemy/engine.py +++ b/ddtrace/contrib/internal/sqlalchemy/engine.py @@ -69,10 +69,7 @@ def __init__(self, tracer, service, engine): # attach the PIN # Calling ddtrace.trace.Pin(...) with the `tracer` argument generates a deprecation warning. # Remove this if statement when the `tracer` argument is removed - if self.tracer is ddtrace.tracer: - Pin(service=self.service).onto(engine) - else: - Pin(tracer=tracer, service=self.service).onto(engine) + Pin(service=self.service).onto(engine) listen(engine, "before_cursor_execute", self._before_cur_exec) listen(engine, "after_cursor_execute", self._after_cur_exec) diff --git a/ddtrace/contrib/internal/tornado/application.py b/ddtrace/contrib/internal/tornado/application.py index f36857b81b1..e4c8aacdc91 100644 --- a/ddtrace/contrib/internal/tornado/application.py +++ b/ddtrace/contrib/internal/tornado/application.py @@ -57,7 +57,4 @@ def tracer_config(__init__, app, args, kwargs): # configure the PIN object for template rendering # Required for backwards compatibility. Remove the else clause when # the `ddtrace.trace.Pin` object no longer accepts the Pin argument. - if tracer is ddtrace.tracer: - ddtrace.trace.Pin(service=service).onto(template) - else: - ddtrace.trace.Pin(service=service, tracer=tracer).onto(template) + ddtrace.trace.Pin(service=service).onto(template) diff --git a/tests/appsec/contrib_appsec/django_app/urls.py b/tests/appsec/contrib_appsec/django_app/urls.py index 3ca8557c550..c31b9fe2a75 100644 --- a/tests/appsec/contrib_appsec/django_app/urls.py +++ b/tests/appsec/contrib_appsec/django_app/urls.py @@ -13,6 +13,7 @@ import ddtrace.constants from ddtrace.trace import tracer +from tests.utils import Pin # django.conf.urls.url was deprecated in django 3 and removed in django 4 @@ -196,7 +197,7 @@ def login_user(request): def new_service(request, service_name: str): import ddtrace - ddtrace.trace.Pin.override(django, service=service_name, tracer=ddtrace.tracer) + Pin.override(django, service=service_name, tracer=ddtrace.tracer) return HttpResponse(service_name, status=200) diff --git a/tests/appsec/contrib_appsec/fastapi_app/app.py b/tests/appsec/contrib_appsec/fastapi_app/app.py index c636e65b7c3..2aea98bc5a0 100644 --- a/tests/appsec/contrib_appsec/fastapi_app/app.py +++ b/tests/appsec/contrib_appsec/fastapi_app/app.py @@ -13,6 +13,7 @@ import ddtrace.constants from ddtrace.trace import tracer +from tests.utils import Pin fake_secret_token = "DataDog" @@ -104,7 +105,7 @@ async def multi_view_no_param(request: Request): # noqa: B008 async def new_service(service_name: str, request: Request): # noqa: B008 import ddtrace - ddtrace.trace.Pin.override(app, service=service_name, tracer=ddtrace.tracer) + Pin.override(app, service=service_name, tracer=ddtrace.tracer) return HTMLResponse(service_name, 200) async def slow_numbers(minimum, maximum): diff --git a/tests/appsec/contrib_appsec/flask_app/app.py b/tests/appsec/contrib_appsec/flask_app/app.py index 32228375f37..c6aa32ccf0a 100644 --- a/tests/appsec/contrib_appsec/flask_app/app.py +++ b/tests/appsec/contrib_appsec/flask_app/app.py @@ -10,6 +10,7 @@ import ddtrace.constants from ddtrace.trace import tracer from tests.webclient import PingFilter +from tests.utils import Pin tracer._configure(trace_processors=[PingFilter()]) @@ -55,7 +56,7 @@ def multi_view(param_int=0, param_str=""): def new_service(service_name: str): import ddtrace - ddtrace.trace.Pin.override(Flask, service=service_name, tracer=ddtrace.tracer) + Pin.override(Flask, service=service_name, tracer=ddtrace.tracer) return service_name diff --git a/tests/appsec/contrib_appsec/test_flask.py b/tests/appsec/contrib_appsec/test_flask.py index b497de98bf9..6ebefd9dcd2 100644 --- a/tests/appsec/contrib_appsec/test_flask.py +++ b/tests/appsec/contrib_appsec/test_flask.py @@ -2,7 +2,7 @@ import pytest from ddtrace.internal.packages import get_version_for_package -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.appsec.contrib_appsec import utils from tests.utils import TracerTestCase diff --git a/tests/appsec/contrib_appsec/utils.py b/tests/appsec/contrib_appsec/utils.py index 5cf5e1da6b1..1cbfb8caf5a 100644 --- a/tests/appsec/contrib_appsec/utils.py +++ b/tests/appsec/contrib_appsec/utils.py @@ -19,6 +19,7 @@ from tests.utils import DummyTracer from tests.utils import override_env from tests.utils import override_global_config +from tests.utils import Pin class Interface: @@ -1567,8 +1568,8 @@ def test_tracer(): @contextmanager def post_tracer(interface): - original_tracer = getattr(ddtrace.trace.Pin.get_from(interface.framework), "tracer", None) - ddtrace.trace.Pin.override(interface.framework, tracer=interface.tracer) + original_tracer = getattr(Pin.get_from(interface.framework), "tracer", None) + Pin.override(interface.framework, tracer=interface.tracer) yield if original_tracer is not None: - ddtrace.trace.Pin.override(interface.framework, tracer=original_tracer) + Pin.override(interface.framework, tracer=original_tracer) diff --git a/tests/appsec/integrations/django_tests/conftest.py b/tests/appsec/integrations/django_tests/conftest.py index d150edf68be..bf7602e6026 100644 --- a/tests/appsec/integrations/django_tests/conftest.py +++ b/tests/appsec/integrations/django_tests/conftest.py @@ -6,7 +6,7 @@ from ddtrace.appsec._iast import enable_iast_propagation from ddtrace.contrib.internal.django.patch import patch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.appsec.iast.conftest import _end_iast_context_and_oce from tests.appsec.iast.conftest import _start_iast_context_and_oce from tests.utils import DummyTracer diff --git a/tests/commands/ddtrace_run_integration.py b/tests/commands/ddtrace_run_integration.py index c6cd9320777..2e93c586509 100644 --- a/tests/commands/ddtrace_run_integration.py +++ b/tests/commands/ddtrace_run_integration.py @@ -5,7 +5,7 @@ import redis -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.config import REDIS_CONFIG from tests.utils import DummyWriter diff --git a/tests/contrib/aiobotocore/utils.py b/tests/contrib/aiobotocore/utils.py index b51b6550327..f489a1b38a0 100644 --- a/tests/contrib/aiobotocore/utils.py +++ b/tests/contrib/aiobotocore/utils.py @@ -3,7 +3,7 @@ from async_generator import asynccontextmanager from async_generator import yield_ -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin LOCALSTACK_ENDPOINT_URL = { diff --git a/tests/contrib/aiohttp/test_aiohttp_client.py b/tests/contrib/aiohttp/test_aiohttp_client.py index 2b2b51c2650..f272c348324 100644 --- a/tests/contrib/aiohttp/test_aiohttp_client.py +++ b/tests/contrib/aiohttp/test_aiohttp_client.py @@ -6,7 +6,7 @@ from ddtrace.contrib.internal.aiohttp.patch import extract_netloc_and_query_info_from_url from ddtrace.contrib.internal.aiohttp.patch import patch from ddtrace.contrib.internal.aiohttp.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import override_config from tests.utils import override_http_config @@ -101,7 +101,7 @@ async def test_distributed_tracing_disabled(ddtrace_run_python_code_in_subproces import asyncio import sys import aiohttp -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.aiohttp.test_aiohttp_client import URL async def test(): @@ -184,7 +184,7 @@ def test_configure_service_name_pin(ddtrace_run_python_code_in_subprocess): import asyncio import sys import aiohttp -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.aiohttp.test_aiohttp_client import URL_200 async def test(): diff --git a/tests/contrib/aiohttp_jinja2/conftest.py b/tests/contrib/aiohttp_jinja2/conftest.py index a58b72f7f49..80e50c7fe10 100644 --- a/tests/contrib/aiohttp_jinja2/conftest.py +++ b/tests/contrib/aiohttp_jinja2/conftest.py @@ -3,7 +3,7 @@ from ddtrace.contrib.internal.aiohttp_jinja2.patch import patch from ddtrace.contrib.internal.aiohttp_jinja2.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.aiohttp.conftest import app_tracer # noqa:F401 from tests.contrib.aiohttp.conftest import patched_app_tracer # noqa:F401 from tests.contrib.aiohttp.conftest import untraced_app_tracer # noqa:F401 diff --git a/tests/contrib/aiohttp_jinja2/test_aiohttp_jinja2.py b/tests/contrib/aiohttp_jinja2/test_aiohttp_jinja2.py index 089c799ebe0..567e69bd0ce 100644 --- a/tests/contrib/aiohttp_jinja2/test_aiohttp_jinja2.py +++ b/tests/contrib/aiohttp_jinja2/test_aiohttp_jinja2.py @@ -2,7 +2,7 @@ import pytest from ddtrace.constants import ERROR_MSG -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.trace import tracer from tests.contrib.aiohttp.app.web import set_filesystem_loader from tests.contrib.aiohttp.app.web import set_package_loader diff --git a/tests/contrib/aiomysql/test_aiomysql.py b/tests/contrib/aiomysql/test_aiomysql.py index 8c923b9e292..588be9ff90a 100644 --- a/tests/contrib/aiomysql/test_aiomysql.py +++ b/tests/contrib/aiomysql/test_aiomysql.py @@ -8,7 +8,7 @@ from ddtrace.contrib.internal.aiomysql.patch import patch from ddtrace.contrib.internal.aiomysql.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib import shared_tests_async as shared_tests from tests.contrib.asyncio.utils import AsyncioTestCase from tests.contrib.asyncio.utils import mark_asyncio diff --git a/tests/contrib/aiopg/test.py b/tests/contrib/aiopg/test.py index eb738e009d8..5e476a43348 100644 --- a/tests/contrib/aiopg/test.py +++ b/tests/contrib/aiopg/test.py @@ -9,7 +9,7 @@ from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME # project -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.asyncio.utils import AsyncioTestCase from tests.contrib.config import POSTGRES_CONFIG from tests.opentracer.utils import init_tracer diff --git a/tests/contrib/algoliasearch/test.py b/tests/contrib/algoliasearch/test.py index 87f5f7b6910..2f8d81bb6ba 100644 --- a/tests/contrib/algoliasearch/test.py +++ b/tests/contrib/algoliasearch/test.py @@ -3,7 +3,7 @@ from ddtrace.contrib.internal.algoliasearch.patch import algoliasearch_version from ddtrace.contrib.internal.algoliasearch.patch import patch from ddtrace.contrib.internal.algoliasearch.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.vendor.packaging.version import parse as parse_version from tests.utils import TracerTestCase from tests.utils import assert_is_measured diff --git a/tests/contrib/anthropic/conftest.py b/tests/contrib/anthropic/conftest.py index 3e5dac0a442..76e0a1f63f6 100644 --- a/tests/contrib/anthropic/conftest.py +++ b/tests/contrib/anthropic/conftest.py @@ -6,7 +6,7 @@ from ddtrace.contrib.internal.anthropic.patch import patch from ddtrace.contrib.internal.anthropic.patch import unpatch from ddtrace.llmobs import LLMObs -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.anthropic.utils import get_request_vcr from tests.utils import DummyTracer from tests.utils import DummyWriter diff --git a/tests/contrib/aredis/test_aredis.py b/tests/contrib/aredis/test_aredis.py index e62cfa974be..9b531584845 100644 --- a/tests/contrib/aredis/test_aredis.py +++ b/tests/contrib/aredis/test_aredis.py @@ -7,7 +7,7 @@ from ddtrace.contrib.internal.aredis.patch import patch from ddtrace.contrib.internal.aredis.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.conftest import DEFAULT_DDTRACE_SUBPROCESS_TEST_SERVICE_NAME from tests.opentracer.utils import init_tracer from tests.utils import override_config @@ -152,7 +152,7 @@ def test_schematization_of_service_and_operation(ddtrace_run_python_code_in_subp import pytest import sys from tests.conftest import * -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin import aredis from tests.contrib.config import REDIS_CONFIG from tests.contrib.aredis.test_aredis import traced_aredis diff --git a/tests/contrib/asyncpg/test_asyncpg.py b/tests/contrib/asyncpg/test_asyncpg.py index 5e5b649faaf..3622d68ad60 100644 --- a/tests/contrib/asyncpg/test_asyncpg.py +++ b/tests/contrib/asyncpg/test_asyncpg.py @@ -8,7 +8,7 @@ from ddtrace.contrib.internal.asyncpg.patch import patch from ddtrace.contrib.internal.asyncpg.patch import unpatch from ddtrace.contrib.internal.trace_utils import iswrapped -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.trace import tracer from tests.contrib.asyncio.utils import AsyncioTestCase from tests.contrib.asyncio.utils import mark_asyncio diff --git a/tests/contrib/avro/test_avro.py b/tests/contrib/avro/test_avro.py index 3db10460a23..353f088242b 100644 --- a/tests/contrib/avro/test_avro.py +++ b/tests/contrib/avro/test_avro.py @@ -8,7 +8,7 @@ from ddtrace.contrib.internal.avro.patch import patch from ddtrace.contrib.internal.avro.patch import unpatch from ddtrace.ext import schema as SCHEMA_TAGS -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin OPENAPI_USER_SCHEMA_DEF = ( diff --git a/tests/contrib/boto/test.py b/tests/contrib/boto/test.py index 2570ca9c65c..d82994cc335 100644 --- a/tests/contrib/boto/test.py +++ b/tests/contrib/boto/test.py @@ -20,7 +20,7 @@ from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME # project -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.opentracer.utils import init_tracer from tests.utils import TracerTestCase from tests.utils import assert_is_measured diff --git a/tests/contrib/botocore/test.py b/tests/contrib/botocore/test.py index 67eaaf55fc3..a36e42f2d7f 100644 --- a/tests/contrib/botocore/test.py +++ b/tests/contrib/botocore/test.py @@ -46,7 +46,7 @@ from ddtrace.internal.utils.version import parse_version 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.utils import TestPin as Pin from tests.opentracer.utils import init_tracer from tests.utils import TracerTestCase from tests.utils import assert_is_measured diff --git a/tests/contrib/botocore/test_bedrock.py b/tests/contrib/botocore/test_bedrock.py index 1cf5618bd0e..b8dc6a13068 100644 --- a/tests/contrib/botocore/test_bedrock.py +++ b/tests/contrib/botocore/test_bedrock.py @@ -6,7 +6,7 @@ from ddtrace.contrib.internal.botocore.patch import patch from ddtrace.contrib.internal.botocore.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.botocore.bedrock_utils import _MODELS from tests.contrib.botocore.bedrock_utils import _REQUEST_BODIES from tests.contrib.botocore.bedrock_utils import get_request_vcr diff --git a/tests/contrib/botocore/test_bedrock_llmobs.py b/tests/contrib/botocore/test_bedrock_llmobs.py index 790b86f0704..b7d449ce8ba 100644 --- a/tests/contrib/botocore/test_bedrock_llmobs.py +++ b/tests/contrib/botocore/test_bedrock_llmobs.py @@ -7,7 +7,7 @@ from ddtrace.contrib.internal.botocore.patch import patch from ddtrace.contrib.internal.botocore.patch import unpatch from ddtrace.llmobs import LLMObs -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.botocore.bedrock_utils import _MODELS from tests.contrib.botocore.bedrock_utils import _REQUEST_BODIES from tests.contrib.botocore.bedrock_utils import get_request_vcr diff --git a/tests/contrib/botocore/test_stepfunctions.py b/tests/contrib/botocore/test_stepfunctions.py index f350e967d4c..0666eb68a46 100644 --- a/tests/contrib/botocore/test_stepfunctions.py +++ b/tests/contrib/botocore/test_stepfunctions.py @@ -3,7 +3,7 @@ from ddtrace.contrib.internal.botocore.services.stepfunctions import update_stepfunction_input from ddtrace.ext import SpanTypes from ddtrace.internal import core -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin def test_update_stepfunction_input(): diff --git a/tests/contrib/cassandra/test.py b/tests/contrib/cassandra/test.py index 21b98d6396f..8f920a3481e 100644 --- a/tests/contrib/cassandra/test.py +++ b/tests/contrib/cassandra/test.py @@ -18,7 +18,7 @@ from ddtrace.ext import cassandra as cassx from ddtrace.ext import net from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.config import CASSANDRA_CONFIG from tests.opentracer.utils import init_tracer from tests.utils import DummyTracer diff --git a/tests/contrib/celery/autopatch.py b/tests/contrib/celery/autopatch.py index 08eeed5acad..e70443e5736 100644 --- a/tests/contrib/celery/autopatch.py +++ b/tests/contrib/celery/autopatch.py @@ -1,4 +1,4 @@ -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin if __name__ == "__main__": diff --git a/tests/contrib/celery/base.py b/tests/contrib/celery/base.py index c2b7de22a54..a03bf1761a8 100644 --- a/tests/contrib/celery/base.py +++ b/tests/contrib/celery/base.py @@ -5,7 +5,7 @@ from ddtrace.contrib.internal.celery.patch import patch from ddtrace.contrib.internal.celery.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase from ..config import RABBITMQ_CONFIG diff --git a/tests/contrib/celery/test_app.py b/tests/contrib/celery/test_app.py index 6218d77f061..1f0223c93e5 100644 --- a/tests/contrib/celery/test_app.py +++ b/tests/contrib/celery/test_app.py @@ -1,7 +1,7 @@ import celery from ddtrace.contrib.internal.celery.patch import unpatch_app -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from .base import CeleryBaseTestCase diff --git a/tests/contrib/celery/test_integration.py b/tests/contrib/celery/test_integration.py index 2ac6e1a61d0..db2a7a3914f 100644 --- a/tests/contrib/celery/test_integration.py +++ b/tests/contrib/celery/test_integration.py @@ -14,7 +14,7 @@ import ddtrace.internal.forksafe as forksafe from ddtrace.propagation.http import HTTPPropagator from ddtrace.trace import Context -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.opentracer.utils import init_tracer from tests.utils import flaky diff --git a/tests/contrib/celery/test_patch.py b/tests/contrib/celery/test_patch.py index 3892fc79fb1..a554d79e377 100644 --- a/tests/contrib/celery/test_patch.py +++ b/tests/contrib/celery/test_patch.py @@ -1,6 +1,6 @@ import unittest -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.patch import emit_integration_and_version_to_test_agent diff --git a/tests/contrib/celery/test_tagging.py b/tests/contrib/celery/test_tagging.py index 6b88acf9434..dab8473f687 100644 --- a/tests/contrib/celery/test_tagging.py +++ b/tests/contrib/celery/test_tagging.py @@ -7,7 +7,7 @@ from ddtrace.contrib.internal.celery.patch import patch from ddtrace.contrib.internal.celery.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import DummyTracer from .base import AMQP_BROKER_URL diff --git a/tests/contrib/consul/test.py b/tests/contrib/consul/test.py index 285287f9e95..5ef809e2b3a 100644 --- a/tests/contrib/consul/test.py +++ b/tests/contrib/consul/test.py @@ -5,7 +5,7 @@ from ddtrace.contrib.internal.consul.patch import unpatch from ddtrace.ext import consul as consulx from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase from tests.utils import assert_is_measured diff --git a/tests/contrib/dbapi/test_dbapi.py b/tests/contrib/dbapi/test_dbapi.py index c60e49c56af..4ac121c2708 100644 --- a/tests/contrib/dbapi/test_dbapi.py +++ b/tests/contrib/dbapi/test_dbapi.py @@ -7,7 +7,7 @@ from ddtrace.propagation._database_monitoring import _DBM_Propagator from ddtrace.settings import Config from ddtrace.settings.integration import IntegrationConfig -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.trace import Span # noqa:F401 from tests.utils import TracerTestCase from tests.utils import assert_is_measured diff --git a/tests/contrib/dbapi/test_dbapi_appsec.py b/tests/contrib/dbapi/test_dbapi_appsec.py index 062a4ca667e..b049ecc9673 100644 --- a/tests/contrib/dbapi/test_dbapi_appsec.py +++ b/tests/contrib/dbapi/test_dbapi_appsec.py @@ -6,7 +6,7 @@ from ddtrace.settings import Config from ddtrace.settings.asm import config as asm_config from ddtrace.settings.integration import IntegrationConfig -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.appsec.iast.conftest import _end_iast_context_and_oce from tests.appsec.iast.conftest import _start_iast_context_and_oce from tests.utils import TracerTestCase diff --git a/tests/contrib/dbapi_async/test_dbapi_async.py b/tests/contrib/dbapi_async/test_dbapi_async.py index ceb2b0cf6a1..0e47af08b12 100644 --- a/tests/contrib/dbapi_async/test_dbapi_async.py +++ b/tests/contrib/dbapi_async/test_dbapi_async.py @@ -7,7 +7,7 @@ from ddtrace.propagation._database_monitoring import _DBM_Propagator from ddtrace.settings import Config from ddtrace.settings.integration import IntegrationConfig -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.trace import Span # noqa:F401 from tests.contrib.asyncio.utils import AsyncioTestCase from tests.contrib.asyncio.utils import mark_asyncio diff --git a/tests/contrib/django/conftest.py b/tests/contrib/django/conftest.py index 3dd992681b4..bbb6c2abe74 100644 --- a/tests/contrib/django/conftest.py +++ b/tests/contrib/django/conftest.py @@ -5,7 +5,7 @@ import pytest from ddtrace.contrib.internal.django.patch import patch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import DummyTracer from tests.utils import TracerSpanContainer diff --git a/tests/contrib/django/test_django_dbm.py b/tests/contrib/django/test_django_dbm.py index d44f90f3208..39df40ac294 100644 --- a/tests/contrib/django/test_django_dbm.py +++ b/tests/contrib/django/test_django_dbm.py @@ -1,7 +1,7 @@ from django.db import connections import mock -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib import shared_tests from tests.utils import DummyTracer from tests.utils import override_config diff --git a/tests/contrib/dogpile_cache/test_tracing.py b/tests/contrib/dogpile_cache/test_tracing.py index fec78818eda..e3b5b8d6331 100644 --- a/tests/contrib/dogpile_cache/test_tracing.py +++ b/tests/contrib/dogpile_cache/test_tracing.py @@ -5,7 +5,7 @@ from ddtrace.contrib.internal.dogpile_cache.patch import patch from ddtrace.contrib.internal.dogpile_cache.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.conftest import DEFAULT_DDTRACE_SUBPROCESS_TEST_SERVICE_NAME from tests.utils import DummyTracer from tests.utils import TracerSpanContainer diff --git a/tests/contrib/dramatiq/test_integration.py b/tests/contrib/dramatiq/test_integration.py index 526aadc3861..55cac1d4261 100644 --- a/tests/contrib/dramatiq/test_integration.py +++ b/tests/contrib/dramatiq/test_integration.py @@ -5,7 +5,7 @@ from ddtrace.contrib.internal.dramatiq.patch import patch from ddtrace.contrib.internal.dramatiq.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import DummyTracer from tests.utils import snapshot diff --git a/tests/contrib/elasticsearch/test_elasticsearch.py b/tests/contrib/elasticsearch/test_elasticsearch.py index 6e381bc1e31..86cf9034fe7 100644 --- a/tests/contrib/elasticsearch/test_elasticsearch.py +++ b/tests/contrib/elasticsearch/test_elasticsearch.py @@ -13,7 +13,7 @@ from ddtrace.contrib.internal.elasticsearch.patch import unpatch from ddtrace.ext import http from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.patch import emit_integration_and_version_to_test_agent from tests.utils import TracerTestCase diff --git a/tests/contrib/flask/__init__.py b/tests/contrib/flask/__init__.py index a512a79f196..a929d968305 100644 --- a/tests/contrib/flask/__init__.py +++ b/tests/contrib/flask/__init__.py @@ -4,7 +4,7 @@ from ddtrace.contrib.internal.flask.patch import patch from ddtrace.contrib.internal.flask.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase diff --git a/tests/contrib/flask/test_blueprint.py b/tests/contrib/flask/test_blueprint.py index 96401dfa1a9..0a31f3d3399 100644 --- a/tests/contrib/flask/test_blueprint.py +++ b/tests/contrib/flask/test_blueprint.py @@ -1,7 +1,7 @@ import flask from ddtrace.contrib.internal.flask.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from . import BaseFlaskTestCase diff --git a/tests/contrib/flask/test_flask_helpers.py b/tests/contrib/flask/test_flask_helpers.py index d3672213a0a..cbcf69869f6 100644 --- a/tests/contrib/flask/test_flask_helpers.py +++ b/tests/contrib/flask/test_flask_helpers.py @@ -5,7 +5,7 @@ from ddtrace.contrib.internal.flask.patch import flask_version from ddtrace.contrib.internal.flask.patch import unpatch from ddtrace.internal.compat import StringIO -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from . import BaseFlaskTestCase diff --git a/tests/contrib/flask/test_signals.py b/tests/contrib/flask/test_signals.py index b86e8989047..bccb9de1ecf 100644 --- a/tests/contrib/flask/test_signals.py +++ b/tests/contrib/flask/test_signals.py @@ -3,7 +3,7 @@ from ddtrace.contrib.internal.flask.patch import flask_version from ddtrace.contrib.internal.flask.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from . import BaseFlaskTestCase diff --git a/tests/contrib/flask/test_template.py b/tests/contrib/flask/test_template.py index a38311d3b86..c339046a200 100644 --- a/tests/contrib/flask/test_template.py +++ b/tests/contrib/flask/test_template.py @@ -2,7 +2,7 @@ from ddtrace.contrib.internal.flask.patch import flask_version from ddtrace.contrib.internal.flask.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from . import BaseFlaskTestCase diff --git a/tests/contrib/flask_autopatch/test_flask_autopatch.py b/tests/contrib/flask_autopatch/test_flask_autopatch.py index 27c4b47e2d0..9a37f25a910 100644 --- a/tests/contrib/flask_autopatch/test_flask_autopatch.py +++ b/tests/contrib/flask_autopatch/test_flask_autopatch.py @@ -4,7 +4,7 @@ from ddtrace.contrib.internal.flask.patch import flask_version from ddtrace.ext import http -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase from tests.utils import assert_is_measured from tests.utils import assert_span_http_status_code diff --git a/tests/contrib/google_generativeai/conftest.py b/tests/contrib/google_generativeai/conftest.py index 64b2eb83d1b..3c5d8a4abee 100644 --- a/tests/contrib/google_generativeai/conftest.py +++ b/tests/contrib/google_generativeai/conftest.py @@ -6,7 +6,7 @@ from ddtrace.contrib.internal.google_generativeai.patch import patch from ddtrace.contrib.internal.google_generativeai.patch import unpatch from ddtrace.llmobs import LLMObs -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.google_generativeai.utils import MockGenerativeModelAsyncClient from tests.contrib.google_generativeai.utils import MockGenerativeModelClient from tests.utils import DummyTracer diff --git a/tests/contrib/grpc/common.py b/tests/contrib/grpc/common.py index e67e4f32a92..366d742d734 100644 --- a/tests/contrib/grpc/common.py +++ b/tests/contrib/grpc/common.py @@ -5,7 +5,7 @@ from ddtrace.contrib.internal.grpc import constants from ddtrace.contrib.internal.grpc.patch import patch from ddtrace.contrib.internal.grpc.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase from .hello_pb2_grpc import add_HelloServicer_to_server diff --git a/tests/contrib/grpc/test_grpc.py b/tests/contrib/grpc/test_grpc.py index d0559f2dff5..f528bb4b874 100644 --- a/tests/contrib/grpc/test_grpc.py +++ b/tests/contrib/grpc/test_grpc.py @@ -14,7 +14,7 @@ from ddtrace.contrib.internal.grpc.patch import patch from ddtrace.contrib.internal.grpc.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase from tests.utils import flaky from tests.utils import snapshot diff --git a/tests/contrib/grpc_aio/test_grpc_aio.py b/tests/contrib/grpc_aio/test_grpc_aio.py index 0606bcc3db2..e30a6abcda3 100644 --- a/tests/contrib/grpc_aio/test_grpc_aio.py +++ b/tests/contrib/grpc_aio/test_grpc_aio.py @@ -15,7 +15,7 @@ from ddtrace.contrib.internal.grpc.patch import patch from ddtrace.contrib.internal.grpc.patch import unpatch from ddtrace.contrib.internal.grpc.utils import _parse_rpc_repr_string -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin import ddtrace.vendor.packaging.version as packaging_version from tests.contrib.grpc.hello_pb2 import HelloReply from tests.contrib.grpc.hello_pb2 import HelloRequest diff --git a/tests/contrib/httplib/test_httplib.py b/tests/contrib/httplib/test_httplib.py index 24a5fe3f051..40747f86562 100644 --- a/tests/contrib/httplib/test_httplib.py +++ b/tests/contrib/httplib/test_httplib.py @@ -17,7 +17,7 @@ from ddtrace.internal.compat import parse from ddtrace.internal.constants import _HTTPLIB_NO_TRACE_REQUEST from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.opentracer.utils import init_tracer from tests.utils import TracerTestCase from tests.utils import assert_span_http_status_code diff --git a/tests/contrib/httplib/test_httplib_distributed.py b/tests/contrib/httplib/test_httplib_distributed.py index 706921388bc..47e431e3d56 100644 --- a/tests/contrib/httplib/test_httplib_distributed.py +++ b/tests/contrib/httplib/test_httplib_distributed.py @@ -7,7 +7,7 @@ from ddtrace import config from ddtrace._trace.span import _get_64_highest_order_bits_as_hex from ddtrace.internal.compat import httplib -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase from .test_httplib import SOCKET diff --git a/tests/contrib/httpx/test_httpx.py b/tests/contrib/httpx/test_httpx.py index 33ecadb825f..bdd10cfdf01 100644 --- a/tests/contrib/httpx/test_httpx.py +++ b/tests/contrib/httpx/test_httpx.py @@ -7,7 +7,7 @@ from ddtrace.contrib.internal.httpx.patch import patch from ddtrace.contrib.internal.httpx.patch import unpatch from ddtrace.settings.http import HttpConfig -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import flaky from tests.utils import override_config from tests.utils import override_http_config diff --git a/tests/contrib/httpx/test_httpx_pre_0_11.py b/tests/contrib/httpx/test_httpx_pre_0_11.py index 315c53cb29c..61dacd35c39 100644 --- a/tests/contrib/httpx/test_httpx_pre_0_11.py +++ b/tests/contrib/httpx/test_httpx_pre_0_11.py @@ -7,7 +7,7 @@ from ddtrace.contrib.internal.httpx.patch import patch from ddtrace.contrib.internal.httpx.patch import unpatch from ddtrace.settings.http import HttpConfig -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import override_config from tests.utils import override_http_config diff --git a/tests/contrib/jinja2/test_jinja2.py b/tests/contrib/jinja2/test_jinja2.py index ce91c7e5ed0..1c91142f81f 100644 --- a/tests/contrib/jinja2/test_jinja2.py +++ b/tests/contrib/jinja2/test_jinja2.py @@ -7,7 +7,7 @@ from ddtrace import config from ddtrace.contrib.internal.jinja2.patch import patch from ddtrace.contrib.internal.jinja2.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase from tests.utils import assert_is_measured from tests.utils import assert_is_not_measured diff --git a/tests/contrib/kafka/test_kafka.py b/tests/contrib/kafka/test_kafka.py index 721111a7099..e01d16d2eee 100644 --- a/tests/contrib/kafka/test_kafka.py +++ b/tests/contrib/kafka/test_kafka.py @@ -20,7 +20,7 @@ from ddtrace.internal.datastreams.processor import DataStreamsCtx from ddtrace.internal.datastreams.processor import PartitionKey from ddtrace.internal.utils.retry import fibonacci_backoff_with_jitter -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.trace import TraceFilter from ddtrace.trace import tracer as ddtracer from tests.contrib.config import KAFKA_CONFIG @@ -521,8 +521,8 @@ def _generate_in_subprocess(random_topic): "auto.offset.reset": "earliest", } ) - ddtrace.trace.Pin.override(producer, tracer=ddtrace.tracer) - ddtrace.trace.Pin.override(consumer, tracer=ddtrace.tracer) + Pin.override(producer, tracer=ddtrace.tracer) + Pin.override(consumer, tracer=ddtrace.tracer) # We run all of these commands with retry attempts because the kafka-confluent API # sys.exits on connection failures, which causes the test to fail. We want to retry @@ -802,7 +802,7 @@ def test_tracing_context_is_propagated_when_enabled(ddtrace_run_python_code_in_s import random import sys -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.contrib.internal.kafka.patch import patch from tests.contrib.kafka.test_kafka import consumer @@ -1042,7 +1042,7 @@ def test_does_not_trace_empty_poll_when_disabled(ddtrace_run_python_code_in_subp import random import sys -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.contrib.internal.kafka.patch import patch from ddtrace import config diff --git a/tests/contrib/kombu/test.py b/tests/contrib/kombu/test.py index b56ecdf0d0f..a2dd04b371f 100644 --- a/tests/contrib/kombu/test.py +++ b/tests/contrib/kombu/test.py @@ -8,7 +8,7 @@ from ddtrace.ext import kombu as kombux from ddtrace.internal.datastreams.processor import PROPAGATION_KEY_BASE_64 from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase from tests.utils import assert_is_measured diff --git a/tests/contrib/langchain/conftest.py b/tests/contrib/langchain/conftest.py index 6c1e5816df5..6c03915dea7 100644 --- a/tests/contrib/langchain/conftest.py +++ b/tests/contrib/langchain/conftest.py @@ -5,7 +5,7 @@ from ddtrace.contrib.internal.langchain.patch import patch from ddtrace.contrib.internal.langchain.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import DummyTracer from tests.utils import DummyWriter from tests.utils import override_config diff --git a/tests/contrib/langgraph/conftest.py b/tests/contrib/langgraph/conftest.py index 13e1a5f9242..93021aa0bf8 100644 --- a/tests/contrib/langgraph/conftest.py +++ b/tests/contrib/langgraph/conftest.py @@ -12,7 +12,7 @@ from ddtrace.llmobs import LLMObs as llmobs_service from ddtrace.llmobs._constants import AGENTLESS_BASE_URL from ddtrace.llmobs._writer import LLMObsSpanWriter -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import DummyTracer from tests.utils import override_global_config diff --git a/tests/contrib/mako/test_mako.py b/tests/contrib/mako/test_mako.py index 7e690b04a43..09e71d95321 100644 --- a/tests/contrib/mako/test_mako.py +++ b/tests/contrib/mako/test_mako.py @@ -10,7 +10,7 @@ from ddtrace.internal.compat import StringIO from ddtrace.internal.compat import to_unicode from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase from tests.utils import assert_is_measured diff --git a/tests/contrib/mariadb/test_mariadb.py b/tests/contrib/mariadb/test_mariadb.py index 7ea8cd27feb..0a111bf52e4 100644 --- a/tests/contrib/mariadb/test_mariadb.py +++ b/tests/contrib/mariadb/test_mariadb.py @@ -6,7 +6,7 @@ from ddtrace.contrib.internal.mariadb.patch import patch from ddtrace.contrib.internal.mariadb.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.config import MARIADB_CONFIG from tests.utils import DummyTracer from tests.utils import assert_dict_issuperset diff --git a/tests/contrib/molten/test_molten.py b/tests/contrib/molten/test_molten.py index cc73ceef861..8368ffb25f0 100644 --- a/tests/contrib/molten/test_molten.py +++ b/tests/contrib/molten/test_molten.py @@ -11,7 +11,7 @@ from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME 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.utils import TestPin as Pin from tests.utils import TracerTestCase from tests.utils import assert_is_measured from tests.utils import assert_span_http_status_code diff --git a/tests/contrib/molten/test_molten_di.py b/tests/contrib/molten/test_molten_di.py index d360698f4cb..16dd86167e5 100644 --- a/tests/contrib/molten/test_molten_di.py +++ b/tests/contrib/molten/test_molten_di.py @@ -5,7 +5,7 @@ from ddtrace.contrib.internal.molten.patch import patch from ddtrace.contrib.internal.molten.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase diff --git a/tests/contrib/mongoengine/test.py b/tests/contrib/mongoengine/test.py index b3961e3808c..e1cd629a6e2 100644 --- a/tests/contrib/mongoengine/test.py +++ b/tests/contrib/mongoengine/test.py @@ -7,7 +7,7 @@ from ddtrace.contrib.internal.mongoengine.patch import unpatch from ddtrace.ext import mongo as mongox from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.opentracer.utils import init_tracer from tests.utils import DummyTracer from tests.utils import TracerTestCase diff --git a/tests/contrib/mysql/test_mysql.py b/tests/contrib/mysql/test_mysql.py index 08626890fac..d5561b4a3d3 100644 --- a/tests/contrib/mysql/test_mysql.py +++ b/tests/contrib/mysql/test_mysql.py @@ -3,7 +3,7 @@ from ddtrace.contrib.internal.mysql.patch import patch from ddtrace.contrib.internal.mysql.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib import shared_tests from tests.contrib.config import MYSQL_CONFIG from tests.opentracer.utils import init_tracer diff --git a/tests/contrib/mysqldb/test_mysqldb.py b/tests/contrib/mysqldb/test_mysqldb.py index 5d2c98a752c..2dc1d713b5d 100644 --- a/tests/contrib/mysqldb/test_mysqldb.py +++ b/tests/contrib/mysqldb/test_mysqldb.py @@ -5,7 +5,7 @@ from ddtrace.contrib.internal.mysqldb.patch import patch from ddtrace.contrib.internal.mysqldb.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib import shared_tests from tests.opentracer.utils import init_tracer from tests.utils import TracerTestCase diff --git a/tests/contrib/openai/conftest.py b/tests/contrib/openai/conftest.py index 615a4e773b1..2930dafa134 100644 --- a/tests/contrib/openai/conftest.py +++ b/tests/contrib/openai/conftest.py @@ -10,7 +10,7 @@ from ddtrace.contrib.internal.openai.patch import patch from ddtrace.contrib.internal.openai.patch import unpatch from ddtrace.llmobs import LLMObs -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.trace import TraceFilter from tests.utils import DummyTracer from tests.utils import DummyWriter diff --git a/tests/contrib/psycopg/test_psycopg.py b/tests/contrib/psycopg/test_psycopg.py index 8e13ecc4128..9f99d41da1c 100644 --- a/tests/contrib/psycopg/test_psycopg.py +++ b/tests/contrib/psycopg/test_psycopg.py @@ -12,7 +12,7 @@ from ddtrace.contrib.internal.psycopg.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME from ddtrace.internal.utils.version import parse_version -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.config import POSTGRES_CONFIG from tests.opentracer.utils import init_tracer from tests.utils import TracerTestCase diff --git a/tests/contrib/psycopg/test_psycopg_async.py b/tests/contrib/psycopg/test_psycopg_async.py index 7e4fbd59624..747209614f9 100644 --- a/tests/contrib/psycopg/test_psycopg_async.py +++ b/tests/contrib/psycopg/test_psycopg_async.py @@ -7,7 +7,7 @@ from ddtrace.contrib.internal.psycopg.patch import patch from ddtrace.contrib.internal.psycopg.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.asyncio.utils import AsyncioTestCase from tests.contrib.config import POSTGRES_CONFIG from tests.opentracer.utils import init_tracer diff --git a/tests/contrib/psycopg2/test_psycopg.py b/tests/contrib/psycopg2/test_psycopg.py index 902d24d3c0e..a8b6d862287 100644 --- a/tests/contrib/psycopg2/test_psycopg.py +++ b/tests/contrib/psycopg2/test_psycopg.py @@ -11,7 +11,7 @@ from ddtrace.contrib.internal.psycopg.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME from ddtrace.internal.utils.version import parse_version -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.config import POSTGRES_CONFIG from tests.opentracer.utils import init_tracer from tests.utils import TracerTestCase diff --git a/tests/contrib/pylibmc/test.py b/tests/contrib/pylibmc/test.py index 9de012439dc..fbc49ee2aec 100644 --- a/tests/contrib/pylibmc/test.py +++ b/tests/contrib/pylibmc/test.py @@ -11,7 +11,7 @@ from ddtrace.ext import memcached # project -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.config import MEMCACHED_CONFIG as cfg from tests.opentracer.utils import init_tracer from tests.utils import TracerTestCase diff --git a/tests/contrib/pymemcache/test_client.py b/tests/contrib/pymemcache/test_client.py index 19a7a93d523..cfcf7704660 100644 --- a/tests/contrib/pymemcache/test_client.py +++ b/tests/contrib/pymemcache/test_client.py @@ -15,7 +15,7 @@ from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME # project -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import DummyTracer from tests.utils import TracerTestCase from tests.utils import override_config diff --git a/tests/contrib/pymemcache/test_client_defaults.py b/tests/contrib/pymemcache/test_client_defaults.py index 0b5e44aa3b0..0263d3688fb 100644 --- a/tests/contrib/pymemcache/test_client_defaults.py +++ b/tests/contrib/pymemcache/test_client_defaults.py @@ -6,7 +6,7 @@ from ddtrace.contrib.internal.pymemcache.patch import unpatch # project -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import override_config from .test_client_mixin import TEST_HOST diff --git a/tests/contrib/pymemcache/test_client_mixin.py b/tests/contrib/pymemcache/test_client_mixin.py index 2d471765e1f..519a35e0734 100644 --- a/tests/contrib/pymemcache/test_client_mixin.py +++ b/tests/contrib/pymemcache/test_client_mixin.py @@ -8,7 +8,7 @@ from ddtrace.ext import net # project -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import DummyTracer from tests.utils import TracerTestCase from tests.utils import override_config diff --git a/tests/contrib/pymongo/test.py b/tests/contrib/pymongo/test.py index b6669d40ac0..5b064c2b116 100644 --- a/tests/contrib/pymongo/test.py +++ b/tests/contrib/pymongo/test.py @@ -10,7 +10,7 @@ from ddtrace.ext import SpanTypes # project -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.opentracer.utils import init_tracer from tests.utils import DummyTracer from tests.utils import TracerTestCase diff --git a/tests/contrib/pymysql/test_pymysql.py b/tests/contrib/pymysql/test_pymysql.py index e94e03c8395..4bb56d4a15b 100644 --- a/tests/contrib/pymysql/test_pymysql.py +++ b/tests/contrib/pymysql/test_pymysql.py @@ -4,7 +4,7 @@ from ddtrace.contrib.internal.pymysql.patch import patch from ddtrace.contrib.internal.pymysql.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib import shared_tests from tests.opentracer.utils import init_tracer from tests.utils import TracerTestCase diff --git a/tests/contrib/pynamodb/test_pynamodb.py b/tests/contrib/pynamodb/test_pynamodb.py index 33b4e4c2c14..cb81ffab356 100644 --- a/tests/contrib/pynamodb/test_pynamodb.py +++ b/tests/contrib/pynamodb/test_pynamodb.py @@ -7,7 +7,7 @@ from ddtrace.contrib.internal.pynamodb.patch import patch from ddtrace.contrib.internal.pynamodb.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase from tests.utils import assert_is_measured diff --git a/tests/contrib/pyodbc/test_pyodbc.py b/tests/contrib/pyodbc/test_pyodbc.py index 4c965aede7b..7dd9245b075 100644 --- a/tests/contrib/pyodbc/test_pyodbc.py +++ b/tests/contrib/pyodbc/test_pyodbc.py @@ -3,7 +3,7 @@ from ddtrace.contrib.internal.pyodbc.patch import patch from ddtrace.contrib.internal.pyodbc.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import TracerTestCase from tests.utils import assert_is_measured diff --git a/tests/contrib/pytest/test_pytest.py b/tests/contrib/pytest/test_pytest.py index b4c91c1735c..3faa2a8e013 100644 --- a/tests/contrib/pytest/test_pytest.py +++ b/tests/contrib/pytest/test_pytest.py @@ -724,7 +724,7 @@ def test_dd_origin_tag_propagated_to_every_span(self): """ import pytest import ddtrace - from ddtrace.trace import Pin + from tests.utils import TestPin as Pin def test_service(ddtracer): with ddtracer.trace("SPAN2") as span2: diff --git a/tests/contrib/redis/test_redis.py b/tests/contrib/redis/test_redis.py index fb83f6f53fc..aeb350a8a54 100644 --- a/tests/contrib/redis/test_redis.py +++ b/tests/contrib/redis/test_redis.py @@ -8,7 +8,7 @@ from ddtrace.contrib.internal.redis.patch import patch from ddtrace.contrib.internal.redis.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.opentracer.utils import init_tracer from tests.utils import DummyTracer from tests.utils import TracerTestCase diff --git a/tests/contrib/redis/test_redis_asyncio.py b/tests/contrib/redis/test_redis_asyncio.py index b1bd5858e04..a301c0e9199 100644 --- a/tests/contrib/redis/test_redis_asyncio.py +++ b/tests/contrib/redis/test_redis_asyncio.py @@ -9,7 +9,7 @@ from ddtrace.contrib.internal.redis.patch import patch from ddtrace.contrib.internal.redis.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.trace import tracer from tests.utils import override_config diff --git a/tests/contrib/redis/test_redis_cluster.py b/tests/contrib/redis/test_redis_cluster.py index 2731a18fcee..5d615bfdccf 100644 --- a/tests/contrib/redis/test_redis_cluster.py +++ b/tests/contrib/redis/test_redis_cluster.py @@ -5,7 +5,7 @@ from ddtrace.contrib.internal.redis.patch import patch from ddtrace.contrib.internal.redis.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.config import REDISCLUSTER_CONFIG from tests.utils import DummyTracer from tests.utils import TracerTestCase diff --git a/tests/contrib/redis/test_redis_cluster_asyncio.py b/tests/contrib/redis/test_redis_cluster_asyncio.py index b8624c533aa..cd86fe539b6 100644 --- a/tests/contrib/redis/test_redis_cluster_asyncio.py +++ b/tests/contrib/redis/test_redis_cluster_asyncio.py @@ -4,7 +4,7 @@ from ddtrace.contrib.internal.redis.patch import patch from ddtrace.contrib.internal.redis.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.config import REDISCLUSTER_CONFIG from tests.utils import DummyTracer from tests.utils import assert_is_measured @@ -166,7 +166,7 @@ def test_default_service_name_v1(): from ddtrace.contrib.internal.redis.patch import patch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME - from ddtrace.trace import Pin + from tests.utils import TestPin as Pin from tests.contrib.config import REDISCLUSTER_CONFIG from tests.utils import DummyTracer from tests.utils import TracerSpanContainer @@ -212,7 +212,7 @@ def test_user_specified_service_v0(): from ddtrace import config from ddtrace.contrib.internal.redis.patch import patch - from ddtrace.trace import Pin + from tests.utils import TestPin as Pin from tests.contrib.config import REDISCLUSTER_CONFIG from tests.utils import DummyTracer from tests.utils import TracerSpanContainer @@ -261,7 +261,7 @@ def test_user_specified_service_v1(): from ddtrace import config from ddtrace.contrib.internal.redis.patch import patch - from ddtrace.trace import Pin + from tests.utils import TestPin as Pin from tests.contrib.config import REDISCLUSTER_CONFIG from tests.utils import DummyTracer from tests.utils import TracerSpanContainer @@ -305,7 +305,7 @@ def test_env_user_specified_rediscluster_service_v0(): import redis from ddtrace.contrib.internal.redis.patch import patch - from ddtrace.trace import Pin + from tests.utils import TestPin as Pin from tests.contrib.config import REDISCLUSTER_CONFIG from tests.utils import DummyTracer from tests.utils import TracerSpanContainer @@ -346,7 +346,7 @@ def test_env_user_specified_rediscluster_service_v1(): import redis from ddtrace.contrib.internal.redis.patch import patch - from ddtrace.trace import Pin + from tests.utils import TestPin as Pin from tests.contrib.config import REDISCLUSTER_CONFIG from tests.utils import DummyTracer from tests.utils import TracerSpanContainer @@ -392,7 +392,7 @@ def test_service_precedence_v0(): from ddtrace import config from ddtrace.contrib.internal.redis.patch import patch - from ddtrace.trace import Pin + from tests.utils import TestPin as Pin from tests.contrib.config import REDISCLUSTER_CONFIG from tests.utils import DummyTracer from tests.utils import TracerSpanContainer @@ -437,7 +437,7 @@ def test_service_precedence_v1(): from ddtrace import config from ddtrace.contrib.internal.redis.patch import patch - from ddtrace.trace import Pin + from tests.utils import TestPin as Pin from tests.contrib.config import REDISCLUSTER_CONFIG from tests.utils import DummyTracer from tests.utils import TracerSpanContainer diff --git a/tests/contrib/rediscluster/test.py b/tests/contrib/rediscluster/test.py index a2c5ac5c6b2..5c67d856b5e 100644 --- a/tests/contrib/rediscluster/test.py +++ b/tests/contrib/rediscluster/test.py @@ -6,7 +6,7 @@ from ddtrace.contrib.internal.rediscluster.patch import patch from ddtrace.contrib.internal.rediscluster.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.config import REDISCLUSTER_CONFIG from tests.utils import DummyTracer from tests.utils import TracerTestCase diff --git a/tests/contrib/rq/test_rq.py b/tests/contrib/rq/test_rq.py index d72871823da..32096abfdce 100644 --- a/tests/contrib/rq/test_rq.py +++ b/tests/contrib/rq/test_rq.py @@ -9,7 +9,7 @@ from ddtrace.contrib.internal.rq.patch import get_version from ddtrace.contrib.internal.rq.patch import patch from ddtrace.contrib.internal.rq.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.patch import emit_integration_and_version_to_test_agent from tests.utils import override_config from tests.utils import snapshot diff --git a/tests/contrib/shared_tests.py b/tests/contrib/shared_tests.py index cf647a15628..33a86f2ba78 100644 --- a/tests/contrib/shared_tests.py +++ b/tests/contrib/shared_tests.py @@ -1,4 +1,4 @@ -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin # DBM Shared Tests diff --git a/tests/contrib/shared_tests_async.py b/tests/contrib/shared_tests_async.py index 0d49f09d608..54925cfc6e6 100644 --- a/tests/contrib/shared_tests_async.py +++ b/tests/contrib/shared_tests_async.py @@ -1,4 +1,4 @@ -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin # DBM Shared Tests diff --git a/tests/contrib/snowflake/test_snowflake.py b/tests/contrib/snowflake/test_snowflake.py index 2e75867c757..5909eee99fa 100644 --- a/tests/contrib/snowflake/test_snowflake.py +++ b/tests/contrib/snowflake/test_snowflake.py @@ -8,7 +8,7 @@ from ddtrace.contrib.internal.snowflake.patch import patch from ddtrace.contrib.internal.snowflake.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.trace import tracer from tests.opentracer.utils import init_tracer from tests.utils import override_config diff --git a/tests/contrib/sqlalchemy/test_patch.py b/tests/contrib/sqlalchemy/test_patch.py index a6f08bb5f46..fba4f2c565e 100644 --- a/tests/contrib/sqlalchemy/test_patch.py +++ b/tests/contrib/sqlalchemy/test_patch.py @@ -4,7 +4,7 @@ from ddtrace.contrib.internal.sqlalchemy.patch import get_version from ddtrace.contrib.internal.sqlalchemy.patch import patch from ddtrace.contrib.internal.sqlalchemy.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.patch import emit_integration_and_version_to_test_agent from tests.utils import TracerTestCase from tests.utils import assert_is_measured diff --git a/tests/contrib/sqlite3/test_sqlite3.py b/tests/contrib/sqlite3/test_sqlite3.py index 6101dcfa081..495d9d29485 100644 --- a/tests/contrib/sqlite3/test_sqlite3.py +++ b/tests/contrib/sqlite3/test_sqlite3.py @@ -20,7 +20,7 @@ from ddtrace.contrib.internal.sqlite3.patch import patch from ddtrace.contrib.internal.sqlite3.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.opentracer.utils import init_tracer from tests.utils import TracerTestCase from tests.utils import assert_is_measured diff --git a/tests/contrib/starlette/test_starlette.py b/tests/contrib/starlette/test_starlette.py index f290ade8ea7..bb96943f989 100644 --- a/tests/contrib/starlette/test_starlette.py +++ b/tests/contrib/starlette/test_starlette.py @@ -14,7 +14,7 @@ from ddtrace.contrib.internal.starlette.patch import patch as starlette_patch from ddtrace.contrib.internal.starlette.patch import unpatch as starlette_unpatch from ddtrace.propagation import http as http_propagation -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.starlette.app import get_app from tests.utils import DummyTracer from tests.utils import TracerSpanContainer diff --git a/tests/contrib/subprocess/test_subprocess.py b/tests/contrib/subprocess/test_subprocess.py index 40e7ab67431..db63e99a863 100644 --- a/tests/contrib/subprocess/test_subprocess.py +++ b/tests/contrib/subprocess/test_subprocess.py @@ -10,7 +10,7 @@ from ddtrace.contrib.internal.subprocess.patch import unpatch from ddtrace.ext import SpanTypes from ddtrace.internal import core -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.utils import override_config from tests.utils import override_global_config diff --git a/tests/contrib/urllib3/test_urllib3.py b/tests/contrib/urllib3/test_urllib3.py index 24ba7815e56..5c9bf6c86f0 100644 --- a/tests/contrib/urllib3/test_urllib3.py +++ b/tests/contrib/urllib3/test_urllib3.py @@ -12,7 +12,7 @@ from ddtrace.ext import http from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME from ddtrace.settings.asm import config as asm_config -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.config import HTTPBIN_CONFIG from tests.opentracer.utils import init_tracer from tests.utils import TracerTestCase diff --git a/tests/contrib/vertexai/conftest.py b/tests/contrib/vertexai/conftest.py index 0b2b976b610..22a6728e4f1 100644 --- a/tests/contrib/vertexai/conftest.py +++ b/tests/contrib/vertexai/conftest.py @@ -5,7 +5,7 @@ from ddtrace.contrib.internal.vertexai.patch import patch from ddtrace.contrib.internal.vertexai.patch import unpatch from ddtrace.llmobs import LLMObs -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.vertexai.utils import MockAsyncPredictionServiceClient from tests.contrib.vertexai.utils import MockPredictionServiceClient from tests.utils import DummyTracer diff --git a/tests/contrib/vertica/test_vertica.py b/tests/contrib/vertica/test_vertica.py index d3fb9709bea..a67b9981987 100644 --- a/tests/contrib/vertica/test_vertica.py +++ b/tests/contrib/vertica/test_vertica.py @@ -10,7 +10,7 @@ from ddtrace.contrib.internal.vertica.patch import unpatch from ddtrace.internal.schema import DEFAULT_SPAN_SERVICE_NAME from ddtrace.settings._config import _deepmerge -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.contrib.config import VERTICA_CONFIG from tests.opentracer.utils import init_tracer from tests.utils import DummyTracer diff --git a/tests/contrib/yaaredis/test_yaaredis.py b/tests/contrib/yaaredis/test_yaaredis.py index 350b323de9c..0027ae19527 100644 --- a/tests/contrib/yaaredis/test_yaaredis.py +++ b/tests/contrib/yaaredis/test_yaaredis.py @@ -8,7 +8,7 @@ from ddtrace.contrib.internal.yaaredis.patch import patch from ddtrace.contrib.internal.yaaredis.patch import unpatch -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from tests.opentracer.utils import init_tracer from tests.utils import override_config diff --git a/tests/tracer/test_instance_config.py b/tests/tracer/test_instance_config.py index 130e46350ae..3c5a45818f6 100644 --- a/tests/tracer/test_instance_config.py +++ b/tests/tracer/test_instance_config.py @@ -2,7 +2,7 @@ from ddtrace import config from ddtrace.settings import IntegrationConfig -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin class InstanceConfigTestCase(TestCase): diff --git a/tests/tracer/test_trace_utils.py b/tests/tracer/test_trace_utils.py index 6820b0c4d76..9e82b3b0fa2 100644 --- a/tests/tracer/test_trace_utils.py +++ b/tests/tracer/test_trace_utils.py @@ -26,7 +26,7 @@ from ddtrace.settings import Config from ddtrace.settings import IntegrationConfig from ddtrace.trace import Context -from ddtrace.trace import Pin +from tests.utils import TestPin as Pin from ddtrace.trace import Span from tests.appsec.utils import asm_context from tests.utils import override_global_config diff --git a/tests/utils.py b/tests/utils.py index 5d94598ec4b..55dfac8da84 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -18,6 +18,7 @@ import ddtrace from ddtrace import config as dd_config +from ddtrace._trace.pin import Pin from ddtrace.constants import _SPAN_MEASURED_KEY from ddtrace.ext import http from ddtrace.internal import agent @@ -979,6 +980,62 @@ def test_case(self): spans[i].assert_structure(root, _children) +class TestPin(Pin): + """Allows overriding the global tracer for a test case""" + + def __init__( + self, + service=None, + tags=None, + tracer=None, + _config=None, + ): + # type: (...) -> None + super(TestPin, self).__init__(service=service, tags=tags, _config=_config) + if tracer is not None: + self.tracer = tracer + + def __setattr__(self, name, value): + if name == "tracer": + super(Pin, self).__setattr__(name, value) + else: + super(TestPin, self).__setattr__(name, value) + + @classmethod + def override( + cls, + obj, + service=None, + tags=None, + tracer=None, + ): + if not obj: + return + + pin = cls.get_from(obj) + if pin is None: + TestPin(service=service, tags=tags, tracer=tracer).onto(obj) + elif isinstance(pin, TestPin): + pin.clone(service=service, tags=tags, tracer=tracer).onto(obj) + else: + pin.clone(service=service, tags=tags).onto(obj) + + def clone( + self, + service=None, + tags=None, + tracer=None, + ): + # type: (...) -> Pin + pin = super(TestPin, self).clone(service=service, tags=tags) + return TestPin( + service=pin.service, + tags=pin.tags, + tracer=tracer or self.tracer, + _config=pin._config, + ) + + def assert_dict_issuperset(a, b): assert set(a.items()).issuperset(set(b.items())), "{a} is not a superset of {b}".format(a=a, b=b)