class Test::Span

Attributes

end_time[R]
logs[R]
operation_name[R]
start_time[R]
tags[R]
tracer[R]

Public Class Methods

new(tracer:, context:, operation_name:, start_time: Time.now, tags: nil) click to toggle source
# File lib/test/span.rb, line 11
def initialize(tracer:, context:, operation_name:, start_time: Time.now, tags: nil)
  Type! tracer, ::Test::Tracer
  Type! context, ::Test::SpanContext
  Type! operation_name, String
  Type! start_time, Time
  Type! tags, Hash, NilClass

  @tracer = tracer
  @context = context
  @operation_name = operation_name
  @tags = tags || {}
  @logs = []
  @start_time = start_time
  @end_time = nil
  @in_progress = true
end

Public Instance Methods

context() click to toggle source
# File lib/test/span.rb, line 38
def context
  @context
end
finish(end_time: Time.now) click to toggle source
# File lib/test/span.rb, line 79
def finish(end_time: Time.now)
  Type! end_time, Time
  ensure_in_progress!

  @end_time = end_time
  @in_progress = false
  @tracer.finished_spans << self
  self
end
finished?() click to toggle source
# File lib/test/span.rb, line 34
def finished?
  !in_progress?
end
get_baggage_item(key) click to toggle source
# File lib/test/span.rb, line 66
def get_baggage_item(key)
  Type! key, String
  @context.baggage[key]
end
in_progress?() click to toggle source
# File lib/test/span.rb, line 28
def in_progress?
  @in_progress
end
Also aliased as: started?
log(event: nil, timestamp: Time.now, **fields) click to toggle source
# File lib/test/span.rb, line 71
def log(event: nil, timestamp: Time.now, **fields)
  Type! event, String, NilClass
  Type! timestamp, Time
  ensure_in_progress!

  @logs << LogEntry.new(event, timestamp, fields)
end
operation_name=(name) click to toggle source
# File lib/test/span.rb, line 42
def operation_name=(name)
  Type! name, String
  ensure_in_progress!

  @operation_name = name
end
set_baggage_item(key, value) click to toggle source
# File lib/test/span.rb, line 57
def set_baggage_item(key, value)
  Type! key, String
  Type! value, String, NilClass
  ensure_in_progress!

  @context.baggage[key] = value.to_s
  self
end
set_tag(key, value) click to toggle source
# File lib/test/span.rb, line 49
def set_tag(key, value)
  Type! key, String
  ensure_in_progress!

  @tags[key] = Type?(value, String, Fixnum, Bignum, Float, TrueClass, FalseClass) ? value : value.to_s
  self
end
started?()
Alias for: in_progress?
to_s() click to toggle source
# File lib/test/span.rb, line 89
def to_s
  "Span(operation_name=#{operation_name}, " +
    "in_progress=#{in_progress?}, " +
    "tags=#{tags}, " +
    "logs=#{logs}, " +
    "start_time=#{start_time}, " +
    "end_time=#{end_time}, " +
    "context=#{context})"
end

Private Instance Methods

ensure_in_progress!() click to toggle source
# File lib/test/span.rb, line 101
def ensure_in_progress!
  unless in_progress?
    raise SpanAlreadyFinished.new("No modification operations allowed. The span is already finished.")
  end
end