|
8 | 8 | DEFAULT_JAEGER_COLLECTOR_ENDPOINT = 'http://localhost:14268/api/traces' |
9 | 9 |
|
10 | 10 | describe OpenTelemetry::Exporter::Jaeger::CollectorExporter do |
| 11 | + let(:metrics_reporter) { double } |
| 12 | + before(:each) do |
| 13 | + allow(metrics_reporter).to receive(:record_value) |
| 14 | + end |
| 15 | + |
11 | 16 | describe '#initialize' do |
12 | 17 | it 'initializes with defaults' do |
13 | 18 | exp = OpenTelemetry::Exporter::Jaeger::CollectorExporter.new |
|
175 | 180 | _(result).must_equal(OpenTelemetry::SDK::Trace::Export::SUCCESS) |
176 | 181 | assert_requested(stub_post) |
177 | 182 | end |
| 183 | + |
| 184 | + describe '#metrics_reporter' do |
| 185 | + it 'reports metrics for failures' do |
| 186 | + expect(metrics_reporter).to receive(:add_to_counter).with('otel.jaeger_exporter.failure', labels: { 'reason' => 'Thrift::TransportException' }) |
| 187 | + |
| 188 | + stub_post = stub_request(:post, DEFAULT_JAEGER_COLLECTOR_ENDPOINT).to_return(status: 500) |
| 189 | + exporter = OpenTelemetry::Exporter::Jaeger::CollectorExporter.new( |
| 190 | + metrics_reporter: metrics_reporter |
| 191 | + ) |
| 192 | + span_data = create_span_data |
| 193 | + result = exporter.export([span_data]) |
| 194 | + _(result).must_equal(OpenTelemetry::SDK::Trace::Export::FAILURE) |
| 195 | + assert_requested(stub_post) |
| 196 | + end |
| 197 | + |
| 198 | + it 'reports metrics for timeouts' do |
| 199 | + expect(metrics_reporter).to receive(:add_to_counter).with('otel.jaeger_exporter.failure', labels: { 'reason' => 'Net::OpenTimeout' }) |
| 200 | + |
| 201 | + stub_post = stub_request(:post, DEFAULT_JAEGER_COLLECTOR_ENDPOINT).to_timeout |
| 202 | + exporter = OpenTelemetry::Exporter::Jaeger::CollectorExporter.new( |
| 203 | + metrics_reporter: metrics_reporter |
| 204 | + ) |
| 205 | + span_data = create_span_data |
| 206 | + result = exporter.export([span_data]) |
| 207 | + _(result).must_equal(OpenTelemetry::SDK::Trace::Export::FAILURE) |
| 208 | + assert_requested(stub_post) |
| 209 | + end |
| 210 | + |
| 211 | + it 'records request duration' do |
| 212 | + expect(metrics_reporter).to receive(:record_value).with('otel.jaeger_exporter.request_duration', hash_including(value: kind_of(Float))) |
| 213 | + stub_post = stub_request(:post, DEFAULT_JAEGER_COLLECTOR_ENDPOINT).to_return(status: 200) |
| 214 | + |
| 215 | + exporter = OpenTelemetry::Exporter::Jaeger::CollectorExporter.new( |
| 216 | + metrics_reporter: metrics_reporter |
| 217 | + ) |
| 218 | + span_data = create_span_data |
| 219 | + result = exporter.export([span_data]) |
| 220 | + _(result).must_equal(OpenTelemetry::SDK::Trace::Export::SUCCESS) |
| 221 | + assert_requested(stub_post) |
| 222 | + end |
| 223 | + end |
178 | 224 | end |
179 | 225 | end |
0 commit comments