@@ -2089,11 +2089,12 @@ def test_context_manager_user_propagation():
20892089 trace = get_api ().trace .get (trace_id )
20902090 assert trace .user_id == user_id
20912091
2092- # Verify child observations were created
2092+ # Verify child observations were created and have user_id
20932093 child_observations = [
20942094 obs
20952095 for obs in trace .observations
20962096 if obs .name in ["child-span" , "child-generation" ]
2097+ and obs .metadata ["attributes" ]["user.id" ] == user_id
20972098 ]
20982099 assert len (child_observations ) == 2
20992100
@@ -2125,7 +2126,11 @@ def test_context_manager_session_propagation():
21252126 assert trace .session_id == session_id
21262127
21272128 # Verify nested spans were created
2128- nested_observations = [obs for obs in trace .observations if "span" in obs .name ]
2129+ nested_observations = [
2130+ obs
2131+ for obs in trace .observations
2132+ if "span" in obs .name and obs .metadata ["attributes" ]["session.id" ] == session_id
2133+ ]
21292134 assert len (nested_observations ) >= 2
21302135
21312136
@@ -2156,6 +2161,21 @@ def test_context_manager_metadata_propagation():
21562161 assert trace .metadata ["version" ] == "1.2.3"
21572162 assert trace .metadata ["feature_flag" ] == "enabled"
21582163
2164+ # Verify all observations have the metadata distributed as individual keys
2165+ for obs in trace .observations :
2166+ if obs .name in ["child-span" , "child-generation" , "parent-span" ]:
2167+ # Check that metadata was set on the observation
2168+ assert hasattr (obs , "metadata" ), f"Observation { obs .name } missing metadata"
2169+ assert (
2170+ obs .metadata ["experiment" ] == "A/B"
2171+ ), f"Observation { obs .name } missing experiment metadata"
2172+ assert (
2173+ obs .metadata ["version" ] == "1.2.3"
2174+ ), f"Observation { obs .name } missing version metadata"
2175+ assert (
2176+ obs .metadata ["feature_flag" ] == "enabled"
2177+ ), f"Observation { obs .name } missing feature_flag metadata"
2178+
21592179
21602180def test_context_manager_nested_contexts ():
21612181 """Test nested context managers with overrides and merging."""
@@ -2199,7 +2219,7 @@ def test_context_manager_nested_contexts():
21992219 ]
22002220 assert len (child_observations ) >= 2
22012221
2202- # Verify specific child spans exist
2222+ # Verify specific child spans exist and have correct metadata
22032223 outer_child_obs = [obs for obs in trace .observations if obs .name == "outer-child" ]
22042224 nested_span_obs = [obs for obs in trace .observations if obs .name == "nested-span" ]
22052225
@@ -2230,6 +2250,18 @@ def test_context_manager_baggage_propagation():
22302250 assert trace .metadata ["service" ] == "api"
22312251 assert trace .metadata ["version" ] == "v1.0"
22322252
2253+ # Verify all observations have the metadata and session_id
2254+ for obs in trace .observations :
2255+ if obs .name in ["external-call-span" , "service-span" ]:
2256+ # Check that metadata was set on the observation
2257+ assert hasattr (obs , "metadata" ), f"Observation { obs .name } missing metadata"
2258+ assert (
2259+ obs .metadata ["service" ] == "api"
2260+ ), f"Observation { obs .name } missing service metadata"
2261+ assert (
2262+ obs .metadata ["version" ] == "v1.0"
2263+ ), f"Observation { obs .name } missing version metadata"
2264+
22332265
22342266def test_span_context_managers ():
22352267 """Test context managers called on span instances."""
0 commit comments