|
10 | 10 | let(:tracer) { ::Datadog::Tracer.new(writer: FauxWriter.new) } |
11 | 11 | let(:span_name) { double('span_name') } |
12 | 12 | let(:options) { {} } |
| 13 | + let(:payload) { {} } |
13 | 14 | let(:block) do |
14 | 15 | proc do |span, name, id, payload| |
15 | 16 | spy.call(span, name, id, payload) |
|
24 | 25 | let(:start) { double('start') } |
25 | 26 | let(:finish) { double('finish') } |
26 | 27 | let(:id) { double('id') } |
27 | | - let(:payload) { double('payload') } |
| 28 | + let(:payload) { {} } |
28 | 29 |
|
29 | 30 | let(:span) { instance_double(Datadog::Span) } |
30 | 31 |
|
31 | 32 | it do |
32 | 33 | expect(tracer).to receive(:trace).with(span_name, options).and_return(span).ordered |
33 | 34 | expect(span).to receive(:start_time=).with(start).and_return(span).ordered |
34 | | - expect(tracer).to receive(:active_span).and_return(span).ordered |
35 | 35 | expect(spy).to receive(:call).with(span, name, id, payload).ordered |
36 | 36 | expect(span).to receive(:finish).with(finish).and_return(span).ordered |
37 | 37 | is_expected.to be(span) |
|
49 | 49 | it 'finishes tracing anyways' do |
50 | 50 | expect(tracer).to receive(:trace).with(span_name, options).and_return(span).ordered |
51 | 51 | expect(span).to receive(:start_time=).with(start).and_return(span).ordered |
52 | | - expect(tracer).to receive(:active_span).and_return(span).ordered |
53 | 52 | expect(span).to receive(:finish).with(finish).and_return(span).ordered |
54 | 53 | is_expected.to be(span) |
55 | 54 | end |
|
60 | 59 | subject(:result) { subscription.start(name, id, payload) } |
61 | 60 | let(:name) { double('name') } |
62 | 61 | let(:id) { double('id') } |
63 | | - let(:payload) { double('payload') } |
64 | | - |
65 | | - let(:span) { instance_double(Datadog::Span) } |
| 62 | + let(:span) { double('span') } |
66 | 63 |
|
67 | 64 | it do |
68 | 65 | expect(tracer).to receive(:trace).with(span_name, options).and_return(span) |
|
73 | 70 | parent = tracer.trace('parent_span') |
74 | 71 | expect(subject.parent_id).to eq parent.span_id |
75 | 72 | end |
| 73 | + |
| 74 | + it 'sets span in payload' do |
| 75 | + expect { subject }.to change { payload[:datadog_span] }.to be_instance_of(Datadog::Span) |
| 76 | + end |
76 | 77 | end |
77 | 78 |
|
78 | 79 | describe '#finish' do |
79 | 80 | subject(:result) { subscription.finish(name, id, payload) } |
80 | 81 | let(:name) { double('name') } |
81 | 82 | let(:id) { double('id') } |
82 | | - let(:payload) { double('payload') } |
83 | 83 |
|
84 | 84 | let(:span) { instance_double(Datadog::Span) } |
| 85 | + let(:payload) { { datadog_span: span } } |
85 | 86 |
|
86 | 87 | it do |
87 | | - expect(tracer).to receive(:active_span).and_return(span).ordered |
88 | 88 | expect(spy).to receive(:call).with(span, name, id, payload).ordered |
89 | 89 | expect(span).to receive(:finish).and_return(span).ordered |
90 | 90 | is_expected.to be(span) |
|
102 | 102 | it do |
103 | 103 | expect(callback_spy).to receive(:call).ordered |
104 | 104 | expect(tracer).to receive(:trace).ordered |
105 | | - subscription.start(double('name'), double('id'), double('payload')) |
| 105 | + subscription.start(double('name'), double('id'), payload) |
106 | 106 | end |
107 | 107 | end |
108 | 108 | end |
|
134 | 134 | shared_examples_for 'an after_trace callback' do |
135 | 135 | context 'on #finish' do |
136 | 136 | let(:span) { instance_double(Datadog::Span) } |
| 137 | + let(:payload) { { datadog_span: span } } |
137 | 138 |
|
138 | 139 | it do |
139 | | - expect(tracer).to receive(:active_span).and_return(span).ordered |
140 | 140 | expect(spy).to receive(:call).ordered |
141 | 141 | expect(span).to receive(:finish).ordered |
142 | 142 | expect(callback_spy).to receive(:call).ordered |
143 | | - subscription.finish(double('name'), double('id'), double('payload')) |
| 143 | + subscription.finish(double('name'), double('id'), payload) |
144 | 144 | end |
145 | 145 | end |
146 | 146 | end |
|
0 commit comments