Class: OpenTelemetry::SDK::Trace::Export::InMemorySpanExporter

Inherits:
Object
  • Object
show all
Defined in:
lib/opentelemetry/sdk/trace/export/in_memory_span_exporter.rb

Overview

A SpanExporter implementation that can be used to test OpenTelemetry integration.

Example usage:

class MyClassTest

def setup
  @tracer_factory = TracerFactory.new
  @exporter = InMemorySpanExporter.new
  @tracer_factory.add_span_processor(SimpleSampledSpansProcessor.new(@exporter))
end

def test_finished_spans
  @tracer_factory.tracer.in_span("span") {}

  spans = @exporter.finished_spans
  spans.wont_be_nil
  spans.size.must_equal(1)
  spans[0].name.must_equal("span")
end

Instance Method Summary collapse

Constructor Details

#initializeObject



34
35
36
37
38
# File 'lib/opentelemetry/sdk/trace/export/in_memory_span_exporter.rb', line 34

def initialize
  @finished_spans = []
  @stopped = false
  @mutex = Mutex.new
end

Instance Method Details

#export(span_datas) ⇒ Integer

Called to export sampled SpanDatas.

Parameters:

  • span_datas (Enumerable<SpanData>)

    the list of sampled SpanDatas to be exported.

Returns:

  • (Integer)

    the result of the export, SUCCESS or FAILED_NOT_RETRYABLE



65
66
67
68
69
70
71
72
# File 'lib/opentelemetry/sdk/trace/export/in_memory_span_exporter.rb', line 65

def export(span_datas)
  @mutex.synchronize do
    return FAILED_NOT_RETRYABLE if @stopped

    @finished_spans.concat(span_datas.to_a)
  end
  SUCCESS
end

#finished_spansArray<SpanData>

Returns a frozen array of the finished SpanDatas, represented by OpenTelemetry::SDK::Trace::Export::InMemorySpanExporter.ioio.opentelemetryio.opentelemetry.protoio.opentelemetry.proto.traceio.opentelemetry.proto.trace.v1io.opentelemetry.proto.trace.v1.Span.

Returns:



44
45
46
47
48
# File 'lib/opentelemetry/sdk/trace/export/in_memory_span_exporter.rb', line 44

def finished_spans
  @mutex.synchronize do
    @finished_spans.clone.freeze
  end
end

#resetObject

Clears the internal collection of finished Spans.

Does not reset the state of this exporter if already shutdown.



53
54
55
56
57
# File 'lib/opentelemetry/sdk/trace/export/in_memory_span_exporter.rb', line 53

def reset
  @mutex.synchronize do
    @finished_spans.clear
  end
end

#shutdownObject

Called when TracerFactory#shutdown is called, if this exporter is registered to a TracerFactory object.



76
77
78
79
80
81
# File 'lib/opentelemetry/sdk/trace/export/in_memory_span_exporter.rb', line 76

def shutdown
  @mutex.synchronize do
    @finished_spans.clear
    @stopped = true
  end
end