Skip to content

Commit ec9bece

Browse files
khanayan123claude
andcommitted
test(otel): complete renamed-attribute coverage for DB semantics (collection.name, server.port)
Add the two remaining renamed-attribute tests so the DB suite covers the full set of Datadog->OTel renames per the spec: db.sql.table -> db.collection.name out.port -> server.port (validated as int when present) The suite now has 7 rename tests (db.system.name, db.namespace, db.operation.name, db.query.text, db.collection.name, server.address, server.port). Only rename tests are included because the scenario is gated missing_feature everywhere (no tracer implements DB OTel yet) — unchanged/shared attributes like span.kind and error.type would xpass, so they belong in the OTLP-typed variant / when-active coverage instead. ruff + Manifest.validate() + meta-tests green; 7 tests collect under OTEL_SEMANTICS_DB. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 1b2b89d commit ec9bece

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

tests/integrations/test_otel_db_semantics.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ def _setup_queries(self):
3737
setup_db_namespace = _setup_queries
3838
setup_db_operation_name = _setup_queries
3939
setup_db_query_text = _setup_queries
40+
setup_db_collection_name = _setup_queries
4041
setup_server_address = _setup_queries
42+
setup_server_port = _setup_queries
4143

4244
def _tracer_span_metas(self, excluded_operations: tuple[str, ...] = ("select_error",)):
4345
for db_operation, request in self.get_requests(excluded_operations=excluded_operations):
@@ -70,8 +72,21 @@ def test_db_query_text(self):
7072
assert db_operation in meta.get("db.query.text", "").lower(), f"failing for {db_operation}"
7173
assert "db.statement" not in meta, "legacy db.statement must be absent in OTel mode"
7274

75+
def test_db_collection_name(self):
76+
"""``db.sql.table`` becomes ``db.collection.name`` (the primary table)."""
77+
for db_operation, meta in self._tracer_span_metas(excluded_operations=("select_error", "procedure")):
78+
assert meta.get("db.collection.name"), f"db.collection.name expected, failing for {db_operation}"
79+
assert "db.sql.table" not in meta, "legacy db.sql.table must be absent in OTel mode"
80+
7381
def test_server_address(self):
7482
"""``out.host`` becomes ``server.address``."""
7583
for db_operation, meta in self._tracer_span_metas():
7684
assert meta.get("server.address"), f"server.address expected, failing for {db_operation}"
7785
assert "out.host" not in meta, "legacy out.host must be absent in OTel mode"
86+
87+
def test_server_port(self):
88+
"""``out.port`` becomes ``server.port`` (validated as an int when present)."""
89+
for db_operation, meta in self._tracer_span_metas():
90+
assert "out.port" not in meta, f"legacy out.port must be absent in OTel mode (failing for {db_operation})"
91+
if "server.port" in meta:
92+
_ = int(meta["server.port"]) # must be int-parseable when present

0 commit comments

Comments
 (0)