Skip to content

Commit

Permalink
backwards compatibility with 'ignore'
Browse files Browse the repository at this point in the history
  • Loading branch information
Mitch Hartweg committed Jan 6, 2025
1 parent 5cd29e3 commit 93c5e27
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 7 deletions.
9 changes: 7 additions & 2 deletions lib/scout_apm/sampling.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,17 @@ def initialize(config)
@global_sample_rate = config.value('sample_rate')
# web endpoints matched prefix by regex
# jobs matched explicitly by name

# for now still support old config key ('ignore') for backwards compatibility
uris = config.value('ignore').present? ? config.value('ignore') : config.value('ignore_endpoints')
@ignore_uri_regex = create_uri_regex(uris)

@sample_endpoints = individual_sample_to_hash(config.value('sample_endpoints'))
@ignore_uri_regex = create_uri_regex(config.value('ignore_endpoints'))
@sample_uri_regex = create_uri_regex(sample_endpoints.keys) if sample_endpoints

@ignore_jobs = config.value('ignore_jobs')
@sample_jobs = individual_sample_to_hash(config.value('sample_jobs'))
# TODO make this safer/smarter

logger.info("Sampling Initialized: global_sample_rate: #{global_sample_rate}, sample_endpoints: #{sample_endpoints}, ignore_uri_regex: #{ignore_uri_regex}, sample_uri_regex: #{sample_uri_regex}, ignore_jobs: #{ignore_jobs}, sample_jobs: #{sample_jobs}")
end

Expand Down
16 changes: 11 additions & 5 deletions test/unit/sampling_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,14 @@ def test_individual_sample_to_hash

def test_uri_ignore
sampling = ScoutApm::Sampling.new(@individual_config)
assert_equal true, sampling.ignore_uri?('/baz')
assert_equal false, sampling.ignore_uri?('/foo')
assert_equal true, sampling.ignore_uri?('/baz/bap')
assert_equal false, sampling.ignore_uri?('/foo/far')
end

def test_uri_sample
sampling = ScoutApm::Sampling.new(@individual_config)
assert_equal true, sampling.sample_uri?('/foo')
assert_equal false, sampling.sample_uri?('/baz')
assert_equal true, sampling.sample_uri?('/foo/far')
assert_equal false, sampling.sample_uri?('/baz/bap')
end

def test_job_ignore
Expand All @@ -52,12 +52,18 @@ def test_job_sample
end

def test_sample
sampling = ScoutApm::Sampling.new(@global_sample_config)
sampling = ScoutApm::Sampling.new(@individual_config)
sampling.stub(:rand, 0.01) do
assert_equal(false, sampling.sample?(50))
end
sampling.stub(:rand, 0.99) do
assert_equal(true, sampling.sample?(50))
end
end

def test_old_ignore
config = FakeConfigOverlay.new({'ignore' => '/foo'})
sampling = ScoutApm::Sampling.new(config)
assert_equal true, sampling.ignore_uri?('/foo')
end
end

0 comments on commit 93c5e27

Please sign in to comment.