diff --git a/ddtrace/_trace/pin.py b/ddtrace/_trace/pin.py index dd41a1040a1..e27640a993e 100644 --- a/ddtrace/_trace/pin.py +++ b/ddtrace/_trace/pin.py @@ -6,7 +6,6 @@ import wrapt import ddtrace -from ddtrace.vendor.debtcollector import deprecate from ..internal.logger import get_logger @@ -32,25 +31,17 @@ class Pin(object): >>> conn = sqlite.connect('/tmp/image.db') """ - __slots__ = ["tags", "tracer", "_target", "_config", "_initialized"] + __slots__ = ["tags", "_tracer", "_target", "_config", "_initialized"] 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 @@ -68,10 +59,14 @@ def service(self): return self._config["service_name"] def __setattr__(self, name, value): - if getattr(self, "_initialized", False) and name != "_target": + if getattr(self, "_initialized", False) and name not in ("_target", "_tracer"): raise AttributeError("can't mutate a pin, use override() or clone() instead") super(Pin, self).__setattr__(name, value) + @property + def tracer(self): + return self._tracer + def __repr__(self): return "Pin(service=%s, tags=%s, tracer=%s)" % (self.service, self.tags, self.tracer) @@ -127,7 +122,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 +133,32 @@ 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", - ) + Pin._override(obj, service=service, tags=tags) + + @classmethod + def _override( + cls, + obj, # type: Any + service=None, # type: Optional[str] + tags=None, # type: Optional[Dict[str, str]] + tracer=None, + ): + # type: (...) -> None + """ + Internal method that allows overriding the global tracer in tests + """ if not obj: return pin = cls.get_from(obj) if pin is None: - Pin(service=service, tags=tags, tracer=tracer).onto(obj) + pin = Pin(service=service, tags=tags) else: - pin.clone(service=service, tags=tags, tracer=tracer).onto(obj) + pin = pin.clone(service=service, tags=tags) + + if tracer: + pin._tracer = tracer + pin.onto(obj) def enabled(self): # type: () -> bool @@ -198,21 +204,22 @@ 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.""" + return self._clone(service=service, tags=tags) + + def _clone( + self, + service=None, # type: Optional[str] + tags=None, # type: Optional[Dict[str, str]] + tracer=None, + ): + """Internal method that can clone the tracer from an existing Pin. This is used in tests""" # do a shallow copy of Pin dicts 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: @@ -221,9 +228,10 @@ def clone( # deepcopy: 0.2787208557128906 config = self._config.copy() - return Pin( + pin = Pin( service=service or self.service, tags=tags, - tracer=tracer or self.tracer, # do not clone the Tracer _config=config, ) + pin._tracer = tracer or self.tracer + return pin diff --git a/ddtrace/contrib/internal/asgi/middleware.py b/ddtrace/contrib/internal/asgi/middleware.py index 7da2b11b929..70b284c8882 100644 --- a/ddtrace/contrib/internal/asgi/middleware.py +++ b/ddtrace/contrib/internal/asgi/middleware.py @@ -150,12 +150,8 @@ async def __call__(self, scope, receive, send): if scope["type"] == "http": operation_name = schematize_url_operation(operation_name, direction=SpanDirection.INBOUND, protocol="http") - # 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") + pin._tracer = self.tracer 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..3fea1e9b6a0 100644 --- a/ddtrace/contrib/internal/django/patch.py +++ b/ddtrace/contrib/internal/django/patch.py @@ -17,7 +17,6 @@ import wrapt from wrapt.importer import when_imported -import ddtrace from ddtrace import config from ddtrace.appsec._utils import _UserInfoRetriever from ddtrace.constants import SPAN_KIND @@ -149,12 +148,9 @@ def cursor(django, pin, func, instance, args, kwargs): tags = {"django.db.vendor": vendor, "django.db.alias": alias} tags.update(getattr(conn, "_datadog_tags", {})) - # 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) + tracer = pin.tracer + pin = Pin(service, tags=tags) + pin._tracer = tracer cursor = func(*args, **kwargs) diff --git a/ddtrace/contrib/internal/mongoengine/trace.py b/ddtrace/contrib/internal/mongoengine/trace.py index 5539cf1d2e4..49ed5ee2590 100644 --- a/ddtrace/contrib/internal/mongoengine/trace.py +++ b/ddtrace/contrib/internal/mongoengine/trace.py @@ -29,11 +29,10 @@ 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) + tracer = pin.tracer + pp = ddtrace.trace.Pin(service=pin.service) + if tracer is not None: + pp._tracer = tracer + pp.onto(client) return client diff --git a/ddtrace/contrib/internal/pylibmc/client.py b/ddtrace/contrib/internal/pylibmc/client.py index 5c48e8465f8..e6b367b243b 100644 --- a/ddtrace/contrib/internal/pylibmc/client.py +++ b/ddtrace/contrib/internal/pylibmc/client.py @@ -51,12 +51,8 @@ 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._tracer = tracer 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..a20199dbcc2 100644 --- a/ddtrace/contrib/internal/sqlalchemy/engine.py +++ b/ddtrace/contrib/internal/sqlalchemy/engine.py @@ -67,12 +67,9 @@ def __init__(self, tracer, service, engine): self.name = schematize_database_operation("%s.query" % self.vendor, database_provider=self.vendor) # 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 = Pin(service=self.service) + pin._tracer = self.tracer + pin.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..587912f603b 100644 --- a/ddtrace/contrib/internal/tornado/application.py +++ b/ddtrace/contrib/internal/tornado/application.py @@ -54,10 +54,6 @@ def tracer_config(__init__, app, args, kwargs): if tags: tracer.set_tags(tags) - # 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) + pin = ddtrace.trace.Pin(service=service) + pin._tracer = tracer + pin.onto(template) diff --git a/releasenotes/notes/remove-deprecations-from-pin-a700ae0cb6d51d03.yaml b/releasenotes/notes/remove-deprecations-from-pin-a700ae0cb6d51d03.yaml new file mode 100644 index 00000000000..0401cdc4258 --- /dev/null +++ b/releasenotes/notes/remove-deprecations-from-pin-a700ae0cb6d51d03.yaml @@ -0,0 +1,4 @@ +--- +upgrade: + - | + tracing: Removes support for overriding the global tracer in ``ddtrace.trace.Pin`` \ No newline at end of file diff --git a/tests/appsec/contrib_appsec/django_app/urls.py b/tests/appsec/contrib_appsec/django_app/urls.py index 3ca8557c550..bb93a34ff8a 100644 --- a/tests/appsec/contrib_appsec/django_app/urls.py +++ b/tests/appsec/contrib_appsec/django_app/urls.py @@ -196,7 +196,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) + ddtrace.trace.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..ddefe6cf33c 100644 --- a/tests/appsec/contrib_appsec/fastapi_app/app.py +++ b/tests/appsec/contrib_appsec/fastapi_app/app.py @@ -104,7 +104,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) + ddtrace.trace.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..ef2fcb0ce2c 100644 --- a/tests/appsec/contrib_appsec/flask_app/app.py +++ b/tests/appsec/contrib_appsec/flask_app/app.py @@ -55,7 +55,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) + ddtrace.trace.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..690b893c89f 100644 --- a/tests/appsec/contrib_appsec/test_flask.py +++ b/tests/appsec/contrib_appsec/test_flask.py @@ -37,7 +37,7 @@ def setUp(self): self.app = app self.app.test_client_class = DDFlaskTestClient self.client = self.app.test_client() - Pin.override(self.app, tracer=self.tracer) + Pin._override(self.app, tracer=self.tracer) def tearDown(self): super(BaseFlaskTestCase, self).tearDown() diff --git a/tests/appsec/contrib_appsec/utils.py b/tests/appsec/contrib_appsec/utils.py index 5cf5e1da6b1..e510ed34029 100644 --- a/tests/appsec/contrib_appsec/utils.py +++ b/tests/appsec/contrib_appsec/utils.py @@ -1568,7 +1568,7 @@ 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) + ddtrace.trace.Pin._override(interface.framework, tracer=interface.tracer) yield if original_tracer is not None: - ddtrace.trace.Pin.override(interface.framework, tracer=original_tracer) + ddtrace.trace.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 57bd68db6a6..d047b7acee5 100644 --- a/tests/appsec/integrations/django_tests/conftest.py +++ b/tests/appsec/integrations/django_tests/conftest.py @@ -50,7 +50,7 @@ def tracer(): # Patch Django and override tracer to be our test tracer pin = Pin.get_from(django) original_tracer = pin.tracer - Pin.override(django, tracer=tracer) + Pin._override(django, tracer=tracer) # Yield to our test yield tracer @@ -59,7 +59,7 @@ def tracer(): # Reset the tracer pinned to Django and unpatch # DEV: unable to properly unpatch and reload django app with each test # unpatch() - Pin.override(django, tracer=original_tracer) + Pin._override(django, tracer=original_tracer) @pytest.fixture diff --git a/tests/contrib/aiobotocore/utils.py b/tests/contrib/aiobotocore/utils.py index b51b6550327..e2eb56c6026 100644 --- a/tests/contrib/aiobotocore/utils.py +++ b/tests/contrib/aiobotocore/utils.py @@ -42,11 +42,11 @@ async def aiobotocore_client(service, tracer): client, aiobotocore.session.ClientCreatorContext ): async with client as client: - Pin.override(client, tracer=tracer) + Pin._override(client, tracer=tracer) await yield_(client) else: - Pin.override(client, tracer=tracer) + Pin._override(client, tracer=tracer) try: await yield_(client) finally: diff --git a/tests/contrib/aiohttp/test_aiohttp_client.py b/tests/contrib/aiohttp/test_aiohttp_client.py index 2b2b51c2650..c020b1266c6 100644 --- a/tests/contrib/aiohttp/test_aiohttp_client.py +++ b/tests/contrib/aiohttp/test_aiohttp_client.py @@ -189,7 +189,7 @@ def test_configure_service_name_pin(ddtrace_run_python_code_in_subprocess): async def test(): async with aiohttp.ClientSession() as session: - Pin.override(session, service="pin-custom-svc") + Pin._override(session, service="pin-custom-svc") async with session.get(URL_200) as resp: pass diff --git a/tests/contrib/aiohttp_jinja2/conftest.py b/tests/contrib/aiohttp_jinja2/conftest.py index a58b72f7f49..1624753a635 100644 --- a/tests/contrib/aiohttp_jinja2/conftest.py +++ b/tests/contrib/aiohttp_jinja2/conftest.py @@ -13,7 +13,7 @@ def patched_app_tracer_jinja(patched_app_tracer): # noqa: F811 app, tracer = patched_app_tracer patch() - Pin.override(aiohttp_jinja2, tracer=tracer) + Pin._override(aiohttp_jinja2, tracer=tracer) yield app, tracer unpatch() @@ -22,6 +22,6 @@ def patched_app_tracer_jinja(patched_app_tracer): # noqa: F811 def untraced_app_tracer_jinja(untraced_app_tracer): # noqa: F811 patch() app, tracer = untraced_app_tracer - Pin.override(aiohttp_jinja2, tracer=tracer) + Pin._override(aiohttp_jinja2, tracer=tracer) yield app, tracer unpatch() diff --git a/tests/contrib/aiohttp_jinja2/test_aiohttp_jinja2.py b/tests/contrib/aiohttp_jinja2/test_aiohttp_jinja2.py index 089c799ebe0..98a942b1637 100644 --- a/tests/contrib/aiohttp_jinja2/test_aiohttp_jinja2.py +++ b/tests/contrib/aiohttp_jinja2/test_aiohttp_jinja2.py @@ -35,7 +35,7 @@ async def test_template_rendering(untraced_app_tracer_jinja, aiohttp_client): async def test_template_rendering_snapshot(untraced_app_tracer_jinja, aiohttp_client, snapshot_context): app, _ = untraced_app_tracer_jinja - Pin.override(aiohttp_jinja2, tracer=tracer) + Pin._override(aiohttp_jinja2, tracer=tracer) with snapshot_context(): client = await aiohttp_client(app) # it should trace a template rendering @@ -51,7 +51,7 @@ async def test_template_rendering_snapshot_patched_server( use_global_tracer, ): app, _ = patched_app_tracer_jinja - Pin.override(aiohttp_jinja2, tracer=tracer) + Pin._override(aiohttp_jinja2, tracer=tracer) # Ignore meta.http.url tag as the port is not fixed on the server with snapshot_context(ignores=["meta.http.url", "meta.http.useragent"]): client = await aiohttp_client(app) diff --git a/tests/contrib/aiomysql/test_aiomysql.py b/tests/contrib/aiomysql/test_aiomysql.py index 8c923b9e292..06d53d4ce05 100644 --- a/tests/contrib/aiomysql/test_aiomysql.py +++ b/tests/contrib/aiomysql/test_aiomysql.py @@ -62,7 +62,7 @@ async def test_queries(snapshot_conn): @pytest.mark.asyncio @pytest.mark.snapshot async def test_pin_override(patched_conn, tracer): - Pin.override(patched_conn, service="db") + Pin._override(patched_conn, service="db") cursor = await patched_conn.cursor() await cursor.execute("SELECT 1") rows = await cursor.fetchall() @@ -78,7 +78,7 @@ async def test_patch_unpatch(tracer, test_spans): service = "fo" conn = await aiomysql.connect(**AIOMYSQL_CONFIG) - Pin.get_from(conn).clone(service=service, tracer=tracer).onto(conn) + Pin.get_from(conn)._clone(service=service, tracer=tracer).onto(conn) await (await conn.cursor()).execute("select 'dba4x4'") conn.close() @@ -100,7 +100,7 @@ async def test_patch_unpatch(tracer, test_spans): patch() conn = await aiomysql.connect(**AIOMYSQL_CONFIG) - Pin.get_from(conn).clone(service=service, tracer=tracer).onto(conn) + Pin.get_from(conn)._clone(service=service, tracer=tracer).onto(conn) await (await conn.cursor()).execute("select 'dba4x4'") conn.close() @@ -237,7 +237,7 @@ async def _get_conn_tracer(self, tags=None): assert pin # Customize the service # we have to apply it on the existing one since new one won't inherit `app` - pin.clone(tracer=self.tracer, tags={**tags, **pin.tags}).onto(self.conn) + pin._clone(tracer=self.tracer, tags={**tags, **pin.tags}).onto(self.conn) return self.conn, self.tracer diff --git a/tests/contrib/aiopg/test.py b/tests/contrib/aiopg/test.py index eb738e009d8..939aa376570 100644 --- a/tests/contrib/aiopg/test.py +++ b/tests/contrib/aiopg/test.py @@ -39,7 +39,7 @@ def tearDown(self): @pytest.mark.asyncio async def _get_conn_and_tracer(self): conn = self._conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) return conn, self.tracer @@ -159,7 +159,7 @@ async def test_connect_factory(self): services = ["db", "another"] for service in services: conn, _ = await self._get_conn_and_tracer() - Pin.get_from(conn).clone(service=service, tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(service=service, tracer=self.tracer).onto(conn) await self.assert_conn_is_traced(self.tracer, conn, service) conn.close() @@ -172,7 +172,7 @@ async def test_patch_unpatch(self): service = "fo" conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(service=service, tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(service=service, tracer=self.tracer).onto(conn) await (await conn.cursor()).execute("select 'blah'") conn.close() @@ -194,7 +194,7 @@ async def test_patch_unpatch(self): patch() conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(service=service, tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(service=service, tracer=self.tracer).onto(conn) await (await conn.cursor()).execute("select 'blah'") conn.close() @@ -218,7 +218,7 @@ async def test_user_specified_service_v0(self): assert config.service == "mysvc" conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) await (await conn.cursor()).execute("select 'blah'") conn.close() @@ -240,7 +240,7 @@ async def test_user_specified_service_v1(self): assert config.service == "mysvc" conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) await (await conn.cursor()).execute("select 'blah'") conn.close() @@ -258,7 +258,7 @@ async def test_unspecified_service_v1(self): """ # Ensure that the service name was configured conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) await (await conn.cursor()).execute("select 'blah'") conn.close() @@ -271,7 +271,7 @@ async def test_unspecified_service_v1(self): @run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) async def test_trace_span_name_v0_schema(self): conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) await (await conn.cursor()).execute("select 'blah'") conn.close() @@ -284,7 +284,7 @@ async def test_trace_span_name_v0_schema(self): @run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) async def test_trace_span_name_v1_schema(self): conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) await (await conn.cursor()).execute("select 'blah'") conn.close() @@ -299,7 +299,7 @@ async def test_trace_span_name_v1_schema(self): ) async def test_user_specified_service_integration_v0(self): conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) cursor = await conn.cursor() await cursor.execute("SELECT 1") @@ -314,7 +314,7 @@ async def test_user_specified_service_integration_v0(self): ) async def test_user_specified_service_integration_v1(self): conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) cursor = await conn.cursor() await cursor.execute("SELECT 1") @@ -327,7 +327,7 @@ async def test_user_specified_service_integration_v1(self): @AsyncioTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) async def test_user_specified_service_env_var_v0(self): conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) cursor = await conn.cursor() await cursor.execute("SELECT 1") @@ -340,7 +340,7 @@ async def test_user_specified_service_env_var_v0(self): @AsyncioTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) async def test_user_specified_service_env_var_v1(self): conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) cursor = await conn.cursor() await cursor.execute("SELECT 1") @@ -355,7 +355,7 @@ async def test_user_specified_service_env_var_v1(self): ) async def test_pin_override_service_v1(self): conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer, service="override").onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer, service="override").onto(conn) cursor = await conn.cursor() await cursor.execute("SELECT 1") @@ -368,7 +368,7 @@ async def test_pin_override_service_v1(self): @AsyncioTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) async def test_span_name_v0_schema(self): conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) cursor = await conn.cursor() await cursor.execute("SELECT 1") @@ -381,7 +381,7 @@ async def test_span_name_v0_schema(self): @AsyncioTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) async def test_span_name_v1_schema(self): conn = await aiopg.connect(**POSTGRES_CONFIG) - Pin.get_from(conn).clone(tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(tracer=self.tracer).onto(conn) cursor = await conn.cursor() await cursor.execute("SELECT 1") @@ -395,7 +395,7 @@ class AiopgAnalyticsTestCase(AiopgTestCase): async def trace_spans(self): conn, _ = await self._get_conn_and_tracer() - Pin.get_from(conn).clone(service="db", tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(service="db", tracer=self.tracer).onto(conn) cursor = await conn.cursor() await cursor.execute("select 'foobar'") diff --git a/tests/contrib/algoliasearch/test.py b/tests/contrib/algoliasearch/test.py index 87f5f7b6910..53603f47287 100644 --- a/tests/contrib/algoliasearch/test.py +++ b/tests/contrib/algoliasearch/test.py @@ -52,7 +52,7 @@ def search(self, query, args=None, request_options=None): def patch_algoliasearch(self): patch() - Pin.override(self.index, tracer=self.tracer) + Pin._override(self.index, tracer=self.tracer) def tearDown(self): super(AlgoliasearchTest, self).tearDown() @@ -157,7 +157,7 @@ def test_patch_unpatch(self): def test_patch_all_auto_enable(self): patch_all() - Pin.override(self.index, tracer=self.tracer) + Pin._override(self.index, tracer=self.tracer) self.perform_search("test search") spans = self.get_spans() @@ -179,7 +179,7 @@ def test_user_specified_service_default(self): The algoliasearch integration shouldn't use it as the service name """ patch_all() - Pin.override(self.index, tracer=self.tracer) + Pin._override(self.index, tracer=self.tracer) self.perform_search("test search") spans = self.get_spans() self.reset() @@ -195,7 +195,7 @@ def test_user_specified_service_v0(self): The algoliasearch integration shouldn't use it as the service name """ patch_all() - Pin.override(self.index, tracer=self.tracer) + Pin._override(self.index, tracer=self.tracer) self.perform_search("test search") spans = self.get_spans() self.reset() @@ -211,7 +211,7 @@ def test_user_specified_service_v1(self): so make sure that is used and not the v0 schema 'algoliasearch' """ patch_all() - Pin.override(self.index, tracer=self.tracer) + Pin._override(self.index, tracer=self.tracer) self.perform_search("test search") spans = self.get_spans() self.reset() @@ -223,7 +223,7 @@ def test_user_specified_service_v1(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_span_name_v0_schema(self): patch_all() - Pin.override(self.index, tracer=self.tracer) + Pin._override(self.index, tracer=self.tracer) self.perform_search("test search") spans = self.get_spans() self.reset() @@ -235,7 +235,7 @@ def test_span_name_v0_schema(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_span_name_v1_schema(self): patch_all() - Pin.override(self.index, tracer=self.tracer) + Pin._override(self.index, tracer=self.tracer) self.perform_search("test search") spans = self.get_spans() self.reset() diff --git a/tests/contrib/anthropic/conftest.py b/tests/contrib/anthropic/conftest.py index 3e5dac0a442..1cb600b0b82 100644 --- a/tests/contrib/anthropic/conftest.py +++ b/tests/contrib/anthropic/conftest.py @@ -36,7 +36,7 @@ def mock_tracer(ddtrace_global_config, anthropic): try: pin = Pin.get_from(anthropic) mock_tracer = DummyTracer(writer=DummyWriter(trace_flush_enabled=False)) - pin.override(anthropic, tracer=mock_tracer) + pin._override(anthropic, tracer=mock_tracer) pin.tracer._configure() if ddtrace_global_config.get("_llmobs_enabled", False): # Have to disable and re-enable LLMObs to use to mock tracer. diff --git a/tests/contrib/aredis/test_aredis.py b/tests/contrib/aredis/test_aredis.py index e62cfa974be..298abdbf85b 100644 --- a/tests/contrib/aredis/test_aredis.py +++ b/tests/contrib/aredis/test_aredis.py @@ -122,7 +122,7 @@ async def test_meta_override(tracer, test_spans): r = aredis.StrictRedis(port=REDIS_CONFIG["port"]) pin = Pin.get_from(r) assert pin is not None - pin.clone(tags={"cheese": "camembert"}, tracer=tracer).onto(r) + pin._clone(tags={"cheese": "camembert"}, tracer=tracer).onto(r) await r.get("cheese") test_spans.assert_trace_count(1) @@ -162,7 +162,7 @@ async def test(tracer, test_spans): r = aredis.StrictRedis(port=REDIS_CONFIG["port"]) pin = Pin.get_from(r) assert pin is not None - pin.clone(tags={{"cheese": "camembert"}}, tracer=tracer).onto(r) + pin._clone(tags={{"cheese": "camembert"}}, tracer=tracer).onto(r) await r.get("cheese") test_spans.assert_trace_count(1) diff --git a/tests/contrib/asyncpg/test_asyncpg.py b/tests/contrib/asyncpg/test_asyncpg.py index 5e5b649faaf..5de995c80aa 100644 --- a/tests/contrib/asyncpg/test_asyncpg.py +++ b/tests/contrib/asyncpg/test_asyncpg.py @@ -158,7 +158,7 @@ async def test_cursor_manual(patched_conn): @pytest.mark.snapshot @pytest.mark.xfail async def test_service_override_pin(patched_conn): - Pin.override(patched_conn, service="custom-svc") + Pin._override(patched_conn, service="custom-svc") await patched_conn.execute("SELECT 1") @@ -351,7 +351,7 @@ async def _get_conn_tracer(self): assert pin # Customize the service # we have to apply it on the existing one since new one won't inherit `app` - pin.clone(tracer=self.tracer).onto(self.conn) + pin._clone(tracer=self.tracer).onto(self.conn) return self.conn, self.tracer @@ -468,7 +468,7 @@ async def test_asyncpg_dbm_propagation_comment_pin_service_name_override(self): db_name = POSTGRES_CONFIG["dbname"] conn, tracer = await self._get_conn_tracer() - Pin.override(conn, service="pin-service-name-override", tracer=tracer) + Pin._override(conn, service="pin-service-name-override", tracer=tracer) def mock_func(args, kwargs, sql_pos, sql_kw, sql_with_dbm_tags): return args, kwargs diff --git a/tests/contrib/avro/test_avro.py b/tests/contrib/avro/test_avro.py index 3db10460a23..b2db731a71e 100644 --- a/tests/contrib/avro/test_avro.py +++ b/tests/contrib/avro/test_avro.py @@ -49,7 +49,7 @@ def test_basic_schema_serialize(avro, tracer, test_spans): pin = Pin.get_from(writer) assert pin is not None - pin.clone(tags={"cheese": "camembert"}, tracer=tracer).onto(writer) + pin._clone(tags={"cheese": "camembert"}, tracer=tracer).onto(writer) with tracer.trace("basic_avro_schema.serialization") as span: span.context.sampling_priority = AUTO_KEEP @@ -82,7 +82,7 @@ def test_advanced_schema_serialize(avro, tracer, test_spans): pin = Pin.get_from(writer) assert pin is not None - pin.clone(tags={"cheese": "camembert"}, tracer=tracer).onto(writer) + pin._clone(tags={"cheese": "camembert"}, tracer=tracer).onto(writer) with tracer.trace("advanced_avro_schema.serialization") as span: span.context.sampling_priority = AUTO_KEEP @@ -128,7 +128,7 @@ def test_basic_schema_deserialize(avro, tracer, test_spans): pin = Pin.get_from(reader) assert pin is not None - pin.clone(tags={"cheese": "camembert"}, tracer=tracer).onto(reader) + pin._clone(tags={"cheese": "camembert"}, tracer=tracer).onto(reader) with tracer.trace("basic_avro_schema.deserialization") as span: span.context.sampling_priority = AUTO_KEEP @@ -160,7 +160,7 @@ def test_advanced_schema_deserialize(avro, tracer, test_spans): pin = Pin.get_from(reader) assert pin is not None - pin.clone(tags={"cheese": "camembert"}, tracer=tracer).onto(reader) + pin._clone(tags={"cheese": "camembert"}, tracer=tracer).onto(reader) with tracer.trace("advanced_avro_schema.deserialization") as span: span.context.sampling_priority = AUTO_KEEP diff --git a/tests/contrib/boto/test.py b/tests/contrib/boto/test.py index 2570ca9c65c..6da67eac9d3 100644 --- a/tests/contrib/boto/test.py +++ b/tests/contrib/boto/test.py @@ -39,7 +39,9 @@ def setUp(self): @mock_ec2 def test_ec2_client(self): ec2 = boto.ec2.connect_to_region("us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(ec2) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(ec2) ec2.get_all_instances() spans = self.pop_spans() @@ -77,7 +79,7 @@ def test_ec2_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc")) def test_schematized_env_service_default_ec2_client(self): ec2 = boto.ec2.connect_to_region("us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) # Create an instance ec2.run_instances(21) @@ -91,7 +93,7 @@ def test_schematized_env_service_default_ec2_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_env_service_v0_ec2_client(self): ec2 = boto.ec2.connect_to_region("us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) # Create an instance ec2.run_instances(21) @@ -105,7 +107,7 @@ def test_schematized_env_service_v0_ec2_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_env_service_v1_ec2_client(self): ec2 = boto.ec2.connect_to_region("us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) # Create an instance ec2.run_instances(21) @@ -119,7 +121,7 @@ def test_schematized_env_service_v1_ec2_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict()) def test_schematized_unspecified_service_default_ec2_client(self): ec2 = boto.ec2.connect_to_region("us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) # Create an instance ec2.run_instances(21) @@ -133,7 +135,7 @@ def test_schematized_unspecified_service_default_ec2_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_unspecified_service_v0_ec2_client(self): ec2 = boto.ec2.connect_to_region("us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) # Create an instance ec2.run_instances(21) @@ -147,7 +149,7 @@ def test_schematized_unspecified_service_v0_ec2_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_unspecified_service_v1_ec2_client(self): ec2 = boto.ec2.connect_to_region("us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) # Create an instance ec2.run_instances(21) @@ -161,7 +163,7 @@ def test_schematized_unspecified_service_v1_ec2_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_operation_name_v0_ec2_client(self): ec2 = boto.ec2.connect_to_region("us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) # Create an instance ec2.run_instances(21) @@ -175,7 +177,7 @@ def test_schematized_operation_name_v0_ec2_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_operation_name_v1_ec2_client(self): ec2 = boto.ec2.connect_to_region("us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) # Create an instance ec2.run_instances(21) @@ -188,7 +190,9 @@ def test_schematized_operation_name_v1_ec2_client(self): def _test_s3_client(self): # DEV: To test tag params check create bucket's span s3 = boto.s3.connect_to_region("us-east-1") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(s3) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(s3) s3.get_all_buckets() spans = self.pop_spans() @@ -247,7 +251,7 @@ def _test_s3_client(self): def test_schematized_env_service_name_default_s3_client(self): # DEV: To test tag params check create bucket's span s3 = boto.s3.connect_to_region("us-east-1") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) # Create the test bucket s3.create_bucket("cheese") @@ -266,7 +270,7 @@ def test_schematized_env_service_name_default_s3_client(self): def test_schematized_env_service_name_v0_s3_client(self): # DEV: To test tag params check create bucket's span s3 = boto.s3.connect_to_region("us-east-1") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) # Create the test bucket s3.create_bucket("cheese") @@ -285,7 +289,7 @@ def test_schematized_env_service_name_v0_s3_client(self): def test_schematized_env_service_name_v1_s3_client(self): # DEV: To test tag params check create bucket's span s3 = boto.s3.connect_to_region("us-east-1") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) # Create the test bucket s3.create_bucket("cheese") @@ -304,7 +308,7 @@ def test_schematized_env_service_name_v1_s3_client(self): def test_schematized_operation_name_v0_s3_client(self): # DEV: To test tag params check create bucket's span s3 = boto.s3.connect_to_region("us-east-1") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) # Create the test bucket s3.create_bucket("cheese") @@ -323,7 +327,7 @@ def test_schematized_operation_name_v0_s3_client(self): def test_schematized_operation_name_v1_s3_client(self): # DEV: To test tag params check create bucket's span s3 = boto.s3.connect_to_region("us-east-1") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) # Create the test bucket s3.create_bucket("cheese") @@ -342,7 +346,7 @@ def test_schematized_operation_name_v1_s3_client(self): def test_schematized_unspecified_service_name_default_s3_client(self): # DEV: To test tag params check create bucket's span s3 = boto.s3.connect_to_region("us-east-1") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) # Create the test bucket s3.create_bucket("cheese") @@ -361,7 +365,7 @@ def test_schematized_unspecified_service_name_default_s3_client(self): def test_schematized_unspecified_service_name_v0_s3_client(self): # DEV: To test tag params check create bucket's span s3 = boto.s3.connect_to_region("us-east-1") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) # Create the test bucket s3.create_bucket("cheese") @@ -380,7 +384,7 @@ def test_schematized_unspecified_service_name_v0_s3_client(self): def test_schematized_unspecified_service_name_v1_s3_client(self): # DEV: To test tag params check create bucket's span s3 = boto.s3.connect_to_region("us-east-1") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) # Create the test bucket s3.create_bucket("cheese") @@ -411,7 +415,9 @@ def test_s3_client_no_params(self): @mock_s3 def test_s3_put(self): s3 = boto.s3.connect_to_region("us-east-1") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(s3) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(s3) s3.create_bucket("mybucket") bucket = s3.get_bucket("mybucket") k = boto.s3.key.Key(bucket) @@ -445,7 +451,9 @@ def test_s3_put(self): @mock_lambda def test_unpatch(self): lamb = boto.awslambda.connect_to_region("us-east-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(lamb) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(lamb) unpatch() # multiple calls @@ -456,11 +464,12 @@ def test_unpatch(self): @mock_s3 def test_double_patch(self): s3 = boto.s3.connect_to_region("us-east-1") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(s3) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(s3) patch() patch() - # Get the created bucket s3.create_bucket("cheese") spans = self.pop_spans() @@ -470,7 +479,9 @@ def test_double_patch(self): @mock_lambda def test_lambda_client(self): lamb = boto.awslambda.connect_to_region("us-east-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(lamb) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(lamb) # multiple calls lamb.list_functions() @@ -495,7 +506,7 @@ def test_lambda_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc")) def test_schematized_env_service_name_default_lambda_client(self): lamb = boto.awslambda.connect_to_region("us-east-2") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.list_functions() @@ -507,7 +518,7 @@ def test_schematized_env_service_name_default_lambda_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_env_service_name_v0_lambda_client(self): lamb = boto.awslambda.connect_to_region("us-east-2") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.list_functions() @@ -519,7 +530,7 @@ def test_schematized_env_service_name_v0_lambda_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_env_service_name_v1_lambda_client(self): lamb = boto.awslambda.connect_to_region("us-east-2") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.list_functions() @@ -531,7 +542,7 @@ def test_schematized_env_service_name_v1_lambda_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc")) def test_schematized_unspecified_service_name_default_lambda_client(self): lamb = boto.awslambda.connect_to_region("us-east-2") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.list_functions() @@ -543,7 +554,7 @@ def test_schematized_unspecified_service_name_default_lambda_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_unspecified_service_name_v0_lambda_client(self): lamb = boto.awslambda.connect_to_region("us-east-2") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.list_functions() @@ -555,7 +566,7 @@ def test_schematized_unspecified_service_name_v0_lambda_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_unspecified_service_name_v1_lambda_client(self): lamb = boto.awslambda.connect_to_region("us-east-2") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.list_functions() @@ -567,7 +578,7 @@ def test_schematized_unspecified_service_name_v1_lambda_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_operation_name_v0_lambda_client(self): lamb = boto.awslambda.connect_to_region("us-east-2") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.list_functions() @@ -579,7 +590,7 @@ def test_schematized_operation_name_v0_lambda_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_operation_name_v1_lambda_client(self): lamb = boto.awslambda.connect_to_region("us-east-2") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.list_functions() @@ -590,7 +601,9 @@ def test_schematized_operation_name_v1_lambda_client(self): @mock_sts def test_sts_client(self): sts = boto.sts.connect_to_region("us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sts) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sts) sts.get_federation_token(12, duration=10) @@ -610,7 +623,7 @@ def test_sts_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc")) def test_schematized_env_default_sts_client(self): sts = boto.sts.connect_to_region("us-west-2") - Pin.get_from(sts).clone(tracer=self.tracer).onto(sts) + Pin.get_from(sts)._clone(tracer=self.tracer).onto(sts) sts.get_federation_token(12, duration=10) @@ -624,7 +637,7 @@ def test_schematized_env_default_sts_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_env_v0_sts_client(self): sts = boto.sts.connect_to_region("us-west-2") - Pin.get_from(sts).clone(tracer=self.tracer).onto(sts) + Pin.get_from(sts)._clone(tracer=self.tracer).onto(sts) sts.get_federation_token(12, duration=10) @@ -638,7 +651,7 @@ def test_schematized_env_v0_sts_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_env_v1_sts_client(self): sts = boto.sts.connect_to_region("us-west-2") - Pin.get_from(sts).clone(tracer=self.tracer).onto(sts) + Pin.get_from(sts)._clone(tracer=self.tracer).onto(sts) sts.get_federation_token(12, duration=10) @@ -652,7 +665,7 @@ def test_schematized_env_v1_sts_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict()) def test_schematized_unspecified_service_default_sts_client(self): sts = boto.sts.connect_to_region("us-west-2") - Pin.get_from(sts).clone(tracer=self.tracer).onto(sts) + Pin.get_from(sts)._clone(tracer=self.tracer).onto(sts) sts.get_federation_token(12, duration=10) @@ -666,7 +679,7 @@ def test_schematized_unspecified_service_default_sts_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_unspecified_service_v0_sts_client(self): sts = boto.sts.connect_to_region("us-west-2") - Pin.get_from(sts).clone(tracer=self.tracer).onto(sts) + Pin.get_from(sts)._clone(tracer=self.tracer).onto(sts) sts.get_federation_token(12, duration=10) @@ -680,7 +693,7 @@ def test_schematized_unspecified_service_v0_sts_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_unspecified_service_sts_client(self): sts = boto.sts.connect_to_region("us-west-2") - Pin.get_from(sts).clone(tracer=self.tracer).onto(sts) + Pin.get_from(sts)._clone(tracer=self.tracer).onto(sts) sts.get_federation_token(12, duration=10) @@ -694,7 +707,7 @@ def test_schematized_unspecified_service_sts_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_operation_name_v0_sts_client(self): sts = boto.sts.connect_to_region("us-west-2") - Pin.get_from(sts).clone(tracer=self.tracer).onto(sts) + Pin.get_from(sts)._clone(tracer=self.tracer).onto(sts) sts.get_federation_token(12, duration=10) @@ -708,7 +721,7 @@ def test_schematized_operation_name_v0_sts_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_operation_name_sts_client(self): sts = boto.sts.connect_to_region("us-west-2") - Pin.get_from(sts).clone(tracer=self.tracer).onto(sts) + Pin.get_from(sts)._clone(tracer=self.tracer).onto(sts) sts.get_federation_token(12, duration=10) @@ -727,7 +740,9 @@ def test_schematized_operation_name_sts_client(self): ) def test_elasticache_client(self): elasticache = boto.elasticache.connect_to_region("us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(elasticache) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(elasticache) elasticache.describe_cache_clusters() @@ -746,7 +761,9 @@ def test_ec2_client_ot(self): """OpenTracing compatibility check of the test_ec2_client test.""" ec2 = boto.ec2.connect_to_region("us-west-2") ot_tracer = init_tracer("my_svc", self.tracer) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(ec2) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(ec2) with ot_tracer.start_active_span("ot_span"): ec2.get_all_instances() diff --git a/tests/contrib/botocore/test.py b/tests/contrib/botocore/test.py index 67eaaf55fc3..cb1a06bec1c 100644 --- a/tests/contrib/botocore/test.py +++ b/tests/contrib/botocore/test.py @@ -104,7 +104,9 @@ def setUp(self): super(BotocoreTest, self).setUp() - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(botocore.parsers.ResponseParser) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(botocore.parsers.ResponseParser) # Setting the validated flag to False ensures the redaction paths configurations are re-validated # FIXME: Ensure AWSPayloadTagging._REQUEST_REDACTION_PATHS_DEFAULTS is always in sync with # config.botocore.payload_tagging_request @@ -123,7 +125,9 @@ def tearDown(self): def test_patch_submodules(self): patch_submodules(["s3"]) ec2 = self.session.create_client("ec2", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(ec2) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(ec2) ec2.describe_instances() @@ -131,7 +135,9 @@ def test_patch_submodules(self): assert spans == [] s3 = self.session.create_client("s3", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(s3) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(s3) s3.list_buckets() s3.list_buckets() @@ -142,7 +148,9 @@ def test_patch_submodules(self): @mock_ec2 def test_traced_client(self): ec2 = self.session.create_client("ec2", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(ec2) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(ec2) ec2.describe_instances() @@ -169,7 +177,7 @@ def test_traced_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc")) def test_schematized_ec2_call_default(self): ec2 = self.session.create_client("ec2", region_name="us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) ec2.describe_instances() @@ -182,7 +190,7 @@ def test_schematized_ec2_call_default(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_ec2_call_v0(self): ec2 = self.session.create_client("ec2", region_name="us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) ec2.describe_instances() @@ -195,7 +203,7 @@ def test_schematized_ec2_call_v0(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_ec2_call_v1(self): ec2 = self.session.create_client("ec2", region_name="us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) ec2.describe_instances() @@ -208,7 +216,7 @@ def test_schematized_ec2_call_v1(self): @TracerTestCase.run_in_subprocess(env_overrides=dict()) def test_schematized_unspecified_service_ec2_call_default(self): ec2 = self.session.create_client("ec2", region_name="us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) ec2.describe_instances() @@ -221,7 +229,7 @@ def test_schematized_unspecified_service_ec2_call_default(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_unspecified_service_ec2_call_v0(self): ec2 = self.session.create_client("ec2", region_name="us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) ec2.describe_instances() @@ -234,7 +242,7 @@ def test_schematized_unspecified_service_ec2_call_v0(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_unspecified_service_ec2_call_v1(self): ec2 = self.session.create_client("ec2", region_name="us-west-2") - Pin.get_from(ec2).clone(tracer=self.tracer).onto(ec2) + Pin.get_from(ec2)._clone(tracer=self.tracer).onto(ec2) ec2.describe_instances() @@ -252,7 +260,9 @@ def test_schematized_unspecified_service_ec2_call_v1(self): @mock_dynamodb def test_dynamodb_put_get(self): ddb = self.session.create_client("dynamodb", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(ddb) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(ddb) with self.override_config("botocore", dict(instrument_internals=True)): ddb.create_table( @@ -296,7 +306,9 @@ def test_dynamodb_put_get(self): @mock_dynamodb def test_dynamodb_put_get_with_table_primary_key_mapping(self): ddb = self.session.create_client("dynamodb", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(ddb) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(ddb) with self.override_config( "botocore", @@ -358,7 +370,9 @@ def test_dynamodb_put_get_with_table_primary_key_mapping(self): @mock_dynamodb def test_dynamodb_put_get_with_broken_table_primary_key_mapping(self): ddb = self.session.create_client("dynamodb", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(ddb) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(ddb) with self.override_config( "botocore", @@ -407,7 +421,9 @@ def test_dynamodb_put_get_with_broken_table_primary_key_mapping(self): @mock_s3 def test_s3_client(self): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(s3) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(s3) s3.list_buckets() s3.list_buckets() @@ -444,7 +460,9 @@ def test_s3_head_404_default(self): API calls with a 404 response """ s3 = self.session.create_client("s3", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(s3) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(s3) # We need a bucket for this test s3.create_bucket(Bucket="test", CreateBucketConfiguration=dict(LocationConstraint="us-west-2")) @@ -472,7 +490,9 @@ def test_s3_head_404_as_errors(self): we attach exception information to S3 HeadObject 404 responses """ s3 = self.session.create_client("s3", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(s3) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(s3) # We need a bucket for this test s3.create_bucket(Bucket="test", CreateBucketConfiguration=dict(LocationConstraint="us-west-2")) @@ -500,7 +520,9 @@ def test_s3_head_404_as_errors(self): def _test_s3_put(self): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(s3) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(s3) params = { "Bucket": "mybucket", "CreateBucketConfiguration": { @@ -581,7 +603,7 @@ def test_s3_put_no_params(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_BOTOCORE_SERVICE="botocore")) def test_service_name_override(self): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) params = { "Bucket": "mybucket", @@ -612,7 +634,7 @@ def test_service_name_override(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc")) def test_schematized_s3_client_default(self): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) s3.list_buckets() @@ -626,7 +648,7 @@ def test_schematized_s3_client_default(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_s3_client_v0(self): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) s3.list_buckets() @@ -640,7 +662,7 @@ def test_schematized_s3_client_v0(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_s3_client_v1(self): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) s3.list_buckets() @@ -654,7 +676,7 @@ def test_schematized_s3_client_v1(self): @TracerTestCase.run_in_subprocess(env_overrides=dict()) def test_schematized_unspecified_service_s3_client_default(self): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) s3.list_buckets() @@ -668,7 +690,7 @@ def test_schematized_unspecified_service_s3_client_default(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_unspecified_service_s3_client_v0(self): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) s3.list_buckets() @@ -682,7 +704,7 @@ def test_schematized_unspecified_service_s3_client_v0(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_unspecified_service_s3_client_v1(self): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + Pin.get_from(s3)._clone(tracer=self.tracer).onto(s3) s3.list_buckets() @@ -695,7 +717,9 @@ def test_schematized_unspecified_service_s3_client_v1(self): def _test_sqs_client(self): self.sqs_client.delete_queue(QueueUrl=self.queue_name) # Delete so we can test create_queue spans - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) self.sqs_test_queue = self.sqs_client.create_queue(QueueName=self.queue_name) spans = self.get_spans() @@ -731,7 +755,9 @@ def test_sqs_client_no_params(self): @mock_sqs def test_sqs_send_message_non_url_queue(self): - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) self.sqs_client.send_message(QueueUrl="Test", MessageBody="world") spans = self.get_spans() @@ -744,7 +770,9 @@ def test_sqs_send_message_non_url_queue(self): @mock_sqs def test_sqs_send_message_distributed_tracing_off(self): with self.override_config("botocore", dict(distributed_tracing=False)): - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) self.sqs_client.send_message(QueueUrl=self.sqs_test_queue["QueueUrl"], MessageBody="world") spans = self.get_spans() @@ -774,7 +802,9 @@ def test_sqs_send_message_distributed_tracing_off(self): @mock_sqs def test_sqs_send_message_distributed_tracing_on(self): with self.override_config("botocore", dict(distributed_tracing=True, propagation_enabled=True)): - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) self.sqs_client.send_message(QueueUrl=self.sqs_test_queue["QueueUrl"], MessageBody="world") spans = self.get_spans() @@ -851,8 +881,8 @@ def _test_distributed_tracing_sns_to_sqs(self, raw_message_delivery): AttributeValue="true", ) - Pin.get_from(sns).clone(tracer=self.tracer).onto(sns) - Pin.get_from(self.sqs_client).clone(tracer=self.tracer).onto(self.sqs_client) + Pin.get_from(sns)._clone(tracer=self.tracer).onto(sns) + Pin.get_from(self.sqs_client)._clone(tracer=self.tracer).onto(self.sqs_client) sns.publish(TopicArn=topic_arn, Message="test") @@ -891,7 +921,9 @@ def _test_distributed_tracing_sns_to_sqs(self, raw_message_delivery): @mock_sqs def test_sqs_send_message_trace_injection_with_max_message_attributes(self): - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) message_attributes = { "one": {"DataType": "String", "StringValue": "one"}, "two": {"DataType": "String", "StringValue": "two"}, @@ -934,7 +966,9 @@ def test_sqs_send_message_trace_injection_with_max_message_attributes(self): @mock_sqs def test_sqs_send_message_batch_trace_injection_with_no_message_attributes(self): - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) entries = [ { "Id": "1", @@ -969,7 +1003,9 @@ def test_sqs_send_message_batch_trace_injection_with_no_message_attributes(self) @mock_sqs def test_sqs_send_message_batch_trace_injection_with_message_attributes(self): - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) entries = [ { "Id": "1", @@ -1016,7 +1052,9 @@ def test_sqs_send_message_batch_trace_injection_with_message_attributes(self): @mock_sqs def test_sqs_send_message_batch_trace_injection_with_max_message_attributes(self): - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) entries = [ { "Id": "1", @@ -1063,7 +1101,7 @@ def test_sqs_send_message_batch_trace_injection_with_max_message_attributes(self @mock_sqs @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc")) def test_schematized_sqs_client_default(self): - Pin.get_from(self.sqs_client).clone(tracer=self.tracer).onto(self.sqs_client) + Pin.get_from(self.sqs_client)._clone(tracer=self.tracer).onto(self.sqs_client) self.sqs_client.send_message(QueueUrl=self.sqs_test_queue["QueueUrl"], MessageBody="world") self.sqs_client.send_message_batch( QueueUrl=self.sqs_test_queue["QueueUrl"], Entries=[{"Id": "1", "MessageBody": "hello"}] @@ -1085,7 +1123,7 @@ def test_schematized_sqs_client_default(self): @mock_sqs @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_sqs_client_v0(self): - Pin.get_from(self.sqs_client).clone(tracer=self.tracer).onto(self.sqs_client) + Pin.get_from(self.sqs_client)._clone(tracer=self.tracer).onto(self.sqs_client) self.sqs_client.send_message(QueueUrl=self.sqs_test_queue["QueueUrl"], MessageBody="world") self.sqs_client.send_message_batch( @@ -1108,7 +1146,7 @@ def test_schematized_sqs_client_v0(self): @mock_sqs @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_sqs_client_v1(self): - Pin.get_from(self.sqs_client).clone(tracer=self.tracer).onto(self.sqs_client) + Pin.get_from(self.sqs_client)._clone(tracer=self.tracer).onto(self.sqs_client) self.sqs_client.send_message(QueueUrl=self.sqs_test_queue["QueueUrl"], MessageBody="world") self.sqs_client.send_message_batch( @@ -1131,7 +1169,7 @@ def test_schematized_sqs_client_v1(self): @mock_sqs @TracerTestCase.run_in_subprocess(env_overrides=dict()) def test_schematized_unspecified_service_sqs_client_default(self): - Pin.get_from(self.sqs_client).clone(tracer=self.tracer).onto(self.sqs_client) + Pin.get_from(self.sqs_client)._clone(tracer=self.tracer).onto(self.sqs_client) self.sqs_client.send_message(QueueUrl=self.sqs_test_queue["QueueUrl"], MessageBody="world") self.sqs_client.send_message_batch( @@ -1154,7 +1192,7 @@ def test_schematized_unspecified_service_sqs_client_default(self): @mock_sqs @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_unspecified_service_sqs_client_v0(self): - Pin.get_from(self.sqs_client).clone(tracer=self.tracer).onto(self.sqs_client) + Pin.get_from(self.sqs_client)._clone(tracer=self.tracer).onto(self.sqs_client) self.sqs_client.send_message(QueueUrl=self.sqs_test_queue["QueueUrl"], MessageBody="world") self.sqs_client.send_message_batch( @@ -1177,7 +1215,7 @@ def test_schematized_unspecified_service_sqs_client_v0(self): @mock_sqs @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_unspecified_service_sqs_client_v1(self): - Pin.get_from(self.sqs_client).clone(tracer=self.tracer).onto(self.sqs_client) + Pin.get_from(self.sqs_client)._clone(tracer=self.tracer).onto(self.sqs_client) self.sqs_client.send_message(QueueUrl=self.sqs_test_queue["QueueUrl"], MessageBody="world") self.sqs_client.send_message_batch( @@ -1205,7 +1243,9 @@ def test_stepfunctions_send_start_execution_trace_injection(self): definition='{"StartAt": "HelloWorld","States": {"HelloWorld": {"Type": "Pass","End": true}}}', roleArn="arn:aws:iam::012345678901:role/DummyRole", ) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sf) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sf) start_execution_dict = { "stateMachineArn": "arn:aws:states:us-west-2:000000000000:stateMachine:lincoln", "input": '{"baz": 1}', @@ -1226,7 +1266,9 @@ def test_stepfunctions_send_start_execution_trace_injection_with_array_input(sel definition='{"StartAt": "HelloWorld","States": {"HelloWorld": {"Type": "Pass","End": true}}}', roleArn="arn:aws:iam::012345678901:role/DummyRole", ) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sf) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sf) sf.start_execution( stateMachineArn="arn:aws:states:us-west-2:000000000000:stateMachine:miller", input='["one", "two", "three"]' ) @@ -1245,7 +1287,9 @@ def test_stepfunctions_send_start_execution_trace_injection_with_true_input(self definition='{"StartAt": "HelloWorld","States": {"HelloWorld": {"Type": "Pass","End": true}}}', roleArn="arn:aws:iam::012345678901:role/DummyRole", ) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sf) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sf) sf.start_execution(stateMachineArn="arn:aws:states:us-west-2:000000000000:stateMachine:hobart", input="true") # I've tried to find a way to make Moto show me the input to the execution, but can't get that to work. spans = self.get_spans() @@ -1264,7 +1308,9 @@ def _test_kinesis_client(self): {"Data": json.dumps({"Hello": "World"}), "PartitionKey": partition_key}, {"Data": json.dumps({"foo": "bar"}), "PartitionKey": partition_key}, ] - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(client) client.put_records(StreamName=stream_name, Records=data) spans = self.get_spans() @@ -1335,7 +1381,9 @@ def test_kinesis_distributed_tracing_on(self): @mock_kinesis def test_unpatch(self): kinesis = self.session.create_client("kinesis", region_name="us-east-1") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(kinesis) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(kinesis) unpatch() @@ -1345,7 +1393,9 @@ def test_unpatch(self): @mock_sqs def test_double_patch(self): - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) patch() patch() @@ -1402,8 +1452,8 @@ def _test_data_streams_sns_to_sqs(self, use_raw_delivery): AttributeValue="true", ) - Pin.get_from(sns).clone(tracer=self.tracer).onto(sns) - Pin.get_from(self.sqs_client).clone(tracer=self.tracer).onto(self.sqs_client) + Pin.get_from(sns)._clone(tracer=self.tracer).onto(sns) + Pin.get_from(self.sqs_client)._clone(tracer=self.tracer).onto(self.sqs_client) sns.publish(TopicArn=topic_arn, Message="test") @@ -1478,7 +1528,9 @@ def test_data_streams_sqs(self): ): mt.return_value = 1642544540 - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) message_attributes = { "one": {"DataType": "String", "StringValue": "one"}, "two": {"DataType": "String", "StringValue": "two"}, @@ -1537,7 +1589,9 @@ def test_data_streams_sqs_batch(self): ): mt.return_value = 1642544540 - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) message_attributes = { "one": {"DataType": "String", "StringValue": "one"}, "two": {"DataType": "String", "StringValue": "two"}, @@ -1615,7 +1669,9 @@ def test_data_streams_sqs_no_header(self): ): mt.return_value = 1642544540 - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) message_attributes = { "one": {"DataType": "String", "StringValue": "one"}, "two": {"DataType": "String", "StringValue": "two"}, @@ -1655,7 +1711,9 @@ def test_data_streams_sqs_no_header(self): def test_lambda_client(self): # DEV: No lambda params tagged so we only check no ClientContext lamb = self.session.create_client("lambda", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(lamb) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(lamb) lamb.list_functions() @@ -1691,7 +1749,9 @@ def test_lambda_invoke_distributed_tracing_off(self): MemorySize=128, ) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(lamb) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(lamb) lamb.invoke( FunctionName="ironmaiden", @@ -1731,7 +1791,9 @@ def test_lambda_invoke_bad_context_client(self): MemorySize=128, ) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(lamb) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(lamb) lamb.invoke( FunctionName="black-sabbath", @@ -1757,7 +1819,7 @@ def test_schematized_lambda_client_default(self): # DEV: No lambda params tagged so we only check no ClientContext lamb = self.session.create_client("lambda", region_name="us-west-2", endpoint_url="http://localhost:4566") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.create_function( FunctionName="guns-and-roses", Runtime="python3.8", @@ -1791,7 +1853,7 @@ def test_schematized_lambda_client_default(self): def test_schematized_lambda_client_v0(self): # DEV: No lambda params tagged so we only check no ClientContext lamb = self.session.create_client("lambda", region_name="us-west-2", endpoint_url="http://localhost:4566") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.create_function( FunctionName="guns-and-roses", @@ -1822,7 +1884,7 @@ def test_schematized_lambda_client_v0(self): def test_schematized_lambda_client_v1(self): # DEV: No lambda params tagged so we only check no ClientContext lamb = self.session.create_client("lambda", region_name="us-west-2", endpoint_url="http://localhost:4566") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.create_function( FunctionName="guns-and-roses", @@ -1853,7 +1915,7 @@ def test_schematized_lambda_client_v1(self): def test_schematized_unspecified_service_lambda_client_default(self): # DEV: No lambda params tagged so we only check no ClientContext lamb = self.session.create_client("lambda", region_name="us-west-2", endpoint_url="http://localhost:4566") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.create_function( FunctionName="guns-and-roses", @@ -1884,7 +1946,7 @@ def test_schematized_unspecified_service_lambda_client_default(self): def test_schematized_unspecified_service_lambda_client_v0(self): # DEV: No lambda params tagged so we only check no ClientContext lamb = self.session.create_client("lambda", region_name="us-west-2", endpoint_url="http://localhost:4566") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.create_function( FunctionName="guns-and-roses", @@ -1915,7 +1977,7 @@ def test_schematized_unspecified_service_lambda_client_v0(self): def test_schematized_unspecified_service_lambda_client_v1(self): # DEV: No lambda params tagged so we only check no ClientContext lamb = self.session.create_client("lambda", region_name="us-west-2", endpoint_url="http://localhost:4566") - Pin.get_from(lamb).clone(tracer=self.tracer).onto(lamb) + Pin.get_from(lamb)._clone(tracer=self.tracer).onto(lamb) lamb.create_function( FunctionName="guns-and-roses", @@ -1968,7 +2030,9 @@ def test_eventbridge_single_entry_trace_injection(self): Targets=[{"Id": "a-test-bus-rule-target", "Arn": "arn:aws:sqs:us-east-1:000000000000:Test"}], ) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(bridge) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(bridge) bridge.put_events(Entries=entries) messages = self.sqs_client.receive_message(QueueUrl=queue_url, WaitTimeSeconds=2) @@ -2030,7 +2094,9 @@ def test_eventbridge_multiple_entries_trace_injection(self): Targets=[{"Id": "a-test-bus-rule-target", "Arn": "arn:aws:sqs:us-east-1:000000000000:Test"}], ) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(bridge) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(bridge) bridge.put_events(Entries=entries) messages = self.sqs_client.receive_message(QueueUrl=queue_url, WaitTimeSeconds=2) @@ -2070,7 +2136,9 @@ def test_eventbridge_multiple_entries_trace_injection(self): @mock_kms def test_kms_client(self): kms = self.session.create_client("kms", region_name="us-east-1") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(kms) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(kms) kms.list_keys(Limit=21) @@ -2095,7 +2163,7 @@ def test_kms_client(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc")) def test_schematized_kms_client_default(self): kms = self.session.create_client("kms", region_name="us-east-1") - Pin.get_from(kms).clone(tracer=self.tracer).onto(kms) + Pin.get_from(kms)._clone(tracer=self.tracer).onto(kms) kms.list_keys(Limit=21) @@ -2110,7 +2178,7 @@ def test_schematized_kms_client_default(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_kms_client_v0(self): kms = self.session.create_client("kms", region_name="us-east-1") - Pin.get_from(kms).clone(tracer=self.tracer).onto(kms) + Pin.get_from(kms)._clone(tracer=self.tracer).onto(kms) kms.list_keys(Limit=21) @@ -2125,7 +2193,7 @@ def test_schematized_kms_client_v0(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_kms_client_v1(self): kms = self.session.create_client("kms", region_name="us-east-1") - Pin.get_from(kms).clone(tracer=self.tracer).onto(kms) + Pin.get_from(kms)._clone(tracer=self.tracer).onto(kms) kms.list_keys(Limit=21) @@ -2140,7 +2208,7 @@ def test_schematized_kms_client_v1(self): @TracerTestCase.run_in_subprocess(env_overrides=dict()) def test_schematized_unspecified_service_kms_client_default(self): kms = self.session.create_client("kms", region_name="us-east-1") - Pin.get_from(kms).clone(tracer=self.tracer).onto(kms) + Pin.get_from(kms)._clone(tracer=self.tracer).onto(kms) kms.list_keys(Limit=21) @@ -2155,7 +2223,7 @@ def test_schematized_unspecified_service_kms_client_default(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) def test_schematized_unspecified_service_kms_client_v0(self): kms = self.session.create_client("kms", region_name="us-east-1") - Pin.get_from(kms).clone(tracer=self.tracer).onto(kms) + Pin.get_from(kms)._clone(tracer=self.tracer).onto(kms) kms.list_keys(Limit=21) @@ -2170,7 +2238,7 @@ def test_schematized_unspecified_service_kms_client_v0(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_schematized_unspecified_service_kms_client_v1(self): kms = self.session.create_client("kms", region_name="us-east-1") - Pin.get_from(kms).clone(tracer=self.tracer).onto(kms) + Pin.get_from(kms)._clone(tracer=self.tracer).onto(kms) kms.list_keys(Limit=21) @@ -2188,7 +2256,9 @@ def test_traced_client_ot(self): with ot_tracer.start_active_span("ec2_op"): ec2 = self.session.create_client("ec2", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(ec2) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(ec2) ec2.describe_instances() spans = self.get_spans() @@ -2235,7 +2305,9 @@ def test_stubber_no_response_metadata(self): @mock_firehose def test_firehose_no_records_arg(self): firehose = self.session.create_client("firehose", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(firehose) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(firehose) stream_name = "test-stream" account_id = "test-account" @@ -2309,9 +2381,11 @@ def _test_sns(self, use_default_tracer=False): sns.subscribe(TopicArn=topic_arn, Protocol="sqs", Endpoint=sqs_arn) if use_default_tracer: - Pin.get_from(sns).clone(tracer=self.tracer).onto(sns) + Pin.get_from(sns)._clone(tracer=self.tracer).onto(sns) else: - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sns) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sns) sns.publish(TopicArn=topic_arn, Message="test") spans = self.get_spans() @@ -2410,7 +2484,9 @@ def test_sns_send_message_trace_injection_with_no_message_attributes(self): sqs_arn = "arn:aws:sqs:{}:{}:{}".format("us-east-1", url_parts[-2], url_parts[-1]) sns.subscribe(TopicArn=topic_arn, Protocol="sqs", Endpoint=sqs_arn) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sns) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sns) sns.publish(TopicArn=topic_arn, Message="test") spans = self.get_spans() @@ -2469,7 +2545,9 @@ def test_sns_send_message_trace_injection_with_message_attributes(self): sqs_arn = "arn:aws:sqs:{}:{}:{}".format(region, url_parts[-2], url_parts[-1]) sns.subscribe(TopicArn=topic_arn, Protocol="sqs", Endpoint=sqs_arn) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sns) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sns) message_attributes = { "one": {"DataType": "String", "StringValue": "one"}, @@ -2544,7 +2622,9 @@ def test_sns_send_message_trace_injection_with_max_message_attributes(self): sqs_arn = "arn:aws:sqs:{}:{}:{}".format(region, url_parts[-2], url_parts[-1]) sns.subscribe(TopicArn=topic_arn, Protocol="sqs", Endpoint=sqs_arn) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sns) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sns) message_attributes = { "one": {"DataType": "String", "StringValue": "one"}, @@ -2610,8 +2690,10 @@ def test_sns_send_message_batch_trace_injection_with_no_message_attributes(self) sqs_arn = "arn:aws:sqs:{}:{}:{}".format(region, url_parts[-2], url_parts[-1]) sns.subscribe(TopicArn=topic_arn, Protocol="sqs", Endpoint=sqs_arn) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sns) - Pin.get_from(sns).clone(tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sns) + Pin.get_from(sns)._clone(tracer=self.tracer).onto(self.sqs_client) entries = [ { "Id": "1", @@ -2704,7 +2786,9 @@ def test_sns_send_message_batch_trace_injection_with_message_attributes(self): sqs_arn = "arn:aws:sqs:{}:{}:{}".format(region, url_parts[-2], url_parts[-1]) sns.subscribe(TopicArn=topic_arn, Protocol="sqs", Endpoint=sqs_arn) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sns) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sns) message_attributes = { "one": {"DataType": "String", "StringValue": "one"}, @@ -2775,7 +2859,9 @@ def test_sns_send_message_batch_trace_injection_with_max_message_attributes(self sqs_arn = "arn:aws:sqs:{}:{}:{}".format(region, url_parts[-2], url_parts[-1]) sns.subscribe(TopicArn=topic_arn, Protocol="sqs", Endpoint=sqs_arn) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sns) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sns) message_attributes = { "one": {"DataType": "String", "StringValue": "one"}, @@ -2902,7 +2988,9 @@ def test_kinesis_get_records_empty_poll_disabled(self): stream_name = "kinesis_get_records_empty_poll_disabled" shard_id, _ = self._kinesis_create_stream(client, stream_name) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(client) shard_iterator = self._kinesis_get_shard_iterator(client, stream_name, shard_id) @@ -2927,7 +3015,9 @@ def test_kinesis_get_records_empty_poll_enabled(self): stream_name = "kinesis_get_records_empty_poll_enabled" shard_id, _ = self._kinesis_create_stream(client, stream_name) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(client) shard_iterator = self._kinesis_get_shard_iterator(client, stream_name, shard_id) @@ -2950,7 +3040,9 @@ def test_sqs_get_records_empty_poll_disabled(self): # pop any spans created from previous operations spans = self.pop_spans() - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) response = None response = self.sqs_client.receive_message( @@ -2971,7 +3063,9 @@ def test_sqs_get_records_empty_poll_enabled(self): # pop any spans created from previous operations spans = self.pop_spans() - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) response = None response = self.sqs_client.receive_message( @@ -2994,7 +3088,9 @@ def _test_kinesis_put_record_trace_injection(self, test_name, data, client=None, partition_key = "1234" - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(client) if enable_stream_arn: client.put_record(StreamName=stream_name, Data=data, PartitionKey=partition_key, StreamARN=stream_arn) else: @@ -3029,7 +3125,9 @@ def _test_kinesis_put_records_trace_injection( stream_name = "kinesis_put_records_" + test_name shard_id, stream_arn = self._kinesis_create_stream(client, stream_name) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(client) if enable_stream_arn: client.put_records(StreamName=stream_name, Records=data, StreamARN=stream_arn) else: @@ -3328,7 +3426,9 @@ def test_kinesis_put_records_inject_data_streams_to_every_record_propagation_dis data = json.dumps({"json": "string"}) records = self._kinesis_generate_records(data, 5) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(client) client.put_records(StreamName=stream_name, Records=records, StreamARN=stream_arn) shard_iterator = self._kinesis_get_shard_iterator(client, stream_name, shard_id) @@ -3357,7 +3457,9 @@ def test_kinesis_put_records_inject_data_streams_to_every_record_propagation_ena data = json.dumps({"json": "string"}) records = self._kinesis_generate_records(data, 5) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(client) client.put_records(StreamName=stream_name, Records=records, StreamARN=stream_arn) shard_iterator = self._kinesis_get_shard_iterator(client, stream_name, shard_id) @@ -3386,7 +3488,9 @@ def test_kinesis_put_records_inject_data_streams_to_every_record_disable_all_inj data = json.dumps({"json": "string"}) records = self._kinesis_generate_records(data, 5) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(client) client.put_records(StreamName=stream_name, Records=records, StreamARN=stream_arn) shard_iterator = self._kinesis_get_shard_iterator(client, stream_name, shard_id) @@ -3454,7 +3558,7 @@ def test_kinesis_parenting(self): {"Data": json.dumps({"foo": "bar"}), "PartitionKey": partition_key}, ] - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) with self.tracer.trace("kinesis.manual_span"): client.create_stream(StreamName=stream_name, ShardCount=1) @@ -3474,7 +3578,7 @@ def test_kinesis_parenting(self): @mock_sqs def test_sqs_parenting(self): - Pin.get_from(self.sqs_client).clone(tracer=self.tracer).onto(self.sqs_client) + Pin.get_from(self.sqs_client)._clone(tracer=self.tracer).onto(self.sqs_client) with self.tracer.trace("sqs.manual_span"): self.sqs_client.send_message(QueueUrl=self.sqs_test_queue["QueueUrl"], MessageBody="world") @@ -3510,7 +3614,7 @@ def test_schematized_kinesis_client_default(self): {"Data": json.dumps({"foo": "bar"}), "PartitionKey": partition_key}, ] - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) client.create_stream(StreamName=stream_name, ShardCount=1) client.put_records(StreamName=stream_name, Records=data) @@ -3531,7 +3635,7 @@ def test_schematized_kinesis_client_v0(self): {"Data": json.dumps({"Hello": "World"}), "PartitionKey": partition_key}, {"Data": json.dumps({"foo": "bar"}), "PartitionKey": partition_key}, ] - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) client.create_stream(StreamName=stream_name, ShardCount=1) client.put_records(StreamName=stream_name, Records=data) @@ -3552,7 +3656,7 @@ def test_schematized_kinesis_client_v1(self): {"Data": json.dumps({"Hello": "World"}), "PartitionKey": partition_key}, {"Data": json.dumps({"foo": "bar"}), "PartitionKey": partition_key}, ] - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) client.create_stream(StreamName=stream_name, ShardCount=1) client.put_records(StreamName=stream_name, Records=data) @@ -3573,7 +3677,7 @@ def test_schematized_unspecified_service_kinesis_client_default(self): {"Data": json.dumps({"Hello": "World"}), "PartitionKey": partition_key}, {"Data": json.dumps({"foo": "bar"}), "PartitionKey": partition_key}, ] - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) client.create_stream(StreamName=stream_name, ShardCount=1) client.put_records(StreamName=stream_name, Records=data) @@ -3594,7 +3698,7 @@ def test_schematized_unspecified_service_kinesis_client_v0(self): {"Data": json.dumps({"Hello": "World"}), "PartitionKey": partition_key}, {"Data": json.dumps({"foo": "bar"}), "PartitionKey": partition_key}, ] - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) client.create_stream(StreamName=stream_name, ShardCount=1) client.put_records(StreamName=stream_name, Records=data) @@ -3615,7 +3719,7 @@ def test_schematized_unspecified_service_kinesis_client_v1(self): {"Data": json.dumps({"Hello": "World"}), "PartitionKey": partition_key}, {"Data": json.dumps({"foo": "bar"}), "PartitionKey": partition_key}, ] - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) client.create_stream(StreamName=stream_name, ShardCount=1) client.put_records(StreamName=stream_name, Records=data) @@ -3630,7 +3734,9 @@ def test_secretsmanager(self): with mock_secretsmanager(): client = self.session.create_client("secretsmanager", region_name="us-east-1") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(client) resp = client.create_secret(Name="/my/secrets", SecretString="supersecret-string") assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200 @@ -3655,7 +3761,9 @@ def test_secretsmanager_binary(self): with mock_secretsmanager(): client = self.session.create_client("secretsmanager", region_name="us-east-1") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(client) resp = client.create_secret(Name="/my/secrets", SecretBinary=b"supersecret-binary") assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200 @@ -3681,7 +3789,7 @@ def test_schematized_secretsmanager_default(self): with mock_secretsmanager(): client = self.session.create_client("secretsmanager", region_name="us-east-1") - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) resp = client.create_secret(Name="/my/secrets", SecretString="supersecret-string") assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200 @@ -3699,7 +3807,7 @@ def test_schematized_secretsmanager_v0(self): with mock_secretsmanager(): client = self.session.create_client("secretsmanager", region_name="us-east-1") - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) resp = client.create_secret(Name="/my/secrets", SecretString="supersecret-string") assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200 @@ -3717,7 +3825,7 @@ def test_schematized_secretsmanager_v1(self): with mock_secretsmanager(): client = self.session.create_client("secretsmanager", region_name="us-east-1") - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) resp = client.create_secret(Name="/my/secrets", SecretString="supersecret-string") assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200 @@ -3735,7 +3843,7 @@ def test_schematized_unspecified_service_secretsmanager_default(self): with mock_secretsmanager(): client = self.session.create_client("secretsmanager", region_name="us-east-1") - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) resp = client.create_secret(Name="/my/secrets", SecretString="supersecret-string") assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200 @@ -3753,7 +3861,7 @@ def test_schematized_unspecified_service_secretsmanager_v0(self): with mock_secretsmanager(): client = self.session.create_client("secretsmanager", region_name="us-east-1") - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) resp = client.create_secret(Name="/my/secrets", SecretString="supersecret-string") assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200 @@ -3771,7 +3879,7 @@ def test_schematized_unspecified_service_secretsmanager_v1(self): with mock_secretsmanager(): client = self.session.create_client("secretsmanager", region_name="us-east-1") - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) resp = client.create_secret(Name="/my/secrets", SecretString="supersecret-string") assert resp["ResponseMetadata"]["HTTPStatusCode"] == 200 @@ -3787,7 +3895,9 @@ def test_schematized_unspecified_service_secretsmanager_v1(self): @mock_sqs def test_aws_payload_tagging_sqs(self): with self.override_config("botocore", dict(payload_tagging_request="all", payload_tagging_response="all")): - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(self.sqs_client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(self.sqs_client) message_attributes = { "one": {"DataType": "String", "StringValue": "one"}, "two": {"DataType": "String", "StringValue": "two"}, @@ -3844,7 +3954,9 @@ def test_aws_payload_tagging_sns(self): sqs_arn = "arn:aws:sqs:{}:{}:{}".format(region, url_parts[-2], url_parts[-1]) sns.subscribe(TopicArn=topic_arn, Protocol="sqs", Endpoint=sqs_arn) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sns) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sns) message_attributes = { "one": {"DataType": "String", "StringValue": "one"}, @@ -3897,7 +4009,9 @@ def test_aws_payload_tagging_sns_valid_config(self): sqs_arn = "arn:aws:sqs:{}:{}:{}".format(region, url_parts[-2], url_parts[-1]) sns.subscribe(TopicArn=topic_arn, Protocol="sqs", Endpoint=sqs_arn) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(sns) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(sns) message_attributes = { "one": {"DataType": "String", "StringValue": "one"}, @@ -3933,7 +4047,9 @@ def test_aws_payload_tagging_sns_valid_config(self): def test_aws_payload_tagging_s3(self): with self.override_config("botocore", dict(payload_tagging_request="all", payload_tagging_response="all")): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(s3) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(s3) s3.list_buckets() s3.list_buckets() @@ -3965,7 +4081,9 @@ def test_aws_payload_tagging_s3_invalid_config(self): dict(payload_tagging_request="non_json_path", payload_tagging_response="$..Attr ibutes.PlatformCredential"), ): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(s3) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(s3) s3.list_buckets() s3.list_buckets() @@ -3983,7 +4101,9 @@ def test_aws_payload_tagging_s3_valid_config(self): "botocore", dict(payload_tagging_request="$..bucket", payload_tagging_response="$..HTTPHeaders") ): s3 = self.session.create_client("s3", region_name="us-west-2") - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(s3) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(s3) s3.list_buckets() s3.list_buckets() @@ -4028,7 +4148,9 @@ def test_aws_payload_tagging_eventbridge(self): Targets=[{"Id": "a-test-bus-rule-target", "Arn": "arn:aws:sqs:us-east-1:000000000000:Test"}], ) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(bridge) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(bridge) bridge.put_events(Entries=entries) self.sqs_client.receive_message(QueueUrl=queue_url, WaitTimeSeconds=2) @@ -4048,7 +4170,7 @@ def test_aws_payload_tagging_kinesis(self): {"Data": json.dumps({"foo": "bar"}), "PartitionKey": partition_key}, ] - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) with self.tracer.trace("kinesis.manual_span"): client.create_stream(StreamName=stream_name, ShardCount=1) diff --git a/tests/contrib/botocore/test_bedrock.py b/tests/contrib/botocore/test_bedrock.py index 1cf5618bd0e..578c34ce981 100644 --- a/tests/contrib/botocore/test_bedrock.py +++ b/tests/contrib/botocore/test_bedrock.py @@ -42,7 +42,7 @@ def aws_credentials(): def mock_tracer(ddtrace_global_config, bedrock_client): pin = Pin.get_from(bedrock_client) mock_tracer = DummyTracer(writer=DummyWriter(trace_flush_enabled=False)) - pin.override(bedrock_client, tracer=mock_tracer) + pin._override(bedrock_client, tracer=mock_tracer) yield mock_tracer @@ -102,7 +102,7 @@ def setUp(self): self.bedrock_client = self.session.client("bedrock-runtime") self.mock_tracer = DummyTracer(writer=DummyWriter(trace_flush_enabled=False)) pin = Pin.get_from(self.bedrock_client) - pin.override(self.bedrock_client, tracer=self.mock_tracer) + pin._override(self.bedrock_client, tracer=self.mock_tracer) super(TestBedrockConfig, self).setUp() diff --git a/tests/contrib/botocore/test_bedrock_llmobs.py b/tests/contrib/botocore/test_bedrock_llmobs.py index 790b86f0704..711f1287f99 100644 --- a/tests/contrib/botocore/test_bedrock_llmobs.py +++ b/tests/contrib/botocore/test_bedrock_llmobs.py @@ -107,7 +107,7 @@ def expected_llmobs_span_event(span, n_output, message=False): def _test_llmobs_invoke(cls, provider, bedrock_client, mock_llmobs_span_writer, cassette_name=None, n_output=1): mock_tracer = DummyTracer(writer=DummyWriter(trace_flush_enabled=False)) pin = Pin.get_from(bedrock_client) - pin.override(bedrock_client, tracer=mock_tracer) + pin._override(bedrock_client, tracer=mock_tracer) # Need to disable and re-enable LLMObs service to use the mock tracer LLMObs.disable() LLMObs.enable(_tracer=mock_tracer, integrations_enabled=False) # only want botocore patched @@ -148,7 +148,7 @@ def _test_llmobs_invoke_stream( ): mock_tracer = DummyTracer(writer=DummyWriter(trace_flush_enabled=False)) pin = Pin.get_from(bedrock_client) - pin.override(bedrock_client, tracer=mock_tracer) + pin._override(bedrock_client, tracer=mock_tracer) # Need to disable and re-enable LLMObs service to use the mock tracer LLMObs.disable() LLMObs.enable(_tracer=mock_tracer, integrations_enabled=False) # only want botocore patched @@ -249,7 +249,7 @@ def test_llmobs_error(self, ddtrace_global_config, bedrock_client, mock_llmobs_s mock_tracer = DummyTracer(writer=DummyWriter(trace_flush_enabled=False)) pin = Pin.get_from(bedrock_client) - pin.override(bedrock_client, tracer=mock_tracer) + pin._override(bedrock_client, tracer=mock_tracer) # Need to disable and re-enable LLMObs service to use the mock tracer LLMObs.disable() LLMObs.enable(_tracer=mock_tracer, integrations_enabled=False) # only want botocore patched diff --git a/tests/contrib/cassandra/test.py b/tests/contrib/cassandra/test.py index 21b98d6396f..e63572076ee 100644 --- a/tests/contrib/cassandra/test.py +++ b/tests/contrib/cassandra/test.py @@ -360,7 +360,7 @@ def setUp(self): def _traced_session(self): tracer = DummyTracer() - Pin.get_from(self.cluster).clone(tracer=tracer).onto(self.cluster) + Pin.get_from(self.cluster)._clone(tracer=tracer).onto(self.cluster) return self.cluster.connect(self.TEST_KEYSPACE), tracer @@ -379,7 +379,9 @@ def setUp(self): def _traced_session(self): tracer = DummyTracer() # pin the global Cluster to test if they will conflict - Pin(service=self.TEST_SERVICE, tracer=tracer).onto(Cluster) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = tracer + pin.onto(Cluster) self.cluster = Cluster(port=CASSANDRA_CONFIG["port"]) return self.cluster.connect(self.TEST_KEYSPACE), tracer @@ -403,7 +405,9 @@ def _traced_session(self): Pin(service="not-%s" % self.TEST_SERVICE).onto(Cluster) self.cluster = Cluster(port=CASSANDRA_CONFIG["port"]) - Pin(service=self.TEST_SERVICE, tracer=tracer).onto(self.cluster) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = tracer + pin.onto(self.cluster) return self.cluster.connect(self.TEST_KEYSPACE), tracer def test_patch_unpatch(self): @@ -412,7 +416,7 @@ def test_patch_unpatch(self): patch() tracer = DummyTracer() - Pin.get_from(Cluster).clone(tracer=tracer).onto(Cluster) + Pin.get_from(Cluster)._clone(tracer=tracer).onto(Cluster) session = Cluster(port=CASSANDRA_CONFIG["port"]).connect(self.TEST_KEYSPACE) session.execute(self.TEST_QUERY) @@ -432,7 +436,7 @@ def test_patch_unpatch(self): # Test patch again patch() - Pin.get_from(Cluster).clone(tracer=tracer).onto(Cluster) + Pin.get_from(Cluster)._clone(tracer=tracer).onto(Cluster) session = Cluster(port=CASSANDRA_CONFIG["port"]).connect(self.TEST_KEYSPACE) session.execute(self.TEST_QUERY) @@ -454,7 +458,7 @@ def setUp(self): patch() self.tracer = DummyTracer() self.cluster = Cluster(port=CASSANDRA_CONFIG["port"]) - Pin.get_from(self.cluster).clone(tracer=self.tracer).onto(self.cluster) + Pin.get_from(self.cluster)._clone(tracer=self.tracer).onto(self.cluster) self.session = self.cluster.connect(self.TEST_KEYSPACE) def tearDown(self): diff --git a/tests/contrib/celery/base.py b/tests/contrib/celery/base.py index c2b7de22a54..040566ee57d 100644 --- a/tests/contrib/celery/base.py +++ b/tests/contrib/celery/base.py @@ -88,10 +88,11 @@ def celery_test_setup(self): def setUp(self): super(CeleryBaseTestCase, self).setUp() - self.pin = Pin(service="celery-unittest", tracer=self.tracer) + self.pin = Pin(service="celery-unittest") + self.pin._tracer = self.tracer # override pins to use our Dummy Tracer - Pin.override(self.app, tracer=self.tracer) - Pin.override(celery.beat.Scheduler, tracer=self.tracer) + Pin._override(self.app, tracer=self.tracer) + Pin._override(celery.beat.Scheduler, tracer=self.tracer) def tearDown(self): self.app = None diff --git a/tests/contrib/celery/test_tagging.py b/tests/contrib/celery/test_tagging.py index 6b88acf9434..d68ab3adbcb 100644 --- a/tests/contrib/celery/test_tagging.py +++ b/tests/contrib/celery/test_tagging.py @@ -61,14 +61,14 @@ def dummy_tracer(): @pytest.fixture(autouse=False) def traced_redis_celery_app(instrument_celery, dummy_tracer): Pin.get_from(redis_celery_app) - Pin.override(redis_celery_app, tracer=dummy_tracer) + Pin._override(redis_celery_app, tracer=dummy_tracer) yield redis_celery_app @pytest.fixture(autouse=False) def traced_amqp_celery_app(instrument_celery, dummy_tracer): Pin.get_from(amqp_celery_app) - Pin.override(amqp_celery_app, tracer=dummy_tracer) + Pin._override(amqp_celery_app, tracer=dummy_tracer) yield amqp_celery_app diff --git a/tests/contrib/consul/test.py b/tests/contrib/consul/test.py index 285287f9e95..71e2f0c6da0 100644 --- a/tests/contrib/consul/test.py +++ b/tests/contrib/consul/test.py @@ -22,8 +22,8 @@ def setUp(self): host=CONSUL_CONFIG["host"], port=CONSUL_CONFIG["port"], ) - Pin.override(consul.Consul, service=self.TEST_SERVICE, tracer=self.tracer) - Pin.override(consul.Consul.KV, service=self.TEST_SERVICE, tracer=self.tracer) + Pin._override(consul.Consul, service=self.TEST_SERVICE, tracer=self.tracer) + Pin._override(consul.Consul.KV, service=self.TEST_SERVICE, tracer=self.tracer) self.c = c def tearDown(self): @@ -168,8 +168,8 @@ def setUp(self): host=CONSUL_CONFIG["host"], port=CONSUL_CONFIG["port"], ) - Pin.override(consul.Consul, tracer=self.tracer) - Pin.override(consul.Consul.KV, tracer=self.tracer) + Pin._override(consul.Consul, tracer=self.tracer) + Pin._override(consul.Consul.KV, tracer=self.tracer) self.c = c def tearDown(self): diff --git a/tests/contrib/dbapi/test_dbapi.py b/tests/contrib/dbapi/test_dbapi.py index c60e49c56af..00e1dc34c56 100644 --- a/tests/contrib/dbapi/test_dbapi.py +++ b/tests/contrib/dbapi/test_dbapi.py @@ -24,7 +24,8 @@ def test_execute_wrapped_is_called_and_returned(self): cursor.rowcount = 0 cursor.execute.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = TracedCursor(cursor, pin, {}) # DEV: We always pass through the result assert "__result__" == traced_cursor.execute("__query__", "arg_1", kwarg1="kwarg1") @@ -37,7 +38,9 @@ def test_dbm_propagation_not_supported(self): # By default _dbm_propagator attribute should not be set or have a value of None. # DBM context propagation should be opt in. assert getattr(cfg, "_dbm_propagator", None) is None - traced_cursor = TracedCursor(cursor, Pin("dbapi_service", tracer=self.tracer), cfg) + pin = Pin("dbapi_service") + pin._tracer = self.tracer + traced_cursor = TracedCursor(cursor, pin, cfg) # Ensure dbm comment is not appended to sql statement traced_cursor.execute("SELECT * FROM db;") cursor.execute.assert_called_once_with("SELECT * FROM db;") @@ -53,7 +56,9 @@ def test_dbm_propagation_not_supported(self): def test_cursor_execute_with_dbm_injection(self): cursor = self.cursor cfg = IntegrationConfig(Config(), "dbapi", service="orders-db", _dbm_propagator=_DBM_Propagator(0, "query")) - traced_cursor = TracedCursor(cursor, Pin(service="orders-db", tracer=self.tracer), cfg) + pin = Pin(service="orders-db") + pin._tracer = self.tracer + traced_cursor = TracedCursor(cursor, pin, cfg) # The following operations should generate DBM comments traced_cursor.execute("SELECT * FROM db;") @@ -73,7 +78,8 @@ def test_executemany_wrapped_is_called_and_returned(self): cursor.rowcount = 0 cursor.executemany.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = TracedCursor(cursor, pin, {}) # DEV: We always pass through the result assert "__result__" == traced_cursor.executemany("__query__", "arg_1", kwarg1="kwarg1") @@ -83,7 +89,8 @@ def test_fetchone_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchone.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = TracedCursor(cursor, pin, {}) assert "__result__" == traced_cursor.fetchone("arg_1", kwarg1="kwarg1") cursor.fetchone.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -92,7 +99,8 @@ def test_fetchall_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchall.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = TracedCursor(cursor, pin, {}) assert "__result__" == traced_cursor.fetchall("arg_1", kwarg1="kwarg1") cursor.fetchall.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -101,7 +109,8 @@ def test_fetchmany_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchmany.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = TracedCursor(cursor, pin, {}) assert "__result__" == traced_cursor.fetchmany("arg_1", kwarg1="kwarg1") cursor.fetchmany.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -110,7 +119,8 @@ def test_correct_span_names(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 0 - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_cursor = TracedCursor(cursor, pin, {}) traced_cursor.execute("arg_1", kwarg1="kwarg1") @@ -145,7 +155,8 @@ def test_when_pin_disabled_then_no_tracing(self): cursor.executemany.return_value = "__result__" tracer.enabled = False - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_cursor = TracedCursor(cursor, pin, {}) assert "__result__" == traced_cursor.execute("arg_1", kwarg1="kwarg1") @@ -174,7 +185,8 @@ def test_span_info(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin("my_service", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("my_service", tags={"pin1": "value_pin1"}) + pin._tracer = tracer traced_cursor = TracedCursor(cursor, pin, {}) def method(): @@ -199,7 +211,8 @@ def test_cfg_service(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin(None, tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin(None, tags={"pin1": "value_pin1"}) + pin._tracer = tracer cfg = IntegrationConfig(Config(), "db-test", service="cfg-service") traced_cursor = TracedCursor(cursor, pin, cfg) @@ -214,7 +227,8 @@ def test_default_service(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin(None, tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin(None, tags={"pin1": "value_pin1"}) + pin._tracer = tracer traced_cursor = TracedCursor(cursor, pin, {}) @@ -229,7 +243,8 @@ def test_default_service_cfg(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin(None, tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin(tags={"pin1": "value_pin1"}) + pin._tracer = tracer cfg = IntegrationConfig(Config(), "db-test", _default_service="default-svc") traced_cursor = TracedCursor(cursor, pin, cfg) @@ -244,7 +259,8 @@ def test_service_cfg_and_pin(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin("pin-svc", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("pin-svc", tags={"pin1": "value_pin1"}) + pin._tracer = tracer cfg = IntegrationConfig(Config(), "db-test", _default_service="default-svc") traced_cursor = TracedCursor(cursor, pin, cfg) @@ -262,7 +278,8 @@ def test_django_traced_cursor_backward_compatibility(self): # implementation with the generic dbapi traced cursor, we had to make sure to add the tag 'sql.rows' that was # set by the legacy replaced implementation. cursor.rowcount = 123 - pin = Pin("my_service", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("my_service", tags={"pin1": "value_pin1"}) + pin._tracer = tracer cfg = IntegrationConfig(Config(), "db-test") traced_cursor = TracedCursor(cursor, pin, cfg) @@ -286,7 +303,8 @@ def test_execute_wrapped_is_called_and_returned(self): cursor.rowcount = 0 cursor.execute.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = FetchTracedCursor(cursor, pin, {}) assert "__result__" == traced_cursor.execute("__query__", "arg_1", kwarg1="kwarg1") cursor.execute.assert_called_once_with("__query__", "arg_1", kwarg1="kwarg1") @@ -296,7 +314,8 @@ def test_executemany_wrapped_is_called_and_returned(self): cursor.rowcount = 0 cursor.executemany.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = FetchTracedCursor(cursor, pin, {}) assert "__result__" == traced_cursor.executemany("__query__", "arg_1", kwarg1="kwarg1") cursor.executemany.assert_called_once_with("__query__", "arg_1", kwarg1="kwarg1") @@ -305,7 +324,8 @@ def test_fetchone_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchone.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = FetchTracedCursor(cursor, pin, {}) assert "__result__" == traced_cursor.fetchone("arg_1", kwarg1="kwarg1") cursor.fetchone.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -314,7 +334,8 @@ def test_fetchall_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchall.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = FetchTracedCursor(cursor, pin, {}) assert "__result__" == traced_cursor.fetchall("arg_1", kwarg1="kwarg1") cursor.fetchall.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -323,7 +344,8 @@ def test_fetchmany_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchmany.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = FetchTracedCursor(cursor, pin, {}) assert "__result__" == traced_cursor.fetchmany("arg_1", kwarg1="kwarg1") cursor.fetchmany.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -332,7 +354,8 @@ def test_correct_span_names(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 0 - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_cursor = FetchTracedCursor(cursor, pin, {}) traced_cursor.execute("arg_1", kwarg1="kwarg1") @@ -367,7 +390,8 @@ def test_when_pin_disabled_then_no_tracing(self): cursor.executemany.return_value = "__result__" tracer.enabled = False - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_cursor = FetchTracedCursor(cursor, pin, {}) assert "__result__" == traced_cursor.execute("arg_1", kwarg1="kwarg1") @@ -396,7 +420,8 @@ def test_span_info(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin("my_service", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("my_service", tags={"pin1": "value_pin1"}) + pin._tracer = tracer traced_cursor = FetchTracedCursor(cursor, pin, {}) def method(): @@ -422,7 +447,8 @@ def test_django_traced_cursor_backward_compatibility(self): # implementation with the generic dbapi traced cursor, we had to make sure to add the tag 'sql.rows' that was # set by the legacy replaced implementation. cursor.rowcount = 123 - pin = Pin("my_service", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("my_service", tags={"pin1": "value_pin1"}) + pin._tracer = tracer traced_cursor = FetchTracedCursor(cursor, pin, {}) def method(): @@ -440,7 +466,8 @@ class Unknown(object): cursor = self.cursor tracer = self.tracer cursor.rowcount = Unknown() - pin = Pin("my_service", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("my_service", tags={"pin1": "value_pin1"}) + pin._tracer = tracer traced_cursor = FetchTracedCursor(cursor, pin, {}) def method(): @@ -453,7 +480,8 @@ def method(): def test_callproc_can_handle_arbitrary_args(self): cursor = self.cursor tracer = self.tracer - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer cursor.callproc.return_value = "gme --> moon" traced_cursor = TracedCursor(cursor, pin, {}) @@ -484,7 +512,9 @@ def test_cursor_execute_fetch_with_dbm_injection(self): cursor = self.cursor dbm_propagator = _DBM_Propagator(0, "query") cfg = IntegrationConfig(Config(), "dbapi", service="dbapi_service", _dbm_propagator=dbm_propagator) - traced_cursor = FetchTracedCursor(cursor, Pin("dbapi_service", tracer=self.tracer), cfg) + pin = Pin("dbapi_service") + pin._tracer = self.tracer + traced_cursor = FetchTracedCursor(cursor, pin, cfg) # The following operations should not generate DBM comments traced_cursor.fetchone() @@ -517,7 +547,8 @@ def setUp(self): self.connection = mock.Mock() def test_cursor_class(self): - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer # Default traced_connection = TracedConnection(self.connection, pin=pin) @@ -537,7 +568,8 @@ def test_commit_is_traced(self): connection = self.connection tracer = self.tracer connection.commit.return_value = None - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_connection = TracedConnection(connection, pin) traced_connection.commit() assert tracer.pop()[0].name == "mock.connection.commit" @@ -547,7 +579,8 @@ def test_rollback_is_traced(self): connection = self.connection tracer = self.tracer connection.rollback.return_value = None - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_connection = TracedConnection(connection, pin) traced_connection.rollback() assert tracer.pop()[0].name == "mock.connection.rollback" @@ -588,7 +621,8 @@ def cursor(self): def commit(self): pass - pin = Pin("pin", tracer=self.tracer) + pin = Pin("pin") + pin._tracer = self.tracer conn = TracedConnection(ConnectionConnection(), pin) with conn as conn2: conn2.commit() diff --git a/tests/contrib/dbapi/test_dbapi_appsec.py b/tests/contrib/dbapi/test_dbapi_appsec.py index 062a4ca667e..f1afbdb24af 100644 --- a/tests/contrib/dbapi/test_dbapi_appsec.py +++ b/tests/contrib/dbapi/test_dbapi_appsec.py @@ -50,7 +50,9 @@ def test_tainted_query(self): cursor = self.cursor cfg = IntegrationConfig(Config(), "sqlite", service="dbapi_service") - traced_cursor = TracedCursor(cursor, Pin("dbapi_service", tracer=self.tracer), cfg) + pin = Pin("dbapi_service") + pin._tracer = self.tracer + traced_cursor = TracedCursor(cursor, pin, cfg) traced_cursor.execute(query) cursor.execute.assert_called_once_with(query) @@ -73,7 +75,9 @@ def test_tainted_query_args(self): cursor = self.cursor cfg = IntegrationConfig(Config(), "sqlite", service="dbapi_service") - traced_cursor = TracedCursor(cursor, Pin("dbapi_service", tracer=self.tracer), cfg) + pin = Pin("dbapi_service") + pin._tracer = self.tracer + traced_cursor = TracedCursor(cursor, pin, cfg) traced_cursor.execute(query, (query_arg,)) cursor.execute.assert_called_once_with(query, (query_arg,)) @@ -88,7 +92,9 @@ def test_untainted_query(self): cursor = self.cursor cfg = IntegrationConfig(Config(), "sqlite", service="dbapi_service") - traced_cursor = TracedCursor(cursor, Pin("dbapi_service", tracer=self.tracer), cfg) + pin = Pin("dbapi_service") + pin._tracer = self.tracer + traced_cursor = TracedCursor(cursor, pin, cfg) traced_cursor.execute(query) cursor.execute.assert_called_once_with(query) @@ -104,7 +110,9 @@ def test_untainted_query_and_args(self): cursor = self.cursor cfg = IntegrationConfig(Config(), "sqlite", service="dbapi_service") - traced_cursor = TracedCursor(cursor, Pin("dbapi_service", tracer=self.tracer), cfg) + pin = Pin("dbapi_service") + pin._tracer = self.tracer + traced_cursor = TracedCursor(cursor, pin, cfg) traced_cursor.execute(query, (query_arg,)) cursor.execute.assert_called_once_with(query, (query_arg,)) @@ -124,7 +132,9 @@ def test_tainted_query_iast_disabled(self): cursor = self.cursor cfg = IntegrationConfig(Config(), "sqlite", service="dbapi_service") - traced_cursor = TracedCursor(cursor, Pin("dbapi_service", tracer=self.tracer), cfg) + pin = Pin("dbapi_service") + pin._tracer = self.tracer + traced_cursor = TracedCursor(cursor, pin, cfg) traced_cursor.execute(query) cursor.execute.assert_called_once_with(query) diff --git a/tests/contrib/dbapi_async/test_dbapi_async.py b/tests/contrib/dbapi_async/test_dbapi_async.py index ceb2b0cf6a1..dd16b7a2e33 100644 --- a/tests/contrib/dbapi_async/test_dbapi_async.py +++ b/tests/contrib/dbapi_async/test_dbapi_async.py @@ -26,7 +26,8 @@ async def test_execute_wrapped_is_called_and_returned(self): cursor.rowcount = 0 cursor.execute.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = TracedAsyncCursor(cursor, pin, {}) # DEV: We always pass through the result assert "__result__" == await traced_cursor.execute("__query__", "arg_1", kwarg1="kwarg1") @@ -40,7 +41,9 @@ async def test_dbm_propagation_not_supported(self): # By default _dbm_propagator attribute should not be set or have a value of None. # DBM context propagation should be opt in. assert getattr(cfg, "_dbm_propagator", None) is None - traced_cursor = TracedAsyncCursor(cursor, Pin("dbapi_service", tracer=self.tracer), cfg) + pin = Pin(service="dbapi_service") + pin._tracer = self.tracer + traced_cursor = TracedAsyncCursor(cursor, pin, cfg) # Ensure dbm comment is not appended to sql statement await traced_cursor.execute("SELECT * FROM db;") cursor.execute.assert_called_once_with("SELECT * FROM db;") @@ -57,7 +60,9 @@ async def test_dbm_propagation_not_supported(self): async def test_cursor_execute_with_dbm_injection(self): cursor = self.cursor cfg = IntegrationConfig(Config(), "dbapi", service="orders-db", _dbm_propagator=_DBM_Propagator(0, "query")) - traced_cursor = TracedAsyncCursor(cursor, Pin(service="orders-db", tracer=self.tracer), cfg) + pin = Pin(service="orders-db") + pin._tracer = self.tracer + traced_cursor = TracedAsyncCursor(cursor, pin, cfg) # The following operations should generate DBM comments await traced_cursor.execute("SELECT * FROM db;") @@ -78,7 +83,8 @@ async def test_executemany_wrapped_is_called_and_returned(self): cursor.rowcount = 0 cursor.executemany.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = TracedAsyncCursor(cursor, pin, {}) # DEV: We always pass through the result assert "__result__" == await traced_cursor.executemany("__query__", "arg_1", kwarg1="kwarg1") @@ -89,7 +95,8 @@ async def test_fetchone_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchone.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = TracedAsyncCursor(cursor, pin, {}) assert "__result__" == await traced_cursor.fetchone("arg_1", kwarg1="kwarg1") cursor.fetchone.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -101,7 +108,9 @@ async def test_cursor_async_connection(self): def method(): pass - async with TracedAsyncCursor(self.cursor, Pin("dbapi_service", tracer=self.tracer), {}) as cursor: + pin = Pin("dbapi_service") + pin._tracer = self.tracer + async with TracedAsyncCursor(self.cursor, pin, {}) as cursor: await cursor.execute("""select 'one' as x""") await cursor.execute("""select 'blah'""") @@ -120,7 +129,8 @@ async def test_fetchall_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchall.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = TracedAsyncCursor(cursor, pin, {}) assert "__result__" == await traced_cursor.fetchall("arg_1", kwarg1="kwarg1") cursor.fetchall.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -130,7 +140,8 @@ async def test_fetchmany_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchmany.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = TracedAsyncCursor(cursor, pin, {}) assert "__result__" == await traced_cursor.fetchmany("arg_1", kwarg1="kwarg1") cursor.fetchmany.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -140,7 +151,8 @@ async def test_correct_span_names(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 0 - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_cursor = TracedAsyncCursor(cursor, pin, {}) await traced_cursor.execute("arg_1", kwarg1="kwarg1") @@ -176,7 +188,8 @@ async def test_when_pin_disabled_then_no_tracing(self): cursor.executemany.return_value = "__result__" tracer.enabled = False - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_cursor = TracedAsyncCursor(cursor, pin, {}) assert "__result__" == await traced_cursor.execute("arg_1", kwarg1="kwarg1") @@ -206,7 +219,8 @@ async def test_span_info(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin("my_service", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("my_service", tags={"pin1": "value_pin1"}) + pin._tracer = tracer traced_cursor = TracedAsyncCursor(cursor, pin, {}) async def method(): @@ -232,7 +246,8 @@ async def test_cfg_service(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin(None, tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin(None, tags={"pin1": "value_pin1"}) + pin._tracer = tracer cfg = IntegrationConfig(Config(), "db-test", service="cfg-service") traced_cursor = TracedAsyncCursor(cursor, pin, cfg) @@ -248,7 +263,8 @@ async def test_default_service(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin(None, tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin(None, tags={"pin1": "value_pin1"}) + pin._tracer = tracer traced_cursor = TracedAsyncCursor(cursor, pin, {}) @@ -264,7 +280,8 @@ async def test_default_service_cfg(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin(None, tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin(None, tags={"pin1": "value_pin1"}) + pin._tracer = tracer cfg = IntegrationConfig(Config(), "db-test", _default_service="default-svc") traced_cursor = TracedAsyncCursor(cursor, pin, cfg) @@ -280,7 +297,8 @@ async def test_service_cfg_and_pin(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin("pin-svc", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("pin-svc", tags={"pin1": "value_pin1"}) + pin._tracer = tracer cfg = IntegrationConfig(Config(), "db-test", _default_service="default-svc") traced_cursor = TracedAsyncCursor(cursor, pin, cfg) @@ -299,7 +317,8 @@ async def test_django_traced_cursor_backward_compatibility(self): # implementation with the generic dbapi traced cursor, we had to make sure to add the tag 'sql.rows' that was # set by the legacy replaced implementation. cursor.rowcount = 123 - pin = Pin("my_service", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("my_service", tags={"pin1": "value_pin1"}) + pin._tracer = tracer cfg = IntegrationConfig(Config(), "db-test") traced_cursor = TracedAsyncCursor(cursor, pin, cfg) @@ -324,7 +343,8 @@ async def test_execute_wrapped_is_called_and_returned(self): cursor.rowcount = 0 cursor.execute.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = FetchTracedAsyncCursor(cursor, pin, {}) assert "__result__" == await traced_cursor.execute("__query__", "arg_1", kwarg1="kwarg1") cursor.execute.assert_called_once_with("__query__", "arg_1", kwarg1="kwarg1") @@ -335,7 +355,8 @@ async def test_executemany_wrapped_is_called_and_returned(self): cursor.rowcount = 0 cursor.executemany.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = FetchTracedAsyncCursor(cursor, pin, {}) assert "__result__" == await traced_cursor.executemany("__query__", "arg_1", kwarg1="kwarg1") cursor.executemany.assert_called_once_with("__query__", "arg_1", kwarg1="kwarg1") @@ -345,7 +366,8 @@ async def test_fetchone_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchone.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = FetchTracedAsyncCursor(cursor, pin, {}) assert "__result__" == await traced_cursor.fetchone("arg_1", kwarg1="kwarg1") cursor.fetchone.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -355,7 +377,8 @@ async def test_fetchall_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchall.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = FetchTracedAsyncCursor(cursor, pin, {}) assert "__result__" == await traced_cursor.fetchall("arg_1", kwarg1="kwarg1") cursor.fetchall.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -365,7 +388,8 @@ async def test_fetchmany_wrapped_is_called_and_returned(self): cursor = self.cursor cursor.rowcount = 0 cursor.fetchmany.return_value = "__result__" - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer traced_cursor = FetchTracedAsyncCursor(cursor, pin, {}) assert "__result__" == await traced_cursor.fetchmany("arg_1", kwarg1="kwarg1") cursor.fetchmany.assert_called_once_with("arg_1", kwarg1="kwarg1") @@ -375,7 +399,8 @@ async def test_correct_span_names(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 0 - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_cursor = FetchTracedAsyncCursor(cursor, pin, {}) await traced_cursor.execute("arg_1", kwarg1="kwarg1") @@ -411,7 +436,8 @@ async def test_when_pin_disabled_then_no_tracing(self): cursor.executemany.return_value = "__result__" tracer.enabled = False - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_cursor = FetchTracedAsyncCursor(cursor, pin, {}) assert "__result__" == await traced_cursor.execute("arg_1", kwarg1="kwarg1") @@ -441,7 +467,8 @@ async def test_span_info(self): cursor = self.cursor tracer = self.tracer cursor.rowcount = 123 - pin = Pin("my_service", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("my_service", tags={"pin1": "value_pin1"}) + pin._tracer = tracer traced_cursor = FetchTracedAsyncCursor(cursor, pin, {}) async def method(): @@ -468,7 +495,8 @@ async def test_django_traced_cursor_backward_compatibility(self): # implementation with the generic dbapi traced cursor, we had to make sure to add the tag 'sql.rows' that was # set by the legacy replaced implementation. cursor.rowcount = 123 - pin = Pin("my_service", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("my_service", tags={"pin1": "value_pin1"}) + pin._tracer = tracer traced_cursor = FetchTracedAsyncCursor(cursor, pin, {}) async def method(): @@ -487,7 +515,8 @@ class Unknown(object): cursor = self.cursor tracer = self.tracer cursor.rowcount = Unknown() - pin = Pin("my_service", tracer=tracer, tags={"pin1": "value_pin1"}) + pin = Pin("my_service", tags={"pin1": "value_pin1"}) + pin._tracer = tracer traced_cursor = FetchTracedAsyncCursor(cursor, pin, {}) async def method(): @@ -501,7 +530,8 @@ async def method(): async def test_callproc_can_handle_arbitrary_args(self): cursor = self.cursor tracer = self.tracer - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer cursor.callproc.return_value = "gme --> moon" traced_cursor = TracedAsyncCursor(cursor, pin, {}) @@ -533,7 +563,9 @@ async def test_cursor_execute_fetch_with_dbm_injection(self): cursor = self.cursor dbm_propagator = _DBM_Propagator(0, "query") cfg = IntegrationConfig(Config(), "dbapi", service="dbapi_service", _dbm_propagator=dbm_propagator) - traced_cursor = FetchTracedAsyncCursor(cursor, Pin("dbapi_service", tracer=self.tracer), cfg) + pin = Pin("dbapi_service") + pin._tracer = self.tracer + traced_cursor = FetchTracedAsyncCursor(cursor, pin, cfg) # The following operations should not generate DBM comments await traced_cursor.fetchone() @@ -567,7 +599,8 @@ def setUp(self): @mark_asyncio async def test_cursor_class(self): - pin = Pin("pin_name", tracer=self.tracer) + pin = Pin("pin_name") + pin._tracer = self.tracer # Default traced_connection = TracedAsyncConnection(self.connection, pin=pin) @@ -588,7 +621,8 @@ async def test_commit_is_traced(self): connection = self.connection tracer = self.tracer connection.commit.return_value = None - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_connection = TracedAsyncConnection(connection, pin) await traced_connection.commit() assert tracer.pop()[0].name == "mock.connection.commit" @@ -599,7 +633,8 @@ async def test_rollback_is_traced(self): connection = self.connection tracer = self.tracer connection.rollback.return_value = None - pin = Pin("pin_name", tracer=tracer) + pin = Pin("pin_name") + pin._tracer = tracer traced_connection = TracedAsyncConnection(connection, pin) await traced_connection.rollback() assert tracer.pop()[0].name == "mock.connection.rollback" @@ -641,7 +676,8 @@ def cursor(self): async def commit(self): pass - pin = Pin("pin", tracer=self.tracer) + pin = Pin("pin") + pin._tracer = self.tracer conn = TracedAsyncConnection(ConnectionConnection(), pin) async with conn as conn2: await conn2.commit() diff --git a/tests/contrib/django/conftest.py b/tests/contrib/django/conftest.py index 3dd992681b4..7a398abba46 100644 --- a/tests/contrib/django/conftest.py +++ b/tests/contrib/django/conftest.py @@ -32,7 +32,7 @@ def tracer(): # Patch Django and override tracer to be our test tracer pin = Pin.get_from(django) original_tracer = pin.tracer - Pin.override(django, tracer=tracer) + Pin._override(django, tracer=tracer) # Yield to our test yield tracer @@ -41,7 +41,7 @@ def tracer(): # Reset the tracer pinned to Django and unpatch # DEV: unable to properly unpatch and reload django app with each test # unpatch() - Pin.override(django, tracer=original_tracer) + Pin._override(django, tracer=original_tracer) @pytest.fixture diff --git a/tests/contrib/django/test_django.py b/tests/contrib/django/test_django.py index 79baceb1652..03fdffeaf45 100644 --- a/tests/contrib/django/test_django.py +++ b/tests/contrib/django/test_django.py @@ -1588,7 +1588,7 @@ def test_connection(client, test_spans): span = spans[0] assert span.name == "sqlite.query" - assert span.service == "{}" + assert span.service == "{}", span.service assert span.span_type == "sql" assert span.get_tag("django.db.vendor") == "sqlite" assert span.get_tag("django.db.alias") == "default" diff --git a/tests/contrib/django/test_django_dbm.py b/tests/contrib/django/test_django_dbm.py index d44f90f3208..cd2eb436c42 100644 --- a/tests/contrib/django/test_django_dbm.py +++ b/tests/contrib/django/test_django_dbm.py @@ -21,7 +21,7 @@ def get_cursor(tracer, service=None, propagation_mode="service", tags={}): pin = Pin.get_from(cursor) assert pin is not None - pin.clone(tracer=tracer, tags={**pin.tags, **tags}).onto(cursor) + pin._clone(tracer=tracer, tags={**pin.tags, **tags}).onto(cursor) return cursor diff --git a/tests/contrib/dogpile_cache/test_tracing.py b/tests/contrib/dogpile_cache/test_tracing.py index fec78818eda..ac42a8512ac 100644 --- a/tests/contrib/dogpile_cache/test_tracing.py +++ b/tests/contrib/dogpile_cache/test_tracing.py @@ -31,7 +31,7 @@ def region(tracer): # The backend is trivial so we can use memory to simplify test setup. test_region = dogpile.cache.make_region(name="TestRegion", key_mangler=lambda x: x) test_region.configure("dogpile.cache.memory") - Pin.override(dogpile.cache, tracer=tracer) + Pin._override(dogpile.cache, tracer=tracer) return test_region diff --git a/tests/contrib/dramatiq/test_integration.py b/tests/contrib/dramatiq/test_integration.py index 526aadc3861..990bef92bdc 100644 --- a/tests/contrib/dramatiq/test_integration.py +++ b/tests/contrib/dramatiq/test_integration.py @@ -35,7 +35,9 @@ def test_idempotent_unpatch(self): unpatch() tracer = DummyTracer() - Pin(tracer=tracer).onto(dramatiq) + pin = Pin() + pin._tracer = tracer + pin.onto(dramatiq) @dramatiq.actor def fn_task(): @@ -51,7 +53,9 @@ def test_fn_task_synchronous(self): # the body of the function is not instrumented so calling it # directly doesn't create a trace tracer = DummyTracer() - Pin(tracer=tracer).onto(dramatiq) + pin = Pin() + pin._tracer = tracer + pin.onto(dramatiq) @dramatiq.actor def fn_task(): diff --git a/tests/contrib/elasticsearch/test_elasticsearch.py b/tests/contrib/elasticsearch/test_elasticsearch.py index 6e381bc1e31..f1c461f4e51 100644 --- a/tests/contrib/elasticsearch/test_elasticsearch.py +++ b/tests/contrib/elasticsearch/test_elasticsearch.py @@ -92,7 +92,9 @@ def setUp(self): # `custom_tag` is a custom tag that can be set via `Pin`. "custom_tag": "bar", } - Pin(tracer=self.tracer, tags=tags).onto(es.transport) + pin = Pin(tags=tags) + pin._tracer = self.tracer + pin.onto(es.transport) self.create_index(es) patch() @@ -225,7 +227,9 @@ def test_patch_unpatch(self): patch() es = self._get_es() - Pin(tracer=self.tracer).onto(es.transport) + pin = Pin() + pin._tracer = self.tracer + pin.onto(es.transport) # Test index creation self.create_index(es) @@ -253,7 +257,9 @@ def test_patch_unpatch(self): patch() es = self._get_es() - Pin(tracer=self.tracer).onto(es.transport) + pin = Pin() + pin._tracer = self.tracer + pin.onto(es.transport) # Test index creation self.create_index(es) @@ -286,7 +292,9 @@ def test_user_specified_service_v1(self): assert config.service == "mysvc" self.create_index(self.es) - Pin(service="es", tracer=self.tracer).onto(self.es.transport) + pin = Pin(service="es") + pin._tracer = self.tracer + pin.onto(self.es.transport) spans = self.get_spans() self.reset() assert len(spans) == 1 @@ -303,7 +311,9 @@ def test_unspecified_service_v0(self): @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) def test_unspecified_service_v1(self): self.create_index(self.es) - Pin(service="es", tracer=self.tracer).onto(self.es.transport) + pin = Pin(service="es") + pin._tracer = self.tracer + pin.onto(self.es.transport) spans = self.get_spans() self.reset() assert len(spans) == 1 diff --git a/tests/contrib/flask/__init__.py b/tests/contrib/flask/__init__.py index a512a79f196..2a6fc49285c 100644 --- a/tests/contrib/flask/__init__.py +++ b/tests/contrib/flask/__init__.py @@ -36,7 +36,7 @@ def setUp(self): self.app = flask.Flask(__name__, template_folder="test_templates/") self.app.test_client_class = DDFlaskTestClient self.client = self.app.test_client() - Pin.override(self.app, tracer=self.tracer) + Pin._override(self.app, tracer=self.tracer) def tearDown(self): super(BaseFlaskTestCase, self).tearDown() diff --git a/tests/contrib/flask/test_blueprint.py b/tests/contrib/flask/test_blueprint.py index 96401dfa1a9..dffa959eceb 100644 --- a/tests/contrib/flask/test_blueprint.py +++ b/tests/contrib/flask/test_blueprint.py @@ -36,7 +36,9 @@ def test_blueprint_register(self): We do not use the ``flask.Flask`` app ``Pin`` """ bp = flask.Blueprint("pinned", __name__) - Pin(service="flask-bp", tracer=self.tracer).onto(bp) + pin = Pin(service="flask-bp") + pin._tracer = self.tracer + pin.onto(bp) # DEV: This is more common than calling ``flask.Blueprint.register`` directly self.app.register_blueprint(bp) @@ -58,7 +60,9 @@ def test_blueprint_add_url_rule(self): """ # When the Blueprint has a Pin attached bp = flask.Blueprint("pinned", __name__) - Pin(service="flask-bp", tracer=self.tracer).onto(bp) + pin = Pin(service="flask-bp") + pin._tracer = self.tracer + pin.onto(bp) @bp.route("/") def test_view(): @@ -113,7 +117,7 @@ def test_blueprint_request_pin_override(self): We create the expected spans """ bp = flask.Blueprint("bp", __name__) - Pin.override(bp, service="flask-bp", tracer=self.tracer) + Pin._override(bp, service="flask-bp", tracer=self.tracer) @bp.route("/") def test(): diff --git a/tests/contrib/flask_autopatch/test_flask_autopatch.py b/tests/contrib/flask_autopatch/test_flask_autopatch.py index 27c4b47e2d0..9d0bfb7820b 100644 --- a/tests/contrib/flask_autopatch/test_flask_autopatch.py +++ b/tests/contrib/flask_autopatch/test_flask_autopatch.py @@ -17,7 +17,7 @@ class FlaskAutopatchTestCase(TracerTestCase): def setUp(self): super(FlaskAutopatchTestCase, self).setUp() self.app = flask.Flask(__name__) - Pin.override(self.app, service="test-flask", tracer=self.tracer) + Pin._override(self.app, service="test-flask", tracer=self.tracer) self.client = self.app.test_client() def test_patched(self): diff --git a/tests/contrib/google_generativeai/conftest.py b/tests/contrib/google_generativeai/conftest.py index 64b2eb83d1b..69d86a7f05d 100644 --- a/tests/contrib/google_generativeai/conftest.py +++ b/tests/contrib/google_generativeai/conftest.py @@ -35,7 +35,7 @@ def mock_tracer(ddtrace_global_config, genai): try: pin = Pin.get_from(genai) mock_tracer = DummyTracer(writer=DummyWriter(trace_flush_enabled=False)) - pin.override(genai, tracer=mock_tracer) + pin._override(genai, tracer=mock_tracer) pin.tracer._configure() if ddtrace_global_config.get("_llmobs_enabled", False): # Have to disable and re-enable LLMObs to use to mock tracer. diff --git a/tests/contrib/grpc/common.py b/tests/contrib/grpc/common.py index e67e4f32a92..bcc444a3fe2 100644 --- a/tests/contrib/grpc/common.py +++ b/tests/contrib/grpc/common.py @@ -20,8 +20,8 @@ class GrpcBaseTestCase(TracerTestCase): def setUp(self): super(GrpcBaseTestCase, self).setUp() patch() - Pin.override(constants.GRPC_PIN_MODULE_SERVER, tracer=self.tracer) - Pin.override(constants.GRPC_PIN_MODULE_CLIENT, tracer=self.tracer) + Pin._override(constants.GRPC_PIN_MODULE_SERVER, tracer=self.tracer) + Pin._override(constants.GRPC_PIN_MODULE_CLIENT, tracer=self.tracer) self._start_server() def tearDown(self): diff --git a/tests/contrib/grpc/test_grpc.py b/tests/contrib/grpc/test_grpc.py index d0559f2dff5..6164682c449 100644 --- a/tests/contrib/grpc/test_grpc.py +++ b/tests/contrib/grpc/test_grpc.py @@ -227,9 +227,9 @@ def test_pin_not_activated(self): def test_pin_tags_are_put_in_span(self): # DEV: stop and restart server to catch overridden pin self._stop_server() - Pin.override(constants.GRPC_PIN_MODULE_SERVER, service="server1") - Pin.override(constants.GRPC_PIN_MODULE_SERVER, tags={"tag1": "server"}) - Pin.override(constants.GRPC_PIN_MODULE_CLIENT, tags={"tag2": "client"}) + Pin._override(constants.GRPC_PIN_MODULE_SERVER, service="server1") + Pin._override(constants.GRPC_PIN_MODULE_SERVER, tags={"tag1": "server"}) + Pin._override(constants.GRPC_PIN_MODULE_CLIENT, tags={"tag2": "client"}) self._start_server() with grpc.insecure_channel("127.0.0.1:%d" % (_GRPC_PORT)) as channel: stub = HelloStub(channel) @@ -241,10 +241,10 @@ def test_pin_tags_are_put_in_span(self): assert spans[0].get_tag("tag2") == "client" def test_pin_can_be_defined_per_channel(self): - Pin.override(constants.GRPC_PIN_MODULE_CLIENT, service="grpc1") + Pin._override(constants.GRPC_PIN_MODULE_CLIENT, service="grpc1") channel1 = grpc.insecure_channel("127.0.0.1:%d" % (_GRPC_PORT)) - Pin.override(constants.GRPC_PIN_MODULE_CLIENT, service="grpc2") + Pin._override(constants.GRPC_PIN_MODULE_CLIENT, service="grpc2") channel2 = grpc.insecure_channel("127.0.0.1:%d" % (_GRPC_PORT)) stub1 = HelloStub(channel1) diff --git a/tests/contrib/grpc_aio/test_grpc_aio.py b/tests/contrib/grpc_aio/test_grpc_aio.py index 0606bcc3db2..e256a37a160 100644 --- a/tests/contrib/grpc_aio/test_grpc_aio.py +++ b/tests/contrib/grpc_aio/test_grpc_aio.py @@ -179,8 +179,8 @@ def patch_grpc_aio(): @pytest.fixture def tracer(): tracer = DummyTracer() - Pin.override(GRPC_AIO_PIN_MODULE_CLIENT, tracer=tracer) - Pin.override(GRPC_AIO_PIN_MODULE_SERVER, tracer=tracer) + Pin._override(GRPC_AIO_PIN_MODULE_CLIENT, tracer=tracer) + Pin._override(GRPC_AIO_PIN_MODULE_SERVER, tracer=tracer) yield tracer tracer.pop() @@ -354,13 +354,13 @@ async def test_pin_not_activated(server_info, tracer): [_CoroHelloServicer(), _SyncHelloServicer()], ) async def test_pin_tags_put_in_span(servicer, tracer): - Pin.override(GRPC_AIO_PIN_MODULE_SERVER, service="server1") - Pin.override(GRPC_AIO_PIN_MODULE_SERVER, tags={"tag1": "server"}) + Pin._override(GRPC_AIO_PIN_MODULE_SERVER, service="server1") + Pin._override(GRPC_AIO_PIN_MODULE_SERVER, tags={"tag1": "server"}) target = f"localhost:{_GRPC_PORT}" _server = _create_server(servicer, target) await _server.start() - Pin.override(GRPC_AIO_PIN_MODULE_CLIENT, tags={"tag2": "client"}) + Pin._override(GRPC_AIO_PIN_MODULE_CLIENT, tags={"tag2": "client"}) async with aio.insecure_channel(target) as channel: stub = HelloStub(channel) await stub.SayHello(HelloRequest(name="test")) @@ -383,10 +383,10 @@ async def test_pin_tags_put_in_span(servicer, tracer): @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_pin_can_be_defined_per_channel(server_info, tracer): - Pin.override(GRPC_AIO_PIN_MODULE_CLIENT, service="grpc1") + Pin._override(GRPC_AIO_PIN_MODULE_CLIENT, service="grpc1") channel1 = aio.insecure_channel(server_info.target) - Pin.override(GRPC_AIO_PIN_MODULE_CLIENT, service="grpc2") + Pin._override(GRPC_AIO_PIN_MODULE_CLIENT, service="grpc2") channel2 = aio.insecure_channel(server_info.target) stub1 = HelloStub(channel1) diff --git a/tests/contrib/httplib/test_httplib.py b/tests/contrib/httplib/test_httplib.py index 24a5fe3f051..a57aff294a1 100644 --- a/tests/contrib/httplib/test_httplib.py +++ b/tests/contrib/httplib/test_httplib.py @@ -41,7 +41,7 @@ def setUp(self): super(HTTPLibBaseMixin, self).setUp() patch() - Pin.override(httplib, tracer=self.tracer) + Pin._override(httplib, tracer=self.tracer) def tearDown(self): unpatch() @@ -59,12 +59,12 @@ def to_str(self, value): def get_http_connection(self, *args, **kwargs): conn = httplib.HTTPConnection(*args, **kwargs) - Pin.override(conn, tracer=self.tracer) + Pin._override(conn, tracer=self.tracer) return conn def get_https_connection(self, *args, **kwargs): conn = httplib.HTTPSConnection(*args, **kwargs) - Pin.override(conn, tracer=self.tracer) + Pin._override(conn, tracer=self.tracer) return conn def test_patch(self): diff --git a/tests/contrib/httplib/test_httplib_distributed.py b/tests/contrib/httplib/test_httplib_distributed.py index 706921388bc..922f219f5ee 100644 --- a/tests/contrib/httplib/test_httplib_distributed.py +++ b/tests/contrib/httplib/test_httplib_distributed.py @@ -38,7 +38,7 @@ def headers_not_here(self, tracer): def get_http_connection(self, *args, **kwargs): conn = httplib.HTTPConnection(*args, **kwargs) - Pin.override(conn, tracer=self.tracer) + Pin._override(conn, tracer=self.tracer) return conn def request(self, conn=None): diff --git a/tests/contrib/httpx/test_httpx.py b/tests/contrib/httpx/test_httpx.py index 33ecadb825f..457c077f645 100644 --- a/tests/contrib/httpx/test_httpx.py +++ b/tests/contrib/httpx/test_httpx.py @@ -59,7 +59,7 @@ def test_httpx_service_name(tracer, test_spans): We set the span service name as a text type and not binary """ client = httpx.Client() - Pin.override(client, tracer=tracer) + Pin._override(client, tracer=tracer) with override_config("httpx", {"split_by_domain": True}): resp = client.get(get_url("/status/200")) @@ -124,15 +124,15 @@ def assert_spans(test_spans, service): # override the tracer on the default sync client # DEV: `httpx.get` will call `with Client() as client: client.get()` - Pin.override(httpx.Client, tracer=tracer) + Pin._override(httpx.Client, tracer=tracer) # sync client client = httpx.Client() - Pin.override(client, service="sync-client", tracer=tracer) + Pin._override(client, service="sync-client", tracer=tracer) # async client async_client = httpx.AsyncClient() - Pin.override(async_client, service="async-client", tracer=tracer) + Pin._override(async_client, service="async-client", tracer=tracer) resp = httpx.get(url, headers=DEFAULT_HEADERS) assert resp.status_code == 200 diff --git a/tests/contrib/httpx/test_httpx_pre_0_11.py b/tests/contrib/httpx/test_httpx_pre_0_11.py index 315c53cb29c..0f37df47ea3 100644 --- a/tests/contrib/httpx/test_httpx_pre_0_11.py +++ b/tests/contrib/httpx/test_httpx_pre_0_11.py @@ -57,7 +57,7 @@ async def test_httpx_service_name(tracer, test_spans): We set the span service name as a text type and not binary """ client = httpx.Client() - Pin.override(client, tracer=tracer) + Pin._override(client, tracer=tracer) with override_config("httpx", {"split_by_domain": True}): resp = await client.get(get_url("/status/200")) @@ -112,11 +112,11 @@ def assert_spans(test_spans, service): # override the tracer on the default sync client # DEV: `httpx.get` will call `with Client() as client: client.get()` - Pin.override(httpx.Client, tracer=tracer) + Pin._override(httpx.Client, tracer=tracer) # sync client client = httpx.Client() - Pin.override(client, service="sync-client", tracer=tracer) + Pin._override(client, service="sync-client", tracer=tracer) resp = await httpx.get(url, headers=DEFAULT_HEADERS) assert resp.status_code == 200 diff --git a/tests/contrib/jinja2/test_jinja2.py b/tests/contrib/jinja2/test_jinja2.py index ce91c7e5ed0..eac8aeffd85 100644 --- a/tests/contrib/jinja2/test_jinja2.py +++ b/tests/contrib/jinja2/test_jinja2.py @@ -26,7 +26,7 @@ def setUp(self): jinja2.environment._spontaneous_environments.clear() except AttributeError: jinja2.utils.clear_caches() - Pin.override(jinja2.environment.Environment, tracer=self.tracer) + Pin._override(jinja2.environment.Environment, tracer=self.tracer) def tearDown(self): super(Jinja2Test, self).tearDown() diff --git a/tests/contrib/kafka/test_kafka.py b/tests/contrib/kafka/test_kafka.py index c67bdd08b01..f99489595ac 100644 --- a/tests/contrib/kafka/test_kafka.py +++ b/tests/contrib/kafka/test_kafka.py @@ -22,7 +22,7 @@ from ddtrace.internal.utils.retry import fibonacci_backoff_with_jitter from ddtrace.trace import Pin from ddtrace.trace import TraceFilter -from ddtrace.trace import Tracer +from ddtrace.trace import tracer as ddtracer from tests.contrib.config import KAFKA_CONFIG from tests.datastreams.test_public_api import MockedTracer from tests.utils import DummyTracer @@ -106,16 +106,16 @@ def should_filter_empty_polls(): @pytest.fixture def tracer(should_filter_empty_polls): patch() - t = Tracer() if should_filter_empty_polls: - t._configure(trace_processors=[KafkaConsumerPollFilter()]) + ddtracer.configure(trace_processors=[KafkaConsumerPollFilter()]) # disable backoff because it makes these tests less reliable - t._writer._send_payload_with_backoff = t._writer._send_payload + previous_backoff = ddtracer._writer._send_payload_with_backoff + ddtracer._writer._send_payload_with_backoff = ddtracer._writer._send_payload try: - yield t + yield ddtracer finally: - t.flush() - t.shutdown() + ddtracer.flush() + ddtracer._writer._send_payload_with_backoff = previous_backoff unpatch() @@ -124,12 +124,14 @@ def dsm_processor(tracer): processor = tracer.data_streams_processor with mock.patch("ddtrace.internal.datastreams.data_streams_processor", return_value=processor): yield processor + # flush buckets for the next test run + processor.periodic() @pytest.fixture def producer(tracer): _producer = confluent_kafka.Producer({"bootstrap.servers": BOOTSTRAP_SERVERS}) - Pin.override(_producer, tracer=tracer) + Pin._override(_producer, tracer=tracer) return _producer @@ -146,7 +148,7 @@ def consumer(tracer, kafka_topic): tp = TopicPartition(kafka_topic, 0) tp.offset = 0 # we want to read the first message _consumer.commit(offsets=[tp]) - Pin.override(_consumer, tracer=tracer) + Pin._override(_consumer, tracer=tracer) _consumer.subscribe([kafka_topic]) yield _consumer _consumer.close() @@ -165,7 +167,7 @@ def non_auto_commit_consumer(tracer, kafka_topic): tp = TopicPartition(kafka_topic, 0) tp.offset = 0 # we want to read the first message _consumer.commit(offsets=[tp]) - Pin.override(_consumer, tracer=tracer) + Pin._override(_consumer, tracer=tracer) _consumer.subscribe([kafka_topic]) yield _consumer _consumer.close() @@ -176,7 +178,7 @@ def serializing_producer(tracer): _producer = confluent_kafka.SerializingProducer( {"bootstrap.servers": BOOTSTRAP_SERVERS, "value.serializer": lambda x, y: x} ) - Pin.override(_producer, tracer=tracer) + Pin._override(_producer, tracer=tracer) return _producer @@ -190,7 +192,7 @@ def deserializing_consumer(tracer, kafka_topic): "value.deserializer": lambda x, y: x, } ) - Pin.override(_consumer, tracer=tracer) + Pin._override(_consumer, tracer=tracer) _consumer.subscribe([kafka_topic]) yield _consumer _consumer.close() @@ -248,7 +250,7 @@ def test_producer_bootstrap_servers(config, expect_servers, tracer): def test_produce_single_server(dummy_tracer, producer, kafka_topic): - Pin.override(producer, tracer=dummy_tracer) + Pin._override(producer, tracer=dummy_tracer) producer.produce(kafka_topic, PAYLOAD, key=KEY) producer.flush() @@ -259,18 +261,18 @@ def test_produce_single_server(dummy_tracer, producer, kafka_topic): def test_produce_none_key(dummy_tracer, producer, kafka_topic): - Pin.override(producer, tracer=dummy_tracer) + Pin._override(producer, tracer=dummy_tracer) producer.produce(kafka_topic, PAYLOAD, key=None) producer.flush() traces = dummy_tracer.pop_traces() assert 1 == len(traces), "key=None does not cause produce() call to raise an exception" - Pin.override(producer, tracer=None) + Pin._override(producer, tracer=None) def test_produce_multiple_servers(dummy_tracer, kafka_topic): producer = confluent_kafka.Producer({"bootstrap.servers": ",".join([BOOTSTRAP_SERVERS] * 3)}) - Pin.override(producer, tracer=dummy_tracer) + Pin._override(producer, tracer=dummy_tracer) producer.produce(kafka_topic, PAYLOAD, key=KEY) producer.flush() @@ -278,7 +280,7 @@ def test_produce_multiple_servers(dummy_tracer, kafka_topic): assert 1 == len(traces) produce_span = traces[0][0] assert produce_span.get_tag("messaging.kafka.bootstrap.servers") == ",".join([BOOTSTRAP_SERVERS] * 3) - Pin.override(producer, tracer=None) + Pin._override(producer, tracer=None) @pytest.mark.parametrize("tombstone", [False, True]) @@ -325,6 +327,7 @@ def test_commit_with_consume_with_multiple_messages(producer, consumer, kafka_to @pytest.mark.snapshot(ignores=SNAPSHOT_IGNORES) @pytest.mark.parametrize("should_filter_empty_polls", [False]) +@pytest.mark.skip(reason="FIXME: This test requires the initialization of a new tracer. This is not supported") def test_commit_with_consume_with_error(producer, consumer, kafka_topic): producer.produce(kafka_topic, PAYLOAD, key=KEY) producer.flush() @@ -518,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) + ddtrace.trace.Pin._override(producer, tracer=ddtrace.tracer) + ddtrace.trace.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 @@ -750,8 +753,8 @@ def test_data_streams_default_context_propagation(consumer, producer, kafka_topi # It is not currently expected for kafka produce and consume spans to connect in a trace def test_tracing_context_is_not_propagated_by_default(dummy_tracer, consumer, producer, kafka_topic): - Pin.override(producer, tracer=dummy_tracer) - Pin.override(consumer, tracer=dummy_tracer) + Pin._override(producer, tracer=dummy_tracer) + Pin._override(consumer, tracer=dummy_tracer) test_string = "context test no propagation" test_key = "context test key no propagation" @@ -788,8 +791,8 @@ def test_tracing_context_is_not_propagated_by_default(dummy_tracer, consumer, pr # None of these spans are part of the same trace assert produce_span.trace_id != consume_span.trace_id - Pin.override(consumer, tracer=None) - Pin.override(producer, tracer=None) + Pin._override(consumer, tracer=None) + Pin._override(producer, tracer=None) # Propagation should work when enabled @@ -813,8 +816,8 @@ def test(consumer, producer, kafka_topic): patch() dummy_tracer = DummyTracer() dummy_tracer.flush() - Pin.override(producer, tracer=dummy_tracer) - Pin.override(consumer, tracer=dummy_tracer) + Pin._override(producer, tracer=dummy_tracer) + Pin._override(consumer, tracer=dummy_tracer) # use a random int in this string to prevent reading a message produced by a previous test run test_string = "context propagation enabled test " + str(random.randint(0, 1000)) @@ -851,8 +854,8 @@ def test(consumer, producer, kafka_topic): # Two of these spans are part of the same trace assert produce_span.trace_id == consume_span.trace_id - Pin.override(consumer, tracer=None) - Pin.override(producer, tracer=None) + Pin._override(consumer, tracer=None) + Pin._override(producer, tracer=None) if __name__ == "__main__": sys.exit(pytest.main(["-x", __file__])) @@ -897,7 +900,7 @@ def test_consumer_uses_active_context_when_no_valid_distributed_context_exists( producer.produce(kafka_topic, PAYLOAD, key=test_key) producer.flush() - Pin.override(consumer, tracer=dummy_tracer) + Pin._override(consumer, tracer=dummy_tracer) with dummy_tracer.trace("kafka consumer parent span") as parent_span: with override_config("kafka", dict(distributed_tracing_enabled=True)): @@ -912,12 +915,12 @@ def test_consumer_uses_active_context_when_no_valid_distributed_context_exists( assert consume_span.name == "kafka.consume" assert consume_span.parent_id == parent_span.span_id - Pin.override(consumer, tracer=None) + Pin._override(consumer, tracer=None) def test_span_has_dsm_payload_hash(dummy_tracer, consumer, producer, kafka_topic): - Pin.override(producer, tracer=dummy_tracer) - Pin.override(consumer, tracer=dummy_tracer) + Pin._override(producer, tracer=dummy_tracer) + Pin._override(consumer, tracer=dummy_tracer) test_string = "payload hash test" PAYLOAD = bytes(test_string, encoding="utf-8") @@ -943,8 +946,8 @@ def test_span_has_dsm_payload_hash(dummy_tracer, consumer, producer, kafka_topic assert consume_span.name == "kafka.consume" assert consume_span.get_tag("pathway.hash") is not None - Pin.override(consumer, tracer=None) - Pin.override(producer, tracer=None) + Pin._override(consumer, tracer=None) + Pin._override(producer, tracer=None) def test_tracing_with_serialization_works(dummy_tracer, kafka_topic): @@ -978,8 +981,8 @@ def json_deserializer(as_bytes, ctx): _consumer.commit(offsets=[tp]) _consumer.subscribe([kafka_topic]) - Pin.override(_producer, tracer=dummy_tracer) - Pin.override(_consumer, tracer=dummy_tracer) + Pin._override(_producer, tracer=dummy_tracer) + Pin._override(_consumer, tracer=dummy_tracer) test_string = "serializing_test" PAYLOAD = {"val": test_string} @@ -1004,12 +1007,12 @@ def json_deserializer(as_bytes, ctx): # a string assert consume_span.get_tag("kafka.message_key") is None - Pin.override(_consumer, tracer=None) - Pin.override(_producer, tracer=None) + Pin._override(_consumer, tracer=None) + Pin._override(_producer, tracer=None) def test_traces_empty_poll_by_default(dummy_tracer, consumer, kafka_topic): - Pin.override(consumer, tracer=dummy_tracer) + Pin._override(consumer, tracer=dummy_tracer) message = "hello" while message is not None: @@ -1029,7 +1032,7 @@ def test_traces_empty_poll_by_default(dummy_tracer, consumer, kafka_topic): assert empty_poll_span_created is True - Pin.override(consumer, tracer=None) + Pin._override(consumer, tracer=None) # Poll should not be traced when disabled @@ -1054,8 +1057,8 @@ def test(consumer, producer, kafka_topic): patch() dummy_tracer = DummyTracer() dummy_tracer.flush() - Pin.override(producer, tracer=dummy_tracer) - Pin.override(consumer, tracer=dummy_tracer) + Pin._override(producer, tracer=dummy_tracer) + Pin._override(consumer, tracer=dummy_tracer) assert config.kafka.trace_empty_poll_enabled is False @@ -1102,8 +1105,8 @@ def test(consumer, producer, kafka_topic): assert non_empty_poll_span_created is True - Pin.override(consumer, tracer=None) - Pin.override(producer, tracer=None) + Pin._override(consumer, tracer=None) + Pin._override(producer, tracer=None) if __name__ == "__main__": sys.exit(pytest.main(["-x", __file__])) diff --git a/tests/contrib/kombu/test.py b/tests/contrib/kombu/test.py index b56ecdf0d0f..949cffd5bd5 100644 --- a/tests/contrib/kombu/test.py +++ b/tests/contrib/kombu/test.py @@ -28,7 +28,7 @@ def setUp(self): conn = kombu.Connection("amqp://guest:guest@127.0.0.1:{p}//".format(p=self.TEST_PORT)) conn.connect() producer = conn.Producer() - Pin.override(producer, service=self.TEST_SERVICE, tracer=self.tracer) + Pin._override(producer, service=self.TEST_SERVICE, tracer=self.tracer) self.conn = conn self.producer = producer @@ -63,7 +63,7 @@ def process_message(body, message): ) with kombu.Consumer(self.conn, [task_queue], accept=["json"], callbacks=[process_message]) as consumer: - Pin.override(consumer, service="kombu-patch", tracer=self.tracer) + Pin._override(consumer, service="kombu-patch", tracer=self.tracer) self.conn.drain_events(timeout=2) self.assertEqual(results[0], to_publish) @@ -130,7 +130,7 @@ def setUp(self): conn = kombu.Connection("amqp://guest:guest@127.0.0.1:{p}//".format(p=RABBITMQ_CONFIG["port"])) conn.connect() producer = conn.Producer() - Pin.override(producer, tracer=self.tracer) + Pin._override(producer, tracer=self.tracer) self.conn = conn self.producer = producer @@ -151,7 +151,7 @@ def setUp(self): conn = kombu.Connection("amqp://guest:guest@127.0.0.1:{p}//".format(p=self.TEST_PORT)) conn.connect() producer = conn.Producer() - Pin.override(producer, tracer=self.tracer) + Pin._override(producer, tracer=self.tracer) self.conn = conn self.producer = producer @@ -180,7 +180,7 @@ def process_message(body, message): ) with kombu.Consumer(self.conn, [task_queue], accept=["json"], callbacks=[process_message]) as consumer: - Pin.override(consumer, tracer=self.tracer) + Pin._override(consumer, tracer=self.tracer) self.conn.drain_events(timeout=2) return self.get_spans() @@ -256,7 +256,7 @@ def process_message(body, message): ) with kombu.Consumer(self.conn, [task_queue], accept=["json"], callbacks=[process_message]) as consumer: - Pin.override(consumer, tracer=self.tracer) + Pin._override(consumer, tracer=self.tracer) self.conn.drain_events(timeout=2) spans = self.get_spans() @@ -275,7 +275,7 @@ def setUp(self): self.conn = kombu.Connection("amqp://guest:guest@127.0.0.1:{p}//".format(p=RABBITMQ_CONFIG["port"])) self.conn.connect() self.producer = self.conn.Producer() - Pin.override(self.producer, tracer=self.tracer) + Pin._override(self.producer, tracer=self.tracer) self.patcher = mock.patch( "ddtrace.internal.datastreams.data_streams_processor", return_value=self.tracer.data_streams_processor @@ -313,7 +313,7 @@ def process_message(body, message): self.producer.publish(to_publish, routing_key=task_queue.routing_key, declare=[task_queue]) with kombu.Consumer(self.conn, [task_queue], accept=["json"], callbacks=[process_message]) as consumer: - Pin.override(consumer, service="kombu-patch", tracer=self.tracer) + Pin._override(consumer, service="kombu-patch", tracer=self.tracer) self.conn.drain_events(timeout=2) queue_name = consumer.channel.queue_declare("tasks", passive=True).queue diff --git a/tests/contrib/langchain/conftest.py b/tests/contrib/langchain/conftest.py index 6c1e5816df5..be76954215c 100644 --- a/tests/contrib/langchain/conftest.py +++ b/tests/contrib/langchain/conftest.py @@ -30,7 +30,7 @@ def snapshot_tracer(langchain, mock_logs, mock_metrics): def mock_tracer(langchain): pin = Pin.get_from(langchain) mock_tracer = DummyTracer(writer=DummyWriter(trace_flush_enabled=False)) - pin.override(langchain, tracer=mock_tracer) + pin._override(langchain, tracer=mock_tracer) pin.tracer._configure() yield mock_tracer diff --git a/tests/contrib/langgraph/conftest.py b/tests/contrib/langgraph/conftest.py index 13e1a5f9242..7c6671167bb 100644 --- a/tests/contrib/langgraph/conftest.py +++ b/tests/contrib/langgraph/conftest.py @@ -32,7 +32,7 @@ def langgraph(monkeypatch, mock_tracer): import langgraph pin = Pin.get_from(langgraph) - pin.override(langgraph, tracer=mock_tracer) + pin._override(langgraph, tracer=mock_tracer) yield langgraph unpatch() diff --git a/tests/contrib/mako/test_mako.py b/tests/contrib/mako/test_mako.py index 7e690b04a43..7b839177e0e 100644 --- a/tests/contrib/mako/test_mako.py +++ b/tests/contrib/mako/test_mako.py @@ -23,7 +23,7 @@ class MakoTest(TracerTestCase): def setUp(self): super(MakoTest, self).setUp() patch() - Pin.override(Template, tracer=self.tracer) + Pin._override(Template, tracer=self.tracer) def tearDown(self): super(MakoTest, self).tearDown() diff --git a/tests/contrib/mariadb/test_mariadb.py b/tests/contrib/mariadb/test_mariadb.py index 7ea8cd27feb..2f51f2e9b0a 100644 --- a/tests/contrib/mariadb/test_mariadb.py +++ b/tests/contrib/mariadb/test_mariadb.py @@ -39,7 +39,7 @@ def tracer(): def get_connection(tracer): connection = mariadb.connect(**MARIADB_CONFIG) - Pin.override(connection, tracer=tracer) + Pin._override(connection, tracer=tracer) return connection diff --git a/tests/contrib/molten/test_molten.py b/tests/contrib/molten/test_molten.py index cc73ceef861..74d6f1bf628 100644 --- a/tests/contrib/molten/test_molten.py +++ b/tests/contrib/molten/test_molten.py @@ -49,7 +49,7 @@ class TestMolten(TracerTestCase): def setUp(self): super(TestMolten, self).setUp() patch() - Pin.override(molten, tracer=self.tracer) + Pin._override(molten, tracer=self.tracer) self.app = molten_app() self.client = TestClient(self.app) @@ -89,7 +89,7 @@ def test_route_success(self): self.assertEqual(len(spans), 16) # test override of service name - Pin.override(molten, service=self.TEST_SERVICE) + Pin._override(molten, service=self.TEST_SERVICE) response = self.make_request() spans = self.pop_spans() self.assertEqual(spans[0].service, "molten-patch") @@ -273,7 +273,7 @@ def test_unpatch_patch(self): patch() # Need to override Pin here as we do in setUp - Pin.override(molten, tracer=self.tracer) + Pin._override(molten, tracer=self.tracer) self.assertTrue(Pin.get_from(molten) is not None) self.make_request() spans = self.pop_spans() diff --git a/tests/contrib/molten/test_molten_di.py b/tests/contrib/molten/test_molten_di.py index d360698f4cb..848517aca34 100644 --- a/tests/contrib/molten/test_molten_di.py +++ b/tests/contrib/molten/test_molten_di.py @@ -85,7 +85,7 @@ class TestMoltenDI(TracerTestCase): def setUp(self): super(TestMoltenDI, self).setUp() patch() - Pin.override(molten, tracer=self.tracer, service=self.TEST_SERVICE) + Pin._override(molten, tracer=self.tracer, service=self.TEST_SERVICE) def tearDown(self): unpatch() diff --git a/tests/contrib/mongoengine/test.py b/tests/contrib/mongoengine/test.py index b3961e3808c..51b0ff70c47 100644 --- a/tests/contrib/mongoengine/test.py +++ b/tests/contrib/mongoengine/test.py @@ -186,7 +186,7 @@ def tearDown(self): def get_tracer_and_connect(self): tracer = DummyTracer() client = mongoengine.connect(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) return tracer @@ -315,7 +315,9 @@ class TestMongoEnginePatchConnect(TestMongoEnginePatchConnectDefault): def get_tracer_and_connect(self): tracer = TestMongoEnginePatchConnectDefault.get_tracer_and_connect(self) - Pin(service=self.TEST_SERVICE, tracer=tracer).onto(mongoengine.connect) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = tracer + pin.onto(mongoengine.connect) mongoengine.connect(port=MONGO_CONFIG["port"]) return tracer @@ -337,7 +339,7 @@ def tearDown(self): def get_tracer_and_connect(self): tracer = DummyTracer() client = mongoengine.connect(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) return tracer @@ -352,7 +354,9 @@ def get_tracer_and_connect(self): # Set a connect-level service, to check that we properly override it Pin(service="not-%s" % self.TEST_SERVICE).onto(mongoengine.connect) client = mongoengine.connect(port=MONGO_CONFIG["port"]) - Pin(service=self.TEST_SERVICE, tracer=tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = tracer + pin.onto(client) return tracer @@ -364,7 +368,7 @@ def test_patch_unpatch(self): patch() client = mongoengine.connect(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) Artist.drop_collection() spans = tracer.pop() @@ -389,7 +393,7 @@ def test_patch_unpatch(self): # Test patch again patch() client = mongoengine.connect(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) Artist.drop_collection() spans = tracer.pop() diff --git a/tests/contrib/mysql/test_mysql.py b/tests/contrib/mysql/test_mysql.py index 08626890fac..ec0da0aff35 100644 --- a/tests/contrib/mysql/test_mysql.py +++ b/tests/contrib/mysql/test_mysql.py @@ -418,7 +418,7 @@ def _get_conn_tracer(self): # assert pin.service == 'mysql' # Customize the service # we have to apply it on the existing one since new one won't inherit `app` - pin.clone(tracer=self.tracer).onto(self.conn) + pin._clone(tracer=self.tracer).onto(self.conn) return self.conn, self.tracer @@ -434,7 +434,7 @@ def test_patch_unpatch(self): conn = mysql.connector.connect(**MYSQL_CONFIG) pin = Pin.get_from(conn) assert pin - pin.clone(service="pin-svc", tracer=self.tracer).onto(conn) + pin._clone(service="pin-svc", tracer=self.tracer).onto(conn) assert conn.is_connected() cursor = conn.cursor() diff --git a/tests/contrib/mysqldb/test_mysqldb.py b/tests/contrib/mysqldb/test_mysqldb.py index 5d2c98a752c..4117eb69a10 100644 --- a/tests/contrib/mysqldb/test_mysqldb.py +++ b/tests/contrib/mysqldb/test_mysqldb.py @@ -534,7 +534,7 @@ def _add_dummy_tracer_to_pinned(self, obj): assert pin # Customize the service # we have to apply it on the existing one since new one won't inherit `app` - pin.clone(tracer=self.tracer).onto(obj) + pin._clone(tracer=self.tracer).onto(obj) def _get_conn_tracer(self): if not self.conn: @@ -559,7 +559,7 @@ def _get_conn_tracer_with_positional_args(self): assert pin # Customize the service # we have to apply it on the existing one since new one won't inherit `app` - pin.clone(tracer=self.tracer).onto(self.conn) + pin._clone(tracer=self.tracer).onto(self.conn) return self.conn, self.tracer @@ -575,7 +575,7 @@ def test_patch_unpatch(self): conn = self._connect_with_kwargs() pin = Pin.get_from(conn) assert pin - pin.clone(tracer=self.tracer).onto(conn) + pin._clone(tracer=self.tracer).onto(conn) conn.ping() cursor = conn.cursor() @@ -617,7 +617,7 @@ def test_patch_unpatch(self): def test_user_pin_override(self): conn, tracer = self._get_conn_tracer() pin = Pin.get_from(conn) - pin.clone(service="pin-svc", tracer=self.tracer).onto(conn) + pin._clone(service="pin-svc", tracer=self.tracer).onto(conn) cursor = conn.cursor() cursor.execute("SELECT 1") rows = cursor.fetchall() diff --git a/tests/contrib/openai/conftest.py b/tests/contrib/openai/conftest.py index 47f258b3ed0..9cd8c998c79 100644 --- a/tests/contrib/openai/conftest.py +++ b/tests/contrib/openai/conftest.py @@ -146,7 +146,7 @@ def snapshot_tracer(openai, patch_openai): def mock_tracer(ddtrace_global_config, openai, patch_openai): pin = Pin.get_from(openai) mock_tracer = DummyTracer(writer=DummyWriter(trace_flush_enabled=False)) - pin.override(openai, tracer=mock_tracer) + pin._override(openai, tracer=mock_tracer) pin.tracer._configure(trace_processors=[FilterOrg()]) if ddtrace_global_config.get("_llmobs_enabled", False): diff --git a/tests/contrib/psycopg/test_psycopg.py b/tests/contrib/psycopg/test_psycopg.py index 8e13ecc4128..60f640e65d3 100644 --- a/tests/contrib/psycopg/test_psycopg.py +++ b/tests/contrib/psycopg/test_psycopg.py @@ -42,7 +42,7 @@ def _get_conn(self, service=None): conn = psycopg.connect(**POSTGRES_CONFIG) pin = Pin.get_from(conn) if pin: - pin.clone(service=service, tracer=self.tracer).onto(conn) + pin._clone(service=service, tracer=self.tracer).onto(conn) return conn @@ -140,7 +140,7 @@ def test_psycopg3_connection_with_string(self): configs_arr.append("options='-c statement_timeout=1000 -c lock_timeout=250'") conn = psycopg.connect(" ".join(configs_arr)) - Pin.get_from(conn).clone(service="postgres", tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(service="postgres", tracer=self.tracer).onto(conn) self.assert_conn_is_traced(conn, "postgres") def test_opentracing_propagation(self): @@ -522,7 +522,7 @@ def test_connection_instance_method_patch(self): pin = Pin.get_from(connection) if pin: - pin.clone(service="postgres", tracer=self.tracer).onto(connection) + pin._clone(service="postgres", tracer=self.tracer).onto(connection) query = SQL("""select 'one' as x""") cur = connection.execute(query) diff --git a/tests/contrib/psycopg/test_psycopg_async.py b/tests/contrib/psycopg/test_psycopg_async.py index 7e4fbd59624..30b8ed6c2a2 100644 --- a/tests/contrib/psycopg/test_psycopg_async.py +++ b/tests/contrib/psycopg/test_psycopg_async.py @@ -36,7 +36,7 @@ async def _get_conn(self, service=None): conn = await psycopg.AsyncConnection.connect(**POSTGRES_CONFIG) pin = Pin.get_from(conn) if pin: - pin.clone(service=service, tracer=self.tracer).onto(conn) + pin._clone(service=service, tracer=self.tracer).onto(conn) return conn diff --git a/tests/contrib/psycopg2/test_psycopg.py b/tests/contrib/psycopg2/test_psycopg.py index 902d24d3c0e..fd4d8a02fbe 100644 --- a/tests/contrib/psycopg2/test_psycopg.py +++ b/tests/contrib/psycopg2/test_psycopg.py @@ -49,7 +49,7 @@ def _get_conn(self, service=None): conn = psycopg2.connect(**POSTGRES_CONFIG) pin = Pin.get_from(conn) if pin: - pin.clone(service=service, tracer=self.tracer).onto(conn) + pin._clone(service=service, tracer=self.tracer).onto(conn) return conn @@ -146,7 +146,7 @@ def test_psycopg2_connection_with_string(self): configs_arr.append("options='-c statement_timeout=1000 -c lock_timeout=250'") conn = psycopg2.connect(" ".join(configs_arr)) - Pin.get_from(conn).clone(service="postgres", tracer=self.tracer).onto(conn) + Pin.get_from(conn)._clone(service="postgres", tracer=self.tracer).onto(conn) self.assert_conn_is_traced(conn, "postgres") def test_opentracing_propagation(self): diff --git a/tests/contrib/pylibmc/test.py b/tests/contrib/pylibmc/test.py index 9de012439dc..0dd4e0102bc 100644 --- a/tests/contrib/pylibmc/test.py +++ b/tests/contrib/pylibmc/test.py @@ -316,7 +316,7 @@ def get_client(self): client = pylibmc.Client([url]) client.flush_all() - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) return client, self.tracer @@ -329,7 +329,7 @@ class TestPylibmcPatch(TestPylibmcPatchDefault): def get_client(self): client, tracer = TestPylibmcPatchDefault.get_client(self) - Pin.get_from(client).clone(service=self.TEST_SERVICE).onto(client) + Pin.get_from(client)._clone(service=self.TEST_SERVICE).onto(client) return client, tracer @@ -341,7 +341,7 @@ def test_patch_unpatch(self): patch() client = pylibmc.Client([url]) - Pin.get_from(client).clone(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) client.set("a", 1) @@ -362,7 +362,9 @@ def test_patch_unpatch(self): patch() client = pylibmc.Client([url]) - Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(client) + pin = Pin(service=self.TEST_SERVICE) + pin._tracer = self.tracer + pin.onto(client) client.set("a", 1) spans = self.pop_spans() diff --git a/tests/contrib/pymemcache/test_client.py b/tests/contrib/pymemcache/test_client.py index 19a7a93d523..09c8d33e007 100644 --- a/tests/contrib/pymemcache/test_client.py +++ b/tests/contrib/pymemcache/test_client.py @@ -263,7 +263,7 @@ def test_stats(self): def test_service_name_override(self): client = self.make_client([b"STORED\r\n", b"VALUE key 0 5\r\nvalue\r\nEND\r\n"]) - Pin.override(client, service="testsvcname") + Pin._override(client, service="testsvcname") client.set(b"key", b"value", noreply=False) result = client.get(b"key") assert _str(result) == "value" @@ -280,7 +280,7 @@ def make_client(self, mock_socket_values, **kwargs): from pymemcache.client.hash import HashClient tracer = DummyTracer() - Pin.override(pymemcache, tracer=tracer) + Pin._override(pymemcache, tracer=tracer) self.client = HashClient([(TEST_HOST, TEST_PORT)], **kwargs) class _MockClient(Client): @@ -320,7 +320,7 @@ def test_service_name_override_hashclient(self): client = self.make_client([b"STORED\r\n", b"VALUE key 0 5\r\nvalue\r\nEND\r\n"]) assert len(client.clients) == 1 for _c in client.clients.values(): - Pin.override(_c, service="testsvcname") + Pin._override(_c, service="testsvcname") client.set(b"key", b"value", noreply=False) result = client.get(b"key") assert _str(result) == "value" @@ -332,7 +332,7 @@ def test_service_name_override_hashclient(self): def test_service_name_override_hashclient_pooling(self): client = self.make_client([b""], use_pooling=True) - Pin.override(client, service="testsvcname") + Pin._override(client, service="testsvcname") client.set(b"key", b"value") assert len(client.clients) == 1 spans = self.get_spans() @@ -351,7 +351,7 @@ def tearDown(self): def make_client(self, mock_socket_values, **kwargs): tracer = DummyTracer() - Pin.override(pymemcache, tracer=tracer) + Pin._override(pymemcache, tracer=tracer) self.client = pymemcache.client.base.Client((TEST_HOST, TEST_PORT), **kwargs) self.client.sock = MockSocket(list(mock_socket_values)) return self.client @@ -365,7 +365,7 @@ def test_same_tracer(self): def test_override_parent_pin(self): """Test that the service set on `pymemcache` is used for Clients.""" - Pin.override(pymemcache, service="mysvc") + Pin._override(pymemcache, service="mysvc") client = self.make_client([b"STORED\r\n", b"VALUE key 0 5\r\nvalue\r\nEND\r\n"]) client.set(b"key", b"value", noreply=False) @@ -378,7 +378,7 @@ def test_override_parent_pin(self): def test_override_client_pin(self): """Test that the service set on `pymemcache` is used for Clients.""" client = self.make_client([b"STORED\r\n", b"VALUE key 0 5\r\nvalue\r\nEND\r\n"]) - Pin.override(client, service="mysvc2") + Pin._override(client, service="mysvc2") client.set(b"key", b"value", noreply=False) diff --git a/tests/contrib/pymemcache/test_client_defaults.py b/tests/contrib/pymemcache/test_client_defaults.py index 0b5e44aa3b0..302be1b0abd 100644 --- a/tests/contrib/pymemcache/test_client_defaults.py +++ b/tests/contrib/pymemcache/test_client_defaults.py @@ -18,7 +18,7 @@ def client(tracer): try: patch() - Pin.override(pymemcache, tracer=tracer) + Pin._override(pymemcache, tracer=tracer) with override_config("pymemcache", dict(command_enabled=False)): client = pymemcache.client.base.Client((TEST_HOST, TEST_PORT)) yield client diff --git a/tests/contrib/pymemcache/test_client_mixin.py b/tests/contrib/pymemcache/test_client_mixin.py index 2d471765e1f..b47c6d8b154 100644 --- a/tests/contrib/pymemcache/test_client_mixin.py +++ b/tests/contrib/pymemcache/test_client_mixin.py @@ -68,7 +68,7 @@ def tearDown(self): def make_client(self, mock_socket_values, **kwargs): tracer = DummyTracer() - Pin.override(pymemcache, tracer=tracer) + Pin._override(pymemcache, tracer=tracer) self.client = pymemcache.client.base.Client((TEST_HOST, TEST_PORT), **kwargs) self.client.sock = MockSocket(list(mock_socket_values)) return self.client diff --git a/tests/contrib/pymongo/test.py b/tests/contrib/pymongo/test.py index b6669d40ac0..31bd45b4674 100644 --- a/tests/contrib/pymongo/test.py +++ b/tests/contrib/pymongo/test.py @@ -420,7 +420,7 @@ def test_patch_pymongo_client_after_import(self): tracer = DummyTracer() client = MongoClient(port=MONGO_CONFIG["port"]) # Ensure the dummy tracer is used to create span in the pymongo integration - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) # Ensure that the client is traced client.server_info() spans = tracer.pop() @@ -440,7 +440,7 @@ def tearDown(self): def get_tracer_and_client(self): tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) return tracer, client def test_host_kwarg(self): @@ -471,7 +471,9 @@ def tearDown(self): def get_tracer_and_client(self): client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin(service="pymongo", tracer=self.tracer).onto(client) + pin = Pin(service="pymongo") + pin._tracer = self.tracer + pin.onto(client) return self.tracer, client def test_patch_unpatch(self): @@ -480,7 +482,7 @@ def test_patch_unpatch(self): patch() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) client["testdb"].drop_collection("whatever") spans = self.pop_spans() @@ -500,7 +502,7 @@ def test_patch_unpatch(self): patch() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=self.tracer).onto(client) + Pin.get_from(client)._clone(tracer=self.tracer).onto(client) client["testdb"].drop_collection("whatever") spans = self.pop_spans() @@ -520,7 +522,7 @@ def test_user_specified_service_default(self): tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) client["testdb"].drop_collection("whatever") spans = tracer.pop() assert len(spans) == 2 @@ -539,7 +541,7 @@ def test_user_specified_service_v0(self): tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) client["testdb"].drop_collection("whatever") spans = tracer.pop() assert len(spans) == 2 @@ -559,7 +561,7 @@ def test_user_specified_service_default_override(self): assert cfg.service == "new-mongo", f"service name is {cfg.service}" tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) client["testdb"].drop_collection("whatever") spans = tracer.pop() @@ -579,7 +581,7 @@ def test_user_specified_service_v1(self): tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) client["testdb"].drop_collection("whatever") spans = tracer.pop() assert len(spans) == 2 @@ -593,7 +595,7 @@ def test_unspecified_service_v0(self): """ tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) client["testdb"].drop_collection("whatever") spans = tracer.pop() assert len(spans) == 2 @@ -605,8 +607,10 @@ def test_unspecified_service_v0(self): def test_user_specified_pymongo_service_v0(self): tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin(service="mypymongo", tracer=self.tracer).onto(client) - Pin.get_from(client).clone(tracer=tracer).onto(client) + pin = Pin(service="mypymongo") + pin._tracer = self.tracer + pin.onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) client["testdb"].drop_collection("whatever") spans = tracer.pop() assert len(spans) == 2 @@ -618,8 +622,10 @@ def test_user_specified_pymongo_service_v0(self): def test_user_specified_pymongo_service_v1(self): tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin(service="mypymongo", tracer=self.tracer).onto(client) - Pin.get_from(client).clone(tracer=tracer).onto(client) + pin = Pin(service="mypymongo") + pin._tracer = self.tracer + pin.onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) client["testdb"].drop_collection("whatever") spans = tracer.pop() assert len(spans) == 2 @@ -631,8 +637,10 @@ def test_user_specified_pymongo_service_v1(self): def test_service_precedence_v0(self): tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin(service="mypymongo", tracer=self.tracer).onto(client) - Pin.get_from(client).clone(tracer=tracer).onto(client) + pin = Pin(service="mypymongo") + pin._tracer = self.tracer + pin.onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) client["testdb"].drop_collection("whatever") spans = tracer.pop() assert len(spans) == 2 @@ -644,8 +652,10 @@ def test_service_precedence_v0(self): def test_service_precedence_v1(self): tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin(service="mypymongo", tracer=self.tracer).onto(client) - Pin.get_from(client).clone(tracer=tracer).onto(client) + pin = Pin(service="mypymongo") + pin._tracer = self.tracer + pin.onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) client["testdb"].drop_collection("whatever") spans = tracer.pop() assert len(spans) == 2 @@ -658,7 +668,7 @@ def test_operation_name_v0_schema(self): """ tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) client["testdb"].drop_collection("whatever") spans = tracer.pop() assert len(spans) == 2 @@ -671,7 +681,7 @@ def test_operation_name_v1_schema(self): """ tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) client["testdb"].drop_collection("whatever") spans = tracer.pop() assert len(spans) == 2 @@ -681,7 +691,7 @@ def test_operation_name_v1_schema(self): def test_peer_service_tagging(self): tracer = DummyTracer() client = pymongo.MongoClient(port=MONGO_CONFIG["port"]) - Pin.get_from(client).clone(tracer=tracer).onto(client) + Pin.get_from(client)._clone(tracer=tracer).onto(client) db_name = "testdb" client[db_name].drop_collection("whatever") spans = tracer.pop() @@ -757,13 +767,13 @@ def setUp(self): super(TestPymongoSocketTracing, self).setUp() patch() # Override server pin's tracer with our dummy tracer - Pin.override(Server, tracer=self.tracer) + Pin._override(Server, tracer=self.tracer) # maxPoolSize controls the number of sockets that the client can instantiate # and choose from to perform classic operations. For the sake of our tests, # let's limit this number to 1 self.client = pymongo.MongoClient(port=MONGO_CONFIG["port"], maxPoolSize=1) # Override MongoClient's pin's tracer with our dummy tracer - Pin.override(self.client, tracer=self.tracer, service="testdb") + Pin._override(self.client, tracer=self.tracer, service="testdb") def tearDown(self): unpatch() diff --git a/tests/contrib/pymysql/test_pymysql.py b/tests/contrib/pymysql/test_pymysql.py index e94e03c8395..9638289e6fc 100644 --- a/tests/contrib/pymysql/test_pymysql.py +++ b/tests/contrib/pymysql/test_pymysql.py @@ -347,7 +347,7 @@ def _get_conn_tracer(self): assert pin # Customize the service # we have to apply it on the existing one since new one won't inherit `app` - pin.clone(tracer=self.tracer).onto(self.conn) + pin._clone(tracer=self.tracer).onto(self.conn) return self.conn, self.tracer @@ -363,7 +363,7 @@ def test_patch_unpatch(self): conn = pymysql.connect(**MYSQL_CONFIG) pin = Pin.get_from(conn) assert pin - pin.clone(tracer=self.tracer).onto(conn) + pin._clone(tracer=self.tracer).onto(conn) assert not conn._closed cursor = conn.cursor() @@ -396,7 +396,7 @@ def test_patch_unpatch(self): def test_user_pin_override(self): conn, tracer = self._get_conn_tracer() pin = Pin.get_from(conn) - pin.clone(service="pin-svc", tracer=self.tracer).onto(conn) + pin._clone(service="pin-svc", tracer=self.tracer).onto(conn) cursor = conn.cursor() cursor.execute("SELECT 1") rows = cursor.fetchall() diff --git a/tests/contrib/pynamodb/test_pynamodb.py b/tests/contrib/pynamodb/test_pynamodb.py index 33b4e4c2c14..d0f459011fc 100644 --- a/tests/contrib/pynamodb/test_pynamodb.py +++ b/tests/contrib/pynamodb/test_pynamodb.py @@ -22,7 +22,7 @@ def setUp(self): self.conn.session.set_credentials("aws-access-key", "aws-secret-access-key", "session-token") super(PynamodbTest, self).setUp() - Pin.override(self.conn, tracer=self.tracer) + Pin._override(self.conn, tracer=self.tracer) def tearDown(self): super(PynamodbTest, self).tearDown() @@ -268,7 +268,7 @@ def test_env_user_specified_pynamodb_service(self): # Manual override dynamodb_backend.create_table("Test", hash_key_attr="content", hash_key_type="S") - Pin.override(self.conn, service="mypynamodb", tracer=self.tracer) + Pin._override(self.conn, service="mypynamodb", tracer=self.tracer) list_result = self.conn.list_tables() span = self.get_spans()[0] assert span.service == "mypynamodb", span.service @@ -289,7 +289,7 @@ def test_service_precedence(self): # Manual override dynamodb_backend.create_table("Test", hash_key_attr="content", hash_key_type="S") - Pin.override(self.conn, service="override-pynamodb", tracer=self.tracer) + Pin._override(self.conn, service="override-pynamodb", tracer=self.tracer) list_result = self.conn.list_tables() span = self.get_spans()[0] assert span.service == "override-pynamodb", span.service diff --git a/tests/contrib/pyodbc/test_pyodbc.py b/tests/contrib/pyodbc/test_pyodbc.py index 4c965aede7b..3f78f622ef8 100644 --- a/tests/contrib/pyodbc/test_pyodbc.py +++ b/tests/contrib/pyodbc/test_pyodbc.py @@ -211,7 +211,7 @@ def _get_conn_tracer(self): assert pin # Customize the service # we have to apply it on the existing one since new one won't inherit `app` - pin.clone(tracer=self.tracer).onto(self.conn) + pin._clone(tracer=self.tracer).onto(self.conn) return self.conn, self.tracer @@ -227,7 +227,7 @@ def test_patch_unpatch(self): conn = pyodbc.connect(PYODBC_CONNECT_DSN) pin = Pin.get_from(conn) assert pin - pin.clone(tracer=self.tracer).onto(conn) + pin._clone(tracer=self.tracer).onto(conn) cursor = conn.cursor() cursor.execute("SELECT 1") @@ -256,7 +256,7 @@ def test_patch_unpatch(self): def test_user_pin_override(self): conn, tracer = self._get_conn_tracer() pin = Pin.get_from(conn) - pin.clone(service="pin-svc", tracer=self.tracer).onto(conn) + pin._clone(service="pin-svc", tracer=self.tracer).onto(conn) cursor = conn.cursor() cursor.execute("SELECT 1") rows = cursor.fetchall() diff --git a/tests/contrib/redis/test_redis.py b/tests/contrib/redis/test_redis.py index fb83f6f53fc..7a5ee5d92a0 100644 --- a/tests/contrib/redis/test_redis.py +++ b/tests/contrib/redis/test_redis.py @@ -25,7 +25,7 @@ def setUp(self): patch() r = redis.Redis(port=self.TEST_PORT) r.flushall() - Pin.override(r, tracer=self.tracer) + Pin._override(r, tracer=self.tracer) self.r = r def tearDown(self): @@ -194,7 +194,7 @@ def test_meta_override(self): r = self.r pin = Pin.get_from(r) if pin: - pin.clone(tags={"cheese": "camembert"}).onto(r) + pin._clone(tags={"cheese": "camembert"}).onto(r) r.get("cheese") spans = self.get_spans() @@ -211,7 +211,7 @@ def test_patch_unpatch(self): patch() r = redis.Redis(port=REDIS_CONFIG["port"]) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -231,7 +231,7 @@ def test_patch_unpatch(self): patch() r = redis.Redis(port=REDIS_CONFIG["port"]) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -429,7 +429,7 @@ def test_env_user_specified_redis_service_v0(self): self.reset() # Manual override - Pin.override(self.r, service="mysvc", tracer=self.tracer) + Pin._override(self.r, service="mysvc", tracer=self.tracer) self.r.get("cheese") span = self.get_spans()[0] assert span.service == "mysvc", span.service @@ -447,7 +447,7 @@ def test_service_precedence_v0(self): self.reset() # Do a manual override - Pin.override(self.r, service="override-redis", tracer=self.tracer) + Pin._override(self.r, service="override-redis", tracer=self.tracer) self.r.get("cheese") span = self.get_spans()[0] assert span.service == "override-redis", span.service @@ -501,7 +501,7 @@ def test_meta_override(self): r = self.r pin = Pin.get_from(r) if pin: - pin.clone(tags={"cheese": "camembert"}).onto(r) + pin._clone(tags={"cheese": "camembert"}).onto(r) r.get("cheese") @@ -513,7 +513,7 @@ def test_patch_unpatch(self): patch() r = redis.Redis(port=REDIS_CONFIG["port"]) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -533,7 +533,7 @@ def test_patch_unpatch(self): patch() r = redis.Redis(port=REDIS_CONFIG["port"]) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -576,7 +576,7 @@ def test_env_user_specified_redis_service(self): self.reset() # Manual override - Pin.override(self.r, service="mysvc", tracer=self.tracer) + Pin._override(self.r, service="mysvc", tracer=self.tracer) self.r.get("cheese") @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="app-svc", DD_REDIS_SERVICE="env-redis")) @@ -587,7 +587,7 @@ def test_service_precedence(self): self.reset() # Do a manual override - Pin.override(self.r, service="override-redis", tracer=self.tracer) + Pin._override(self.r, service="override-redis", tracer=self.tracer) self.r.get("cheese") @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_REDIS_CMD_MAX_LENGTH="10")) diff --git a/tests/contrib/redis/test_redis_asyncio.py b/tests/contrib/redis/test_redis_asyncio.py index b1bd5858e04..72fc0f47c63 100644 --- a/tests/contrib/redis/test_redis_asyncio.py +++ b/tests/contrib/redis/test_redis_asyncio.py @@ -130,7 +130,7 @@ async def test_override_service_name(redis_client): @pytest.mark.snapshot(wait_for_num_traces=1) async def test_pin(redis_client): - Pin.override(redis_client, service="my-redis") + Pin._override(redis_client, service="my-redis") val = await redis_client.get("cheese") assert val is None diff --git a/tests/contrib/redis/test_redis_cluster.py b/tests/contrib/redis/test_redis_cluster.py index 2731a18fcee..54fb778987a 100644 --- a/tests/contrib/redis/test_redis_cluster.py +++ b/tests/contrib/redis/test_redis_cluster.py @@ -26,7 +26,7 @@ def setUp(self): patch() r = self._get_test_client() r.flushall() - Pin.override(r, tracer=self.tracer) + Pin._override(r, tracer=self.tracer) self.r = r def tearDown(self): @@ -103,7 +103,7 @@ def test_patch_unpatch(self): patch() r = self._get_test_client() - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -123,7 +123,7 @@ def test_patch_unpatch(self): patch() r = self._get_test_client() - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -142,7 +142,7 @@ def test_user_specified_service_v0(self): assert config.service == "mysvc" r = self._get_test_client() - Pin.get_from(r).clone(tracer=self.tracer).onto(r) + Pin.get_from(r)._clone(tracer=self.tracer).onto(r) r.get("key") spans = self.get_spans() @@ -162,7 +162,7 @@ def test_user_specified_service_v1(self): assert config.service == "mysvc" r = self._get_test_client() - Pin.get_from(r).clone(tracer=self.tracer).onto(r) + Pin.get_from(r)._clone(tracer=self.tracer).onto(r) r.get("key") spans = self.get_spans() diff --git a/tests/contrib/redis/test_redis_cluster_asyncio.py b/tests/contrib/redis/test_redis_cluster_asyncio.py index b8624c533aa..65b6a2348d3 100644 --- a/tests/contrib/redis/test_redis_cluster_asyncio.py +++ b/tests/contrib/redis/test_redis_cluster_asyncio.py @@ -28,7 +28,7 @@ async def traced_redis_cluster(tracer, test_spans): startup_nodes = [redis.asyncio.cluster.ClusterNode(TEST_HOST, int(port)) for port in TEST_PORTS.split(",")] redis_cluster = redis.asyncio.cluster.RedisCluster(startup_nodes=startup_nodes) await redis_cluster.flushall() - Pin.override(redis_cluster, tracer=tracer) + Pin._override(redis_cluster, tracer=tracer) try: yield redis_cluster, test_spans finally: @@ -125,7 +125,7 @@ async def test_patch_unpatch(redis_cluster): patch() r = redis_cluster - Pin.override(r, tracer=tracer) + Pin._override(r, tracer=tracer) await r.get("key") spans = tracer.pop() @@ -145,7 +145,7 @@ async def test_patch_unpatch(redis_cluster): patch() r = redis_cluster - Pin.override(r, tracer=tracer) + Pin._override(r, tracer=tracer) await r.get("key") spans = tracer.pop() @@ -182,7 +182,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -231,7 +231,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -280,7 +280,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -321,7 +321,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -362,7 +362,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -411,7 +411,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -456,7 +456,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() diff --git a/tests/contrib/rediscluster/test.py b/tests/contrib/rediscluster/test.py index a2c5ac5c6b2..79b4c806440 100644 --- a/tests/contrib/rediscluster/test.py +++ b/tests/contrib/rediscluster/test.py @@ -43,7 +43,7 @@ def setUp(self): patch() r = _get_test_client() r.flushall() - Pin.override(r, tracer=self.tracer) + Pin._override(r, tracer=self.tracer) self.r = r def tearDown(self): @@ -115,7 +115,7 @@ def test_patch_unpatch(self): patch() r = _get_test_client() - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -135,7 +135,7 @@ def test_patch_unpatch(self): patch() r = _get_test_client() - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -154,7 +154,7 @@ def test_user_specified_service_v0(self): assert config.service == "mysvc" r = _get_test_client() - Pin.get_from(r).clone(tracer=self.tracer).onto(r) + Pin.get_from(r)._clone(tracer=self.tracer).onto(r) r.get("key") spans = self.get_spans() @@ -174,7 +174,7 @@ def test_user_specified_service_v1(self): assert config.service == "mysvc" r = _get_test_client() - Pin.get_from(r).clone(tracer=self.tracer).onto(r) + Pin.get_from(r)._clone(tracer=self.tracer).onto(r) r.get("key") spans = self.get_spans() @@ -189,7 +189,7 @@ def test_unspecified_service_v1(self): the default span service name """ r = _get_test_client() - Pin.get_from(r).clone(tracer=self.tracer).onto(r) + Pin.get_from(r)._clone(tracer=self.tracer).onto(r) r.get("key") spans = self.get_spans() @@ -220,7 +220,7 @@ def test_span_name_v0_schema(self): the default span service name """ r = _get_test_client() - Pin.get_from(r).clone(tracer=self.tracer).onto(r) + Pin.get_from(r)._clone(tracer=self.tracer).onto(r) r.get("key") spans = self.get_spans() @@ -235,7 +235,7 @@ def test_span_name_v1_schema(self): the default span service name """ r = _get_test_client() - Pin.get_from(r).clone(tracer=self.tracer).onto(r) + Pin.get_from(r)._clone(tracer=self.tracer).onto(r) r.get("key") spans = self.get_spans() diff --git a/tests/contrib/rq/test_rq.py b/tests/contrib/rq/test_rq.py index d72871823da..65908ac9717 100644 --- a/tests/contrib/rq/test_rq.py +++ b/tests/contrib/rq/test_rq.py @@ -117,7 +117,7 @@ def test_sync_worker_config_service(queue): @snapshot(ignores=snapshot_ignores) def test_queue_pin_service(queue): - Pin.override(queue, service="my-pin-svc") + Pin._override(queue, service="my-pin-svc") job = queue.enqueue(job_add1, 10) worker = rq.SimpleWorker([queue], connection=queue.connection) worker.work(burst=True) @@ -128,7 +128,7 @@ def test_queue_pin_service(queue): def test_sync_worker_pin_service(queue): job = queue.enqueue(job_add1, 10) worker = rq.SimpleWorker([queue], connection=queue.connection) - Pin.override(worker, service="my-pin-svc") + Pin._override(worker, service="my-pin-svc") worker.work(burst=True) assert job.result == 11 diff --git a/tests/contrib/shared_tests.py b/tests/contrib/shared_tests.py index cf647a15628..dfc3b5e6a0a 100644 --- a/tests/contrib/shared_tests.py +++ b/tests/contrib/shared_tests.py @@ -72,8 +72,8 @@ def _test_dbm_propagation_comment_pin_service_name_override( """tests if dbm comment is set in mysql""" db_name = config["db"] - Pin.override(conn, service="pin-service-name-override", tracer=tracer) - Pin.override(cursor, service="pin-service-name-override", tracer=tracer) + Pin._override(conn, service="pin-service-name-override", tracer=tracer) + Pin._override(cursor, service="pin-service-name-override", tracer=tracer) dbm_comment = ( f"/*dddb='{db_name}',dddbs='pin-service-name-override',dde='staging',ddh='127.0.0.1',ddps='orders-app'," diff --git a/tests/contrib/shared_tests_async.py b/tests/contrib/shared_tests_async.py index 0d49f09d608..f06b6d278f5 100644 --- a/tests/contrib/shared_tests_async.py +++ b/tests/contrib/shared_tests_async.py @@ -72,8 +72,8 @@ async def _test_dbm_propagation_comment_pin_service_name_override( """tests if dbm comment is set in mysql""" db_name = config["db"] - Pin.override(conn, service="pin-service-name-override", tracer=tracer) - Pin.override(cursor, service="pin-service-name-override", tracer=tracer) + Pin._override(conn, service="pin-service-name-override", tracer=tracer) + Pin._override(cursor, service="pin-service-name-override", tracer=tracer) dbm_comment = ( f"/*dddb='{db_name}',dddbs='pin-service-name-override',dde='staging',ddh='127.0.0.1',ddps='orders-app'," diff --git a/tests/contrib/sqlalchemy/test_patch.py b/tests/contrib/sqlalchemy/test_patch.py index a6f08bb5f46..35245d5a906 100644 --- a/tests/contrib/sqlalchemy/test_patch.py +++ b/tests/contrib/sqlalchemy/test_patch.py @@ -25,7 +25,7 @@ def setUp(self): patch() dsn = "postgresql://%(user)s:%(password)s@%(host)s:%(port)s/%(dbname)s" % POSTGRES_CONFIG self.engine = sqlalchemy.create_engine(dsn) - Pin.override(self.engine, tracer=self.tracer) + Pin._override(self.engine, tracer=self.tracer) # prepare a connection self.conn = self.engine.connect() @@ -57,7 +57,7 @@ def test_engine_traced(self): def test_engine_pin_service(self): # ensures that the engine service is updated with the PIN object - Pin.override(self.engine, service="replica-db") + Pin._override(self.engine, service="replica-db") rows = self.conn.execute(text("SELECT 1")).fetchall() assert len(rows) == 1 diff --git a/tests/contrib/sqlite3/test_sqlite3.py b/tests/contrib/sqlite3/test_sqlite3.py index 6101dcfa081..df1bbdbabc5 100644 --- a/tests/contrib/sqlite3/test_sqlite3.py +++ b/tests/contrib/sqlite3/test_sqlite3.py @@ -64,7 +64,7 @@ def test_sqlite(self): db = sqlite3.connect(":memory:") pin = Pin.get_from(db) assert pin - pin.clone(service=service, tracer=self.tracer).onto(db) + pin._clone(service=service, tracer=self.tracer).onto(db) # Ensure we can run a query and it's correctly traced q = "select * from sqlite_master" @@ -216,7 +216,7 @@ def test_sqlite_ot(self): db = sqlite3.connect(":memory:") pin = Pin.get_from(db) assert pin - pin.clone(tracer=self.tracer).onto(db) + pin._clone(tracer=self.tracer).onto(db) cursor = db.execute(q) rows = cursor.fetchall() assert not rows @@ -233,7 +233,7 @@ def test_sqlite_ot(self): db = sqlite3.connect(":memory:") pin = Pin.get_from(db) assert pin - pin.clone(tracer=self.tracer).onto(db) + pin._clone(tracer=self.tracer).onto(db) cursor = db.execute(q) rows = cursor.fetchall() assert not rows @@ -270,7 +270,7 @@ def test_patch_unpatch(self): db = sqlite3.connect(":memory:") pin = Pin.get_from(db) assert pin - pin.clone(tracer=self.tracer).onto(db) + pin._clone(tracer=self.tracer).onto(db) db.cursor().execute("select 'blah'").fetchall() self.assert_structure( @@ -292,7 +292,7 @@ def test_patch_unpatch(self): db = sqlite3.connect(":memory:") pin = Pin.get_from(db) assert pin - pin.clone(tracer=self.tracer).onto(db) + pin._clone(tracer=self.tracer).onto(db) db.cursor().execute("select 'blah'").fetchall() self.assert_structure( @@ -301,7 +301,7 @@ def test_patch_unpatch(self): def _given_a_traced_connection(self, tracer): db = sqlite3.connect(":memory:") - Pin.get_from(db).clone(tracer=tracer).onto(db) + Pin.get_from(db)._clone(tracer=tracer).onto(db) return db @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) diff --git a/tests/contrib/starlette/test_starlette.py b/tests/contrib/starlette/test_starlette.py index f290ade8ea7..78b7ac135fe 100644 --- a/tests/contrib/starlette/test_starlette.py +++ b/tests/contrib/starlette/test_starlette.py @@ -38,7 +38,7 @@ def engine(): def tracer(engine): original_tracer = ddtrace.tracer tracer = DummyTracer() - Pin.override(engine, tracer=tracer) + Pin._override(engine, tracer=tracer) ddtrace.tracer = tracer starlette_patch() yield tracer diff --git a/tests/contrib/subprocess/test_subprocess.py b/tests/contrib/subprocess/test_subprocess.py index 40e7ab67431..f9084d23db1 100644 --- a/tests/contrib/subprocess/test_subprocess.py +++ b/tests/contrib/subprocess/test_subprocess.py @@ -194,7 +194,7 @@ def test_truncation(cmdline_obj, expected_str, expected_list, truncated): def test_ossystem(tracer): with override_global_config(dict(_asm_enabled=True)): patch() - Pin.get_from(os).clone(tracer=tracer).onto(os) + Pin.get_from(os)._clone(tracer=tracer).onto(os) with tracer.trace("ossystem_test"): ret = os.system("dir -l /") assert ret == 0 @@ -215,7 +215,7 @@ def test_ossystem(tracer): def test_fork(tracer): with override_global_config(dict(_asm_enabled=True)): patch() - Pin.get_from(os).clone(tracer=tracer).onto(os) + Pin.get_from(os)._clone(tracer=tracer).onto(os) with tracer.trace("ossystem_test"): pid = os.fork() if pid == 0: @@ -241,7 +241,7 @@ def test_fork(tracer): def test_unpatch(tracer): with override_global_config(dict(_asm_enabled=True)): patch() - Pin.get_from(os).clone(tracer=tracer).onto(os) + Pin.get_from(os)._clone(tracer=tracer).onto(os) with tracer.trace("os.system"): ret = os.system("dir -l /") assert ret == 0 @@ -254,7 +254,7 @@ def test_unpatch(tracer): unpatch() with override_global_config(dict(_asm_enabled=True)): - Pin.get_from(os).clone(tracer=tracer).onto(os) + Pin.get_from(os)._clone(tracer=tracer).onto(os) with tracer.trace("os.system_unpatch"): ret = os.system("dir -l /") assert ret == 0 @@ -283,7 +283,7 @@ def test_ossystem_noappsec(tracer): def test_ospopen(tracer): with override_global_config(dict(_asm_enabled=True)): patch() - Pin.get_from(subprocess).clone(tracer=tracer).onto(subprocess) + Pin.get_from(subprocess)._clone(tracer=tracer).onto(subprocess) with tracer.trace("os.popen"): pipe = os.popen("dir -li /") content = pipe.read() @@ -330,7 +330,7 @@ def test_ospopen(tracer): def test_osspawn_variants(tracer, function, mode, arguments): with override_global_config(dict(_asm_enabled=True)): patch() - Pin.get_from(os).clone(tracer=tracer).onto(os) + Pin.get_from(os)._clone(tracer=tracer).onto(os) if "_" in function.__name__: # wrapt changes function names when debugging @@ -369,7 +369,7 @@ def test_osspawn_variants(tracer, function, mode, arguments): def test_subprocess_init_shell_true(tracer): with override_global_config(dict(_asm_enabled=True)): patch() - Pin.get_from(subprocess).clone(tracer=tracer).onto(subprocess) + Pin.get_from(subprocess)._clone(tracer=tracer).onto(subprocess) with tracer.trace("subprocess.Popen.init", span_type=SpanTypes.SYSTEM): subp = subprocess.Popen(["dir", "-li", "/"], shell=True) subp.wait() @@ -389,7 +389,7 @@ def test_subprocess_init_shell_true(tracer): def test_subprocess_init_shell_false(tracer): with override_global_config(dict(_asm_enabled=True)): patch() - Pin.get_from(subprocess).clone(tracer=tracer).onto(subprocess) + Pin.get_from(subprocess)._clone(tracer=tracer).onto(subprocess) with tracer.trace("subprocess.Popen.init", span_type=SpanTypes.SYSTEM): subp = subprocess.Popen(["dir", "-li", "/"], shell=False) subp.wait() @@ -406,7 +406,7 @@ def test_subprocess_wait_shell_false(tracer): args = ["dir", "-li", "/"] with override_global_config(dict(_asm_enabled=True)): patch() - Pin.get_from(subprocess).clone(tracer=tracer).onto(subprocess) + Pin.get_from(subprocess)._clone(tracer=tracer).onto(subprocess) with tracer.trace("subprocess.Popen.init", span_type=SpanTypes.SYSTEM): subp = subprocess.Popen(args=args, shell=False) subp.wait() @@ -419,7 +419,7 @@ def test_subprocess_wait_shell_false(tracer): def test_subprocess_wait_shell_true(tracer): with override_global_config(dict(_asm_enabled=True)): patch() - Pin.get_from(subprocess).clone(tracer=tracer).onto(subprocess) + Pin.get_from(subprocess)._clone(tracer=tracer).onto(subprocess) with tracer.trace("subprocess.Popen.init", span_type=SpanTypes.SYSTEM): subp = subprocess.Popen(args=["dir", "-li", "/"], shell=True) subp.wait() @@ -430,7 +430,7 @@ def test_subprocess_wait_shell_true(tracer): def test_subprocess_run(tracer): with override_global_config(dict(_asm_enabled=True)): patch() - Pin.get_from(subprocess).clone(tracer=tracer).onto(subprocess) + Pin.get_from(subprocess)._clone(tracer=tracer).onto(subprocess) with tracer.trace("subprocess.Popen.wait"): result = subprocess.run(["dir", "-l", "/"], shell=True) assert result.returncode == 0 @@ -451,7 +451,7 @@ def test_subprocess_run(tracer): def test_subprocess_communicate(tracer): with override_global_config(dict(_asm_enabled=True)): patch() - Pin.get_from(subprocess).clone(tracer=tracer).onto(subprocess) + Pin.get_from(subprocess)._clone(tracer=tracer).onto(subprocess) with tracer.trace("subprocess.Popen.wait"): subp = subprocess.Popen(args=["dir", "-li", "/"], shell=True) subp.communicate() diff --git a/tests/contrib/urllib3/test_urllib3.py b/tests/contrib/urllib3/test_urllib3.py index 24ba7815e56..370c08c7904 100644 --- a/tests/contrib/urllib3/test_urllib3.py +++ b/tests/contrib/urllib3/test_urllib3.py @@ -35,7 +35,7 @@ def setUp(self): patch() self.http = urllib3.PoolManager() - Pin.override(urllib3.connectionpool.HTTPConnectionPool, tracer=self.tracer) + Pin._override(urllib3.connectionpool.HTTPConnectionPool, tracer=self.tracer) def tearDown(self): super(BaseUrllib3TestCase, self).tearDown() diff --git a/tests/contrib/valkey/test_valkey.py b/tests/contrib/valkey/test_valkey.py index d546767c09c..772418dcc16 100644 --- a/tests/contrib/valkey/test_valkey.py +++ b/tests/contrib/valkey/test_valkey.py @@ -25,7 +25,7 @@ def setUp(self): patch() r = valkey.Valkey(port=self.TEST_PORT) r.flushall() - Pin.override(r, tracer=self.tracer) + Pin._override(r, tracer=self.tracer) self.r = r def tearDown(self): @@ -194,7 +194,7 @@ def test_meta_override(self): r = self.r pin = Pin.get_from(r) if pin: - pin.clone(tags={"cheese": "camembert"}).onto(r) + pin._clone(tags={"cheese": "camembert"}).onto(r) r.get("cheese") spans = self.get_spans() @@ -211,7 +211,7 @@ def test_patch_unpatch(self): patch() r = valkey.Valkey(port=VALKEY_CONFIG["port"]) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -231,7 +231,7 @@ def test_patch_unpatch(self): patch() r = valkey.Valkey(port=VALKEY_CONFIG["port"]) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -429,7 +429,7 @@ def test_env_user_specified_valkey_service_v0(self): self.reset() # Manual override - Pin.override(self.r, service="mysvc", tracer=self.tracer) + Pin._override(self.r, service="mysvc", tracer=self.tracer) self.r.get("cheese") span = self.get_spans()[0] assert span.service == "mysvc", span.service @@ -447,7 +447,7 @@ def test_service_precedence_v0(self): self.reset() # Do a manual override - Pin.override(self.r, service="override-valkey", tracer=self.tracer) + Pin._override(self.r, service="override-valkey", tracer=self.tracer) self.r.get("cheese") span = self.get_spans()[0] assert span.service == "override-valkey", span.service @@ -501,7 +501,7 @@ def test_meta_override(self): r = self.r pin = Pin.get_from(r) if pin: - pin.clone(tags={"cheese": "camembert"}).onto(r) + pin._clone(tags={"cheese": "camembert"}).onto(r) r.get("cheese") @@ -513,7 +513,7 @@ def test_patch_unpatch(self): patch() r = valkey.Valkey(port=VALKEY_CONFIG["port"]) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -533,7 +533,7 @@ def test_patch_unpatch(self): patch() r = valkey.Valkey(port=VALKEY_CONFIG["port"]) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -572,7 +572,7 @@ def test_env_user_specified_valkey_service(self): self.reset() # Manual override - Pin.override(self.r, service="mysvc", tracer=self.tracer) + Pin._override(self.r, service="mysvc", tracer=self.tracer) self.r.get("cheese") @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="app-svc", DD_VALKEY_SERVICE="env-valkey")) @@ -583,7 +583,7 @@ def test_service_precedence(self): self.reset() # Do a manual override - Pin.override(self.r, service="override-valkey", tracer=self.tracer) + Pin._override(self.r, service="override-valkey", tracer=self.tracer) self.r.get("cheese") @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_VALKEY_CMD_MAX_LENGTH="10")) diff --git a/tests/contrib/valkey/test_valkey_asyncio.py b/tests/contrib/valkey/test_valkey_asyncio.py index 64743a7770b..cce88912d65 100644 --- a/tests/contrib/valkey/test_valkey_asyncio.py +++ b/tests/contrib/valkey/test_valkey_asyncio.py @@ -130,7 +130,7 @@ async def test_override_service_name(valkey_client): @pytest.mark.snapshot(wait_for_num_traces=1) async def test_pin(valkey_client): - Pin.override(valkey_client, service="my-valkey") + Pin._override(valkey_client, service="my-valkey") val = await valkey_client.get("cheese") assert val is None diff --git a/tests/contrib/valkey/test_valkey_cluster.py b/tests/contrib/valkey/test_valkey_cluster.py index 3876426d25d..bd765dbff96 100644 --- a/tests/contrib/valkey/test_valkey_cluster.py +++ b/tests/contrib/valkey/test_valkey_cluster.py @@ -24,7 +24,7 @@ def setUp(self): patch() r = self._get_test_client() r.flushall() - Pin.override(r, tracer=self.tracer) + Pin._override(r, tracer=self.tracer) self.r = r def tearDown(self): @@ -101,7 +101,7 @@ def test_patch_unpatch(self): patch() r = self._get_test_client() - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -121,7 +121,7 @@ def test_patch_unpatch(self): patch() r = self._get_test_client() - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) r.get("key") spans = tracer.pop() @@ -140,7 +140,7 @@ def test_user_specified_service_v0(self): assert config.service == "mysvc" r = self._get_test_client() - Pin.get_from(r).clone(tracer=self.tracer).onto(r) + Pin.get_from(r)._clone(tracer=self.tracer).onto(r) r.get("key") spans = self.get_spans() @@ -160,7 +160,7 @@ def test_user_specified_service_v1(self): assert config.service == "mysvc" r = self._get_test_client() - Pin.get_from(r).clone(tracer=self.tracer).onto(r) + Pin.get_from(r)._clone(tracer=self.tracer).onto(r) r.get("key") spans = self.get_spans() diff --git a/tests/contrib/valkey/test_valkey_cluster_asyncio.py b/tests/contrib/valkey/test_valkey_cluster_asyncio.py index 8f63aa9d542..a5e4db415b0 100644 --- a/tests/contrib/valkey/test_valkey_cluster_asyncio.py +++ b/tests/contrib/valkey/test_valkey_cluster_asyncio.py @@ -28,7 +28,7 @@ async def traced_valkey_cluster(tracer, test_spans): startup_nodes = [valkey.asyncio.cluster.ClusterNode(TEST_HOST, int(port)) for port in TEST_PORTS.split(",")] valkey_cluster = valkey.asyncio.cluster.ValkeyCluster(startup_nodes=startup_nodes) await valkey_cluster.flushall() - Pin.override(valkey_cluster, tracer=tracer) + Pin._override(valkey_cluster, tracer=tracer) try: yield valkey_cluster, test_spans finally: @@ -119,7 +119,7 @@ async def test_patch_unpatch(valkey_cluster): patch() r = valkey_cluster - Pin.override(r, tracer=tracer) + Pin._override(r, tracer=tracer) await r.get("key") spans = tracer.pop() @@ -139,7 +139,7 @@ async def test_patch_unpatch(valkey_cluster): patch() r = valkey_cluster - Pin.override(r, tracer=tracer) + Pin._override(r, tracer=tracer) await r.get("key") spans = tracer.pop() @@ -175,7 +175,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -223,7 +223,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -271,7 +271,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -311,7 +311,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -351,7 +351,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -399,7 +399,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() @@ -443,7 +443,7 @@ async def test(): tracer = DummyTracer() test_spans = TracerSpanContainer(tracer) - Pin.get_from(r).clone(tracer=tracer).onto(r) + Pin.get_from(r)._clone(tracer=tracer).onto(r) await r.get("key") await r.close() diff --git a/tests/contrib/vertexai/conftest.py b/tests/contrib/vertexai/conftest.py index 0b2b976b610..173551a219a 100644 --- a/tests/contrib/vertexai/conftest.py +++ b/tests/contrib/vertexai/conftest.py @@ -43,7 +43,7 @@ def mock_tracer(ddtrace_global_config, vertexai): try: pin = Pin.get_from(vertexai) mock_tracer = DummyTracer(writer=DummyWriter(trace_flush_enabled=False)) - pin.override(vertexai, tracer=mock_tracer) + pin._override(vertexai, tracer=mock_tracer) pin.tracer._configure() if ddtrace_global_config.get("_llmobs_enabled", False): # Have to disable and re-enable LLMObs to use the mock tracer. diff --git a/tests/contrib/vertica/test_vertica.py b/tests/contrib/vertica/test_vertica.py index d3fb9709bea..2c0d554c01a 100644 --- a/tests/contrib/vertica/test_vertica.py +++ b/tests/contrib/vertica/test_vertica.py @@ -130,7 +130,7 @@ def test_configuration_service_name(self): conn = vertica_python.connect(**VERTICA_CONFIG) cur = conn.cursor() - Pin.override(cur, tracer=test_tracer) + Pin._override(cur, tracer=test_tracer) with conn: cur.execute("DROP TABLE IF EXISTS {}".format(TEST_TABLE)) spans = test_tracer.pop() @@ -163,7 +163,7 @@ def test_configuration_routine(self): test_tracer = DummyTracer() conn = vertica_python.connect(**VERTICA_CONFIG) - Pin.override(conn, service="mycustomservice", tracer=test_tracer) + Pin._override(conn, service="mycustomservice", tracer=test_tracer) conn.cursor() # should be traced now conn.close() spans = test_tracer.pop() @@ -175,7 +175,7 @@ def test_execute_metadata(self): """Metadata related to an `execute` call should be captured.""" conn, cur = self.test_conn - Pin.override(cur, tracer=self.test_tracer) + Pin._override(cur, tracer=self.test_tracer) with conn: cur.execute("INSERT INTO {} (a, b) VALUES (1, 'aa');".format(TEST_TABLE)) @@ -206,7 +206,7 @@ def test_cursor_override(self): """Test overriding the tracer with our own.""" conn, cur = self.test_conn - Pin.override(cur, tracer=self.test_tracer) + Pin._override(cur, tracer=self.test_tracer) with conn: cur.execute("INSERT INTO {} (a, b) VALUES (1, 'aa');".format(TEST_TABLE)) @@ -403,7 +403,7 @@ def test_user_specified_service_default(self): assert config.service == "mysvc" conn, cur = self.test_conn - Pin.override(cur, tracer=self.test_tracer) + Pin._override(cur, tracer=self.test_tracer) with conn: cur.execute("INSERT INTO {} (a, b) VALUES (1, 'aa');".format(TEST_TABLE)) cur.execute("SELECT * FROM {};".format(TEST_TABLE)) @@ -427,7 +427,7 @@ def test_user_specified_service_v0(self): assert config.service == "mysvc" conn, cur = self.test_conn - Pin.override(cur, tracer=self.test_tracer) + Pin._override(cur, tracer=self.test_tracer) with conn: cur.execute("INSERT INTO {} (a, b) VALUES (1, 'aa');".format(TEST_TABLE)) cur.execute("SELECT * FROM {};".format(TEST_TABLE)) @@ -451,7 +451,7 @@ def test_user_specified_service_v1(self): assert config.service == "mysvc" conn, cur = self.test_conn - Pin.override(cur, tracer=self.test_tracer) + Pin._override(cur, tracer=self.test_tracer) with conn: cur.execute("INSERT INTO {} (a, b) VALUES (1, 'aa');".format(TEST_TABLE)) cur.execute("SELECT * FROM {};".format(TEST_TABLE)) @@ -469,7 +469,7 @@ def test_unspecified_service_v0(self): should result in the default DD_SERVICE the span service """ conn, cur = self.test_conn - Pin.override(cur, tracer=self.test_tracer) + Pin._override(cur, tracer=self.test_tracer) with conn: cur.execute("INSERT INTO {} (a, b) VALUES (1, 'aa');".format(TEST_TABLE)) cur.execute("SELECT * FROM {};".format(TEST_TABLE)) @@ -487,7 +487,7 @@ def test_unspecified_service_v1(self): should result in the default DD_SERVICE the span service """ conn, cur = self.test_conn - Pin.override(cur, tracer=self.test_tracer) + Pin._override(cur, tracer=self.test_tracer) with conn: cur.execute("INSERT INTO {} (a, b) VALUES (1, 'aa');".format(TEST_TABLE)) cur.execute("SELECT * FROM {};".format(TEST_TABLE)) diff --git a/tests/contrib/yaaredis/test_yaaredis.py b/tests/contrib/yaaredis/test_yaaredis.py index 350b323de9c..df064817aef 100644 --- a/tests/contrib/yaaredis/test_yaaredis.py +++ b/tests/contrib/yaaredis/test_yaaredis.py @@ -115,7 +115,7 @@ async def test_pipeline_immediate(snapshot_context, traced_yaaredis): async def test_meta_override(tracer, test_spans, traced_yaaredis): pin = Pin.get_from(traced_yaaredis) assert pin is not None - pin.clone(tags={"cheese": "camembert"}, tracer=tracer).onto(traced_yaaredis) + pin._clone(tags={"cheese": "camembert"}, tracer=tracer).onto(traced_yaaredis) await traced_yaaredis.get("cheese") test_spans.assert_trace_count(1) @@ -130,7 +130,7 @@ async def test_meta_override(tracer, test_spans, traced_yaaredis): @pytest.mark.asyncio async def test_service_name(tracer, test_spans, traced_yaaredis): service = str(uuid.uuid4()) - Pin.override(traced_yaaredis, service=service, tracer=tracer) + Pin._override(traced_yaaredis, service=service, tracer=tracer) await traced_yaaredis.set("cheese", "1") test_spans.assert_trace_count(1) @@ -142,7 +142,7 @@ async def test_service_name(tracer, test_spans, traced_yaaredis): async def test_service_name_config(tracer, test_spans, traced_yaaredis): service = str(uuid.uuid4()) with override_config("yaaredis", dict(service=service)): - Pin.override(traced_yaaredis, tracer=tracer) + Pin._override(traced_yaaredis, tracer=tracer) await traced_yaaredis.set("cheese", "1") test_spans.assert_trace_count(1) test_spans.assert_span_count(1)