11# typed: ignore
22
33require 'spec_helper'
4+ require_relative '../../support/system_helper'
45
56require 'datadog/statsd'
67
3435 . to receive ( :format! ) . and_wrap_original do |original |
3536 segments << original . call
3637 end
38+
39+ WebMock . disable!
40+ Datadog . configuration . reset!
3741 end
3842
3943 def tracer
@@ -77,6 +81,14 @@ def tracer
7781
7882 after { tracer . shutdown! }
7983
84+ def wait_for_flush ( stat , num = 1 )
85+ test_repeat . times do
86+ break if tracer . writer . stats [ stat ] >= num
87+
88+ sleep ( 0.1 )
89+ end
90+ end
91+
8092 describe 'agent receives span' do
8193 include_context 'agent-based test'
8294
@@ -87,14 +99,6 @@ def create_trace
8799 end
88100 end
89101
90- def wait_for_flush ( stat , num = 1 )
91- test_repeat . times do
92- break if tracer . writer . stats [ stat ] >= num
93-
94- sleep ( 0.1 )
95- end
96- end
97-
98102 def agent_receives_span_step1
99103 stats = tracer . writer . stats
100104 expect ( stats [ :traces_flushed ] ) . to eq ( 0 )
@@ -173,24 +177,32 @@ def agent_receives_span_step3(previous_success)
173177 describe 'agent receives short span' do
174178 include_context 'agent-based test'
175179
176- before do
180+ def trace
177181 tracer . trace ( 'my.short.op' ) do |span |
178182 @span = span
179183 span . service = 'my.service'
180184 end
181185
182- @first_shutdown = tracer . shutdown!
186+ wait_for_flush ( :traces_flushed )
183187 end
184188
185189 let ( :stats ) { tracer . writer . stats }
186190
187191 it do
188- expect ( @first_shutdown ) . to be true
192+ trace
193+
189194 expect ( @span . finished? ) . to be true
190195 expect ( stats [ :services_flushed ] ) . to be_nil
191196 end
192197
193- it_behaves_like 'flushed trace'
198+ it 'reuses the same HTTP connection' do
199+ trace
200+ expect { trace } . to_not ( change { SystemHelper . open_fds } )
201+ end
202+
203+ it_behaves_like 'flushed trace' do
204+ before { trace }
205+ end
194206 end
195207
196208 describe 'rule sampler' do
@@ -357,6 +369,8 @@ def agent_receives_span_step3(previous_success)
357369
358370 WebMock . enable!
359371
372+ WebMock . enable!
373+
360374 trace # Run test subject
361375 wait_for_flush
362376 end
@@ -517,6 +531,8 @@ def sample!(trace)
517531 span . service = 'my.service'
518532 end
519533
534+ wait_for_flush ( :traces_flushed )
535+
520536 threads = Array . new ( 10 ) do
521537 Thread . new { tracer . shutdown! }
522538 end
0 commit comments