diff --git a/instrumentation/opentelemetry-instrumentation-sqlalchemy/tests/test_sqlalchemy.py b/instrumentation/opentelemetry-instrumentation-sqlalchemy/tests/test_sqlalchemy.py index 3b2e3548a..f636ed32e 100644 --- a/instrumentation/opentelemetry-instrumentation-sqlalchemy/tests/test_sqlalchemy.py +++ b/instrumentation/opentelemetry-instrumentation-sqlalchemy/tests/test_sqlalchemy.py @@ -36,7 +36,7 @@ class TestSqlalchemyInstrumentation(TestBase): spans = self.memory_exporter.get_finished_spans() self.assertEqual(len(spans), 1) - self.assertEqual(spans[0].name, "sqlite.query") + self.assertEqual(spans[0].name, "SELECT 1 + 1;") def test_not_recording(self): mock_tracer = mock.Mock() @@ -70,4 +70,4 @@ class TestSqlalchemyInstrumentation(TestBase): spans = self.memory_exporter.get_finished_spans() self.assertEqual(len(spans), 1) - self.assertEqual(spans[0].name, "sqlite.query") + self.assertEqual(spans[0].name, "SELECT 1 + 1;") diff --git a/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/mixins.py b/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/mixins.py index 72137f83e..b2e9f24e3 100644 --- a/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/mixins.py +++ b/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/mixins.py @@ -20,7 +20,7 @@ from sqlalchemy.orm import sessionmaker from opentelemetry import trace from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor -from opentelemetry.instrumentation.sqlalchemy.engine import _DB, _ROWS, _STMT +from opentelemetry.instrumentation.sqlalchemy.engine import _DB, _STMT from opentelemetry.test.test_base import TestBase Base = declarative_base() @@ -109,9 +109,8 @@ class SQLAlchemyTestMixin(TestBase): SQLAlchemyInstrumentor().uninstrument() super().tearDown() - def _check_span(self, span): - self.assertEqual(span.name, "{}.query".format(self.VENDOR)) - self.assertEqual(span.attributes.get("service"), self.SERVICE) + def _check_span(self, span, name): + self.assertEqual(span.name, name) self.assertEqual(span.attributes.get(_DB), self.SQL_DB) self.assertIs(span.status.status_code, trace.status.StatusCode.UNSET) self.assertGreater((span.end_time - span.start_time), 0) @@ -125,9 +124,13 @@ class SQLAlchemyTestMixin(TestBase): spans = self.memory_exporter.get_finished_spans() self.assertEqual(len(spans), 1) span = spans[0] - self._check_span(span) + stmt = "INSERT INTO players (id, name) VALUES " + if span.attributes.get("db.system") == "sqlite": + stmt += "(?, ?)" + else: + stmt += "(%(id)s, %(name)s)" + self._check_span(span, stmt) self.assertIn("INSERT INTO players", span.attributes.get(_STMT)) - self.assertEqual(span.attributes.get(_ROWS), 1) self.check_meta(span) def test_session_query(self): @@ -138,7 +141,12 @@ class SQLAlchemyTestMixin(TestBase): spans = self.memory_exporter.get_finished_spans() self.assertEqual(len(spans), 1) span = spans[0] - self._check_span(span) + stmt = "SELECT players.id AS players_id, players.name AS players_name \nFROM players \nWHERE players.name = " + if span.attributes.get("db.system") == "sqlite": + stmt += "?" + else: + stmt += "%(name_1)s" + self._check_span(span, stmt) self.assertIn( "SELECT players.id AS players_id, players.name AS players_name \nFROM players \nWHERE players.name", span.attributes.get(_STMT), @@ -147,24 +155,26 @@ class SQLAlchemyTestMixin(TestBase): def test_engine_connect_execute(self): # ensures that engine.connect() is properly traced + stmt = "SELECT * FROM players" with self.connection() as conn: - rows = conn.execute("SELECT * FROM players").fetchall() + rows = conn.execute(stmt).fetchall() self.assertEqual(len(rows), 0) spans = self.memory_exporter.get_finished_spans() self.assertEqual(len(spans), 1) span = spans[0] - self._check_span(span) + self._check_span(span, stmt) self.assertEqual(span.attributes.get(_STMT), "SELECT * FROM players") self.check_meta(span) def test_parent(self): """Ensure that sqlalchemy works with opentelemetry.""" + stmt = "SELECT * FROM players" tracer = self.tracer_provider.get_tracer("sqlalch_svc") with tracer.start_as_current_span("sqlalch_op"): with self.connection() as conn: - rows = conn.execute("SELECT * FROM players").fetchall() + rows = conn.execute(stmt).fetchall() self.assertEqual(len(rows), 0) spans = self.memory_exporter.get_finished_spans() @@ -178,5 +188,4 @@ class SQLAlchemyTestMixin(TestBase): self.assertEqual(parent_span.name, "sqlalch_op") self.assertEqual(parent_span.instrumentation_info.name, "sqlalch_svc") - self.assertEqual(child_span.name, "{}.query".format(self.VENDOR)) - self.assertEqual(child_span.attributes.get("service"), self.SERVICE) + self.assertEqual(child_span.name, stmt) diff --git a/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_instrument.py b/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_instrument.py index c408c63d9..3da823d5b 100644 --- a/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_instrument.py +++ b/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_instrument.py @@ -64,7 +64,6 @@ class SQLAlchemyInstrumentTestCase(TestBase): self.assertEqual(len(traces), 1) span = traces[0] # check subset of span fields - self.assertEqual(span.name, "postgres.query") - self.assertEqual(span.attributes.get("service"), "postgres") + self.assertEqual(span.name, "SELECT 1") self.assertIs(span.status.status_code, trace.status.StatusCode.UNSET) self.assertGreater((span.end_time - span.start_time), 0) diff --git a/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_mysql.py b/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_mysql.py index 310cd91f7..55263c2df 100644 --- a/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_mysql.py +++ b/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_mysql.py @@ -23,7 +23,7 @@ from opentelemetry.instrumentation.sqlalchemy.engine import ( _DB, _HOST, _PORT, - _ROWS, + _USER, _STMT, ) @@ -45,7 +45,6 @@ class MysqlConnectorTestCase(SQLAlchemyTestMixin): VENDOR = "mysql" SQL_DB = "opentelemetry-tests" - SERVICE = "mysql" ENGINE_ARGS = { "url": "mysql+mysqlconnector://%(user)s:%(password)s@%(host)s:%(port)s/%(database)s" % MYSQL_CONFIG @@ -55,6 +54,8 @@ class MysqlConnectorTestCase(SQLAlchemyTestMixin): # check database connection tags self.assertEqual(span.attributes.get(_HOST), MYSQL_CONFIG["host"]) self.assertEqual(span.attributes.get(_PORT), MYSQL_CONFIG["port"]) + self.assertEqual(span.attributes.get(_DB), MYSQL_CONFIG["database"]) + self.assertEqual(span.attributes.get(_USER), MYSQL_CONFIG["user"]) def test_engine_execute_errors(self): # ensures that SQL errors are reported @@ -66,13 +67,11 @@ class MysqlConnectorTestCase(SQLAlchemyTestMixin): self.assertEqual(len(spans), 1) span = spans[0] # span fields - self.assertEqual(span.name, "{}.query".format(self.VENDOR)) - self.assertEqual(span.attributes.get("service"), self.SERVICE) + self.assertEqual(span.name, "SELECT * FROM a_wrong_table") self.assertEqual( span.attributes.get(_STMT), "SELECT * FROM a_wrong_table" ) self.assertEqual(span.attributes.get(_DB), self.SQL_DB) - self.assertIsNone(span.attributes.get(_ROWS)) self.check_meta(span) self.assertTrue(span.end_time - span.start_time > 0) # check the error diff --git a/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_postgres.py b/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_postgres.py index 91fb123c9..2642d52a7 100644 --- a/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_postgres.py +++ b/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_postgres.py @@ -24,7 +24,6 @@ from opentelemetry.instrumentation.sqlalchemy.engine import ( _DB, _HOST, _PORT, - _ROWS, _STMT, ) @@ -44,9 +43,8 @@ class PostgresTestCase(SQLAlchemyTestMixin): __test__ = True - VENDOR = "postgres" + VENDOR = "postgresql" SQL_DB = "opentelemetry-tests" - SERVICE = "postgres" ENGINE_ARGS = { "url": "postgresql://%(user)s:%(password)s@%(host)s:%(port)s/%(dbname)s" % POSTGRES_CONFIG @@ -67,13 +65,11 @@ class PostgresTestCase(SQLAlchemyTestMixin): self.assertEqual(len(spans), 1) span = spans[0] # span fields - self.assertEqual(span.name, "{}.query".format(self.VENDOR)) - self.assertEqual(span.attributes.get("service"), self.SERVICE) + self.assertEqual(span.name, "SELECT * FROM a_wrong_table") self.assertEqual( span.attributes.get(_STMT), "SELECT * FROM a_wrong_table" ) self.assertEqual(span.attributes.get(_DB), self.SQL_DB) - self.assertIsNone(span.attributes.get(_ROWS)) self.check_meta(span) self.assertTrue(span.end_time - span.start_time > 0) # check the error @@ -88,9 +84,8 @@ class PostgresCreatorTestCase(PostgresTestCase): of `PostgresTestCase`, but it uses a specific `creator` function. """ - VENDOR = "postgres" + VENDOR = "postgresql" SQL_DB = "opentelemetry-tests" - SERVICE = "postgres" ENGINE_ARGS = { "url": "postgresql://", "creator": lambda: psycopg2.connect(**POSTGRES_CONFIG), diff --git a/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_sqlite.py b/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_sqlite.py index 309dd73cc..a3fae96bb 100644 --- a/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_sqlite.py +++ b/tests/opentelemetry-docker-tests/tests/sqlalchemy_tests/test_sqlite.py @@ -18,7 +18,7 @@ import pytest from sqlalchemy.exc import OperationalError from opentelemetry import trace -from opentelemetry.instrumentation.sqlalchemy.engine import _DB, _ROWS, _STMT +from opentelemetry.instrumentation.sqlalchemy.engine import _DB, _STMT from .mixins import SQLAlchemyTestMixin @@ -30,26 +30,24 @@ class SQLiteTestCase(SQLAlchemyTestMixin): VENDOR = "sqlite" SQL_DB = ":memory:" - SERVICE = "sqlite" ENGINE_ARGS = {"url": "sqlite:///:memory:"} def test_engine_execute_errors(self): # ensures that SQL errors are reported + stmt = "SELECT * FROM a_wrong_table" with pytest.raises(OperationalError): with self.connection() as conn: - conn.execute("SELECT * FROM a_wrong_table").fetchall() + conn.execute(stmt).fetchall() spans = self.memory_exporter.get_finished_spans() self.assertEqual(len(spans), 1) span = spans[0] # span fields - self.assertEqual(span.name, "{}.query".format(self.VENDOR)) - self.assertEqual(span.attributes.get("service"), self.SERVICE) + self.assertEqual(span.name, stmt) self.assertEqual( span.attributes.get(_STMT), "SELECT * FROM a_wrong_table" ) self.assertEqual(span.attributes.get(_DB), self.SQL_DB) - self.assertIsNone(span.attributes.get(_ROWS)) self.assertTrue((span.end_time - span.start_time) > 0) # check the error self.assertIs(