Sha256: c2d844b8af4704bc73de906132abce0f46cbbab87936c0b25586f7d6ac196432

Contents?: true

Size: 1.73 KB

Versions: 29

Compression:

Stored size: 1.73 KB

Contents

# frozen_string_literal: true

require 'deimos/tracing/provider'

module Deimos
  module Tracing
    # Class that mocks out tracing functionality
    class Mock < Tracing::Provider
      # @param logger [Logger]
      def initialize(logger=nil)
        @logger = logger || Logger.new(STDOUT)
        @logger.info('MockTracingProvider initialized')
        @active_span = MockSpan.new
      end

      # @param span_name [String]
      # @param _options [Hash]
      def start(span_name, _options={})
        @logger.info("Mock span '#{span_name}' started")
        {
          name: span_name,
          started_at: Time.zone.now
        }
      end

      # :nodoc:
      def finish(span)
        name = span[:name]
        start = span[:started_at]
        finish = Time.zone.now
        @logger.info("Mock span '#{name}' finished: #{start} to #{finish}")
      end

      # :nodoc:
      def active_span
        @active_span ||= MockSpan.new
      end

      # :nodoc:
      def set_tag(tag, value, span=nil)
        if span
          span.set_tag(tag, value)
        else
          active_span.set_tag(tag, value)
        end
      end

      # Get a tag from a span with the specified tag.
      # @param tag [String]
      def get_tag(tag)
        @span.get_tag(tag)
      end

      # :nodoc:
      def set_error(span, exception)
        span[:exception] = exception
        name = span[:name]
        @logger.info("Mock span '#{name}' set an error: #{exception}")
      end
    end

    # Mock Span class
    class MockSpan
      # :nodoc:
      def initialize
        @span = {}
      end

      # :nodoc:
      def set_tag(tag, value)
        @span[tag] = value
      end

      # :nodoc:
      def get_tag(tag)
        @span[tag]
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
deimos-ruby-2.0.2 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.1 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.beta7 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.beta6 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.beta5 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.beta4 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.beta3 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.beta2 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.beta1 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.alpha7 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.alpha6 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.alpha5 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.alpha4 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.alpha3 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.alpha2 lib/deimos/tracing/mock.rb
deimos-ruby-2.0.0.pre.alpha1 lib/deimos/tracing/mock.rb
deimos-ruby-1.24.2 lib/deimos/tracing/mock.rb
deimos-ruby-1.24.1 lib/deimos/tracing/mock.rb
deimos-ruby-1.24.0 lib/deimos/tracing/mock.rb