@@ -160,39 +160,71 @@ def test_message_logged_when_name_called_but_span_is_finished
160160 def test_status_works_with_description
161161 span = @tracer . start_span ( 'oops' , kind : :server )
162162 span . status = ::OpenTelemetry ::Trace ::Status . error ( 'Something went wrong' )
163- span . finishable . stubs ( :sampled? ) . returns ( true )
163+ txn = span . finishable
164+
165+ txn . stubs ( :sampled? ) . returns ( true )
164166 span . finish
165167
166168 # error is code 2
167169 expected = { 'status.code' => 2 , 'status.description' => 'Something went wrong' }
168170
169- assert_equal expected , last_span_event [ 1 ]
171+ segment_attrs = txn . segments . first . attributes
172+ segment_agent_attrs = segment_attrs . instance_variable_get ( :@agent_attributes )
173+
174+ assert_equal expected [ 'status.code' ] , segment_agent_attrs [ 'status.code' ]
175+ assert_equal expected [ 'status.description' ] , segment_agent_attrs [ 'status.description' ]
176+
177+ # index 2 of the last_span_event array is for agent attributes
178+ last_span_agent_attrs = last_span_event [ 2 ]
179+
180+ assert_equal expected [ 'status.code' ] , last_span_agent_attrs [ 'status.code' ]
181+ assert_equal expected [ 'status.description' ] , last_span_agent_attrs [ 'status.description' ]
170182 end
171183
172184 def test_status_works_without_description
173185 span = @tracer . start_span ( 'sleepy puppy' , kind : :server )
186+ txn = span . finishable
174187 span . status = ::OpenTelemetry ::Trace ::Status . ok
175- span . finishable . stubs ( :sampled? ) . returns ( true )
188+
189+ txn . stubs ( :sampled? ) . returns ( true )
176190 span . finish
177191
178192 # ok is status code 0
179193 expected = { 'status.code' => 0 }
180194
181- assert_equal expected , last_span_event [ 1 ]
195+ segment_attrs = txn . segments . first . attributes
196+ segment_agent_attrs = segment_attrs . instance_variable_get ( :@agent_attributes )
197+
198+ assert_equal expected [ 'status.code' ] , segment_agent_attrs [ 'status.code' ]
199+
200+ # index 2 of the last_span_event array is for agent attributes
201+ last_span_agent_attrs = last_span_event [ 2 ]
202+
203+ assert_equal expected [ 'status.code' ] , last_span_agent_attrs [ 'status.code' ]
182204 end
183205
184206 def test_default_status_is_unset
185207 span = @tracer . start_span ( 'advil' , kind : :server )
208+ txn = span . finishable
186209
187210 assert_instance_of ( ::OpenTelemetry ::Trace ::Status , span . status )
188211 # unset is status code 1
189212 assert_equal ( 1 , span . status . code )
190213
214+ txn . stubs ( :sampled? ) . returns ( true )
191215 span . finish
192216
193217 expected = { 'status.code' => 1 }
194218
195- assert_equal expected , last_span_event [ 1 ]
219+ segment_attrs = txn . segments . first . attributes
220+ segment_agent_attrs = segment_attrs . instance_variable_get ( :@agent_attributes )
221+
222+ assert_equal expected [ 'status.code' ] , segment_agent_attrs [ 'status.code' ]
223+
224+ # index 2 of the last_span_event array is for agent attributes
225+ last_span_agent_attrs = last_span_event [ 2 ]
226+
227+ assert_equal expected [ 'status.code' ] , last_span_agent_attrs [ 'status.code' ]
196228 end
197229 end
198230 end
0 commit comments