Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
sfc-gh-vguttha committed Feb 26, 2025
1 parent d16e8a9 commit fcbf71f
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 7 deletions.
2 changes: 1 addition & 1 deletion core/dbt/task/runnable.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ def call_runner(self, runner: BaseRunner, parent_context=None) -> RunResult:
links.append(
Link(
self._node_span_context_mapping[parent_node],
{"parent_model_fqn": parent_node},
{"upstream.name": parent_node},
),
)
with log_contextvars(node_info=node_info), self._dbt_tracer.start_as_current_span(
Expand Down
44 changes: 38 additions & 6 deletions tests/functional/dbt_runner/test_dbt_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,20 @@ class TestDbtRunnerHooks:
@pytest.fixture(scope="class")
def models(self):
return {
"models.sql": "select 1 as id",
"model2.sql": "select * from {{ ref('models') }}",
"models.sql": """
{{ config(
pre_hook=["select 1", "select 1/0"],
post_hook="select 2/0",
) }}
select 1 as id
""",
"model2.sql": """
{{ config(
pre_hook=["select 1"],
post_hook="select 2",
) }}
select * from {{ ref('models') }}
""",
}

@pytest.fixture(scope="class")
Expand All @@ -179,21 +191,41 @@ def test_dbt_runner_spans(self, project):
dbt.invoke(["run", "--select", "models", "model2"])
assert get_node_info() == {}
exported_spans = span_exporter.get_finished_spans()
assert len(exported_spans) == 3
assert exported_spans[0].instrumentation_scope.name == "com.dbt.runner"
assert len(exported_spans) == 4
assert exported_spans[0].instrumentation_scope.name == "dbt.runner"
span_names = [span.name for span in exported_spans]
span_names.sort()
assert span_names == ["model.test.model2", "model.test.models", "on-run-end"]
assert span_names == [
"metadata.setup",
"model.test.model2",
"model.test.models",
"on-run-end",
]
model2_span = None
models_span = None
metadata_span = None
for span in exported_spans:
if span.name == "model.test.model2":
model2_span = span
if span.name == "model.test.models":
models_span = span
if span.name == "metadata.setup":
metadata_span = span

# verify node span attributes
assert "node.status" in models_span.attributes
assert "node.materialization" in models_span.attributes
assert "node.database" in models_span.attributes
assert "node.schema" in models_span.attributes

# verify span links
assert len(model2_span.links) == 1
assert model2_span.links[0].attributes["parent_model_fqn"] == "model.test.models"
assert model2_span.links[0].attributes["upstream.name"] == "model.test.models"
assert model2_span.links[0].context.span_id == models_span.context.span_id
assert model2_span.links[0].context.trace_id == models_span.context.trace_id

# verify metadata span attributes
assert metadata_span is not None

# verify attributes of run-start/run-end span
assert "node.status" in models_span.attributes

0 comments on commit fcbf71f

Please sign in to comment.