Skip to content

Commit

Permalink
Fix formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
thomasdesr committed Jun 28, 2020
1 parent a06bfea commit a72e0be
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@
---
"""

import json
import hashlib
import json

import asyncpg
import wrapt
Expand Down Expand Up @@ -68,7 +68,9 @@ def _mask_parameters(parameters):
return ":".join((m.name, m.hexdigest()))


def _hydrate_span_from_args(connection, query, parameters, mask_parameters=True) -> dict:
def _hydrate_span_from_args(
connection, query, parameters, mask_parameters=True
) -> dict:
span_attributes = {"db.type": "sql"}

params = getattr(connection, "_params", None)
Expand All @@ -82,13 +84,15 @@ def _hydrate_span_from_args(connection, query, parameters, mask_parameters=True)
if mask_parameters:
parameters = _mask_parameters(parameters)

span_attributes["db.statement.parameters"] = str(parameters)
span_attributes["db.statement.parameters"] = str(parameters)

return span_attributes


class AsyncPGInstrumentor(BaseInstrumentor):
def _instrument(self, capture_parameters=False, mask_parameters=True, **kwargs):
def _instrument(
self, capture_parameters=False, mask_parameters=True, **kwargs
):
tracer_provider = kwargs.get(
"tracer_provider", trace.get_tracer_provider()
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -196,15 +196,16 @@ def test_instrumented_method_doesnt_capture_parameters(self, *_, **__):
)



class TestFunctionalAsyncPG_CaptureParametersUnmasked(TestBase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls._connection = None
cls._cursor = None
cls._tracer = cls.tracer_provider.get_tracer(__name__)
AsyncPGInstrumentor(capture_parameters=True, mask_parameters=False).instrument(tracer_provider=cls.tracer_provider)
AsyncPGInstrumentor(
capture_parameters=True, mask_parameters=False
).instrument(tracer_provider=cls.tracer_provider)
cls._connection = _await(
asyncpg.connect(
database=POSTGRES_DB_NAME,
Expand Down Expand Up @@ -287,14 +288,17 @@ def test_instrumented_execute_interface_error_method(self, *_, **__):
},
)


class TestFunctionalAsyncPG_CaptureParametersMasked(TestBase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls._connection = None
cls._cursor = None
cls._tracer = cls.tracer_provider.get_tracer(__name__)
AsyncPGInstrumentor(capture_parameters=True).instrument(tracer_provider=cls.tracer_provider)
AsyncPGInstrumentor(capture_parameters=True).instrument(
tracer_provider=cls.tracer_provider
)
cls._connection = _await(
asyncpg.connect(
database=POSTGRES_DB_NAME,
Expand All @@ -317,13 +321,18 @@ def test_instrumented_execute_method_with_arguments(self, *_, **__):
self.assertEqual(
StatusCanonicalCode.OK, spans[0].status.canonical_code
)

expected_parameters = (
"sha256:"
+ hashlib.sha256(json.dumps(("1",)).encode("utf-8")).hexdigest(),
)
self.assertEqual(
spans[0].attributes,
{
"db.type": "sql",
"db.user": POSTGRES_USER,
"db.statement.parameters": "sha256:" + hashlib.sha256(json.dumps(('1',)).encode('utf-8')).hexdigest(),
"db.statement.parameters": expected_parameters,
"db.instance": POSTGRES_DB_NAME,
"db.statement": "SELECT $1;",
},
)
)

0 comments on commit a72e0be

Please sign in to comment.