Class: Sqreen::Ecosystem::Tracing::SamplingConfiguration

Inherits:
Object
  • Object
show all
Extended by:
Loggable
Includes:
Loggable
Defined in:
lib/sqreen/ecosystem/tracing/sampling_configuration.rb

Overview

tracing sampling configuration, as specified by the 2nd argument of the tracing_enable command. See github.com/sqreen/TechDoc/blob/master/content/specs/spec000025-enabling-tracing.md

Constant Summary collapse

DEFAULT_SCOPE =
'*'.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sampling_config) ⇒ SamplingConfiguration

Returns a new instance of SamplingConfiguration.



21
22
23
24
25
# File 'lib/sqreen/ecosystem/tracing/sampling_configuration.rb', line 21

def initialize(sampling_config)
  @sampling_config = sampling_config
  @samplers = {}
  @samplers_virtual = build_virtual_holders(sampling_config)
end

Class Method Details

.build_sampler(scope, cfg) ⇒ Object



80
81
82
83
84
85
86
# File 'lib/sqreen/ecosystem/tracing/sampling_configuration.rb', line 80

def build_sampler(scope, cfg)
  do_build_sampler(cfg['enabled'], cfg['sampling'] || [{}])
rescue StandardError => e
  logger.warn "Invalid sampling configuration for #{scope}: #{e.inspect}"
  logger.debug { e.backtrace }
  DisabledScopeSampler
end

Instance Method Details

#forget_virtual_scope(scope, qualifier) ⇒ Object



37
38
39
40
# File 'lib/sqreen/ecosystem/tracing/sampling_configuration.rb', line 37

def forget_virtual_scope(scope, qualifier)
  holder = @samplers_virtual[scope]
  return unless holder.delete!(qualifier)
end

#should_sample?(scope, qualifier = nil) ⇒ Boolean

Parameters:

  • scope (String)

    either the scope or the part behind @ in a virtual scope

  • qualifier (String) (defaults to: nil)

    the part after @ in a virtual scope or nil

Returns:

  • (Boolean)


29
30
31
32
33
34
35
# File 'lib/sqreen/ecosystem/tracing/sampling_configuration.rb', line 29

def should_sample?(scope, qualifier = nil)
  if qualifier
    fetch_sampler_virtual(scope, qualifier).should_sample?
  else
    fetch_sampler(scope).should_sample?
  end
end