dstandish commented on code in PR #62554:
URL: https://github.com/apache/airflow/pull/62554#discussion_r2896525329
##########
airflow-core/tests/unit/models/test_dagrun.py:
##########
@@ -3281,3 +3144,168 @@ def on_failure(context):
assert context_received["ti"].task_id == "test_task"
assert context_received["ti"].dag_id == "test_dag"
assert context_received["ti"].run_id == dr.run_id
+
+
+class TestDagRunTracing:
+ """Tests for DagRun OpenTelemetry span behavior."""
+
+ @pytest.fixture(autouse=True)
+ def sdk_tracer_provider(self):
+ """Patch the module-level tracer with one backed by a real SDK
provider so spans have valid IDs."""
+ provider = TracerProvider()
+ real_tracer = provider.get_tracer("airflow.models.dagrun")
+ with mock.patch("airflow.models.dagrun.tracer", real_tracer):
+ yield
+
+ def test_context_carrier_set_on_init(self, dag_maker):
+ """DagRun.__init__ should populate context_carrier with a W3C
traceparent."""
+ with dag_maker("test_tracing_init"):
+ EmptyOperator(task_id="t1")
+ dr = dag_maker.create_dagrun()
+
+ assert dr.context_carrier is not None
+ assert isinstance(dr.context_carrier, dict)
+ # W3C Trace Context propagation injects a "traceparent" key
+ assert "traceparent" in dr.context_carrier
+ # traceparent format: 00-<32 hex trace_id>-<16 hex span_id>-<2 hex
flags>
+ traceparent = dr.context_carrier["traceparent"]
+ parts = traceparent.split("-")
+ assert len(parts) == 4
+ assert parts[0] == "00"
+ assert len(parts[1]) == 32 # trace_id
+ assert len(parts[2]) == 16 # span_id
+ assert len(parts[3]) == 2 # flags
Review Comment:
i'm guilty of letting an agent write that test and being like "that seems a
bit extra but 🤷"
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]