canvas_statsd 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8d208dec2b9d9e15929242060b633ddc26604e4
4
- data.tar.gz: 64dd9bbc70f94f50e825f956fb5d8487aa7d70ac
3
+ metadata.gz: f11b331df3323ea17bbd53e1fe4e1a2cdc85a411
4
+ data.tar.gz: 6391cae54d956383130fdf3e87eebcc7a2bcd54c
5
5
  SHA512:
6
- metadata.gz: 9cc72278306b28823f791c6caa32788f62f9462146269ce6b9bbcf448b00bb5215bc4178955638fa217b031a8c2a1e600be96535f0020c0d2d7f909434c07cb2
7
- data.tar.gz: c43c0b295a7181af427f02710b269060afe83860df65df94e3e4bbffacd97d4b3983dc022ab4b07cc07dfaf63e5b3c8007ca31cb98d4e12384145ce5cbfe827e
6
+ metadata.gz: 38b7ea0aa3b030ba275f5e3f28c0785127f768154c705c93372e0dd98de78b9f4d2ef7639d5fe2b0de40bdac41d10622c30890e81abb71744eb1b9bad1978d96
7
+ data.tar.gz: fa3a29befc27f44e1a3f090dede8320446e0e8bd96dec6efc7a27cbe164bb47c768bc50b2071569940e97c9f74eba8ee5ae196de2631765315723db4761cf0a7
data/lib/canvas_statsd.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'statsd'
2
2
 
3
3
  module CanvasStatsd
4
- VALID_SETTINGS = [:host, :port, :namespace, :append_hostname]
4
+ VALID_SETTINGS = [:host, :port, :namespace, :append_hostname, :mask, :negative_mask]
5
5
 
6
6
  class ConfigurationError < StandardError; end
7
7
 
@@ -18,7 +18,7 @@ module CanvasStatsd
18
18
 
19
19
  class << self
20
20
  def settings
21
- @settings || env_settings
21
+ @settings ||= env_settings
22
22
  end
23
23
 
24
24
  def settings=(value)
@@ -33,6 +33,7 @@ module CanvasStatsd
33
33
  if !VALID_SETTINGS.include?(k.to_sym)
34
34
  raise CanvasStatsd::ConfigurationError, "Invalid key: #{k}"
35
35
  end
36
+ v = Regexp.new(v) if [:mask, :negative_mask].include?(k.to_sym) && v.is_a?(String)
36
37
  validated[k.to_sym] = v
37
38
  end
38
39
 
@@ -5,7 +5,22 @@ module CanvasStatsd
5
5
  class << self
6
6
  attr_accessor :logger
7
7
 
8
+ [:mask, :negative_mask].each do |method|
9
+ class_eval <<-RUBY, __FILE__, __LINE__ + 1
10
+ def #{method}
11
+ CanvasStatsd.settings[:#{method}]
12
+ end
13
+
14
+ def #{method}=(value)
15
+ CanvasStatsd.settings[:#{method}] = value
16
+ end
17
+ RUBY
18
+ end
19
+
8
20
  def track(key, category: nil, statsd: CanvasStatsd::Statsd, only: nil)
21
+ return yield if mask && mask !~ key
22
+ return yield if negative_mask && negative_mask =~ key
23
+
9
24
  cookies = if only
10
25
  Array(only).map { |name| [name, Counter.counters[name].start] }
11
26
  else
@@ -42,4 +42,37 @@ describe CanvasStatsd::BlockTracking do
42
42
  end
43
43
  end
44
44
  end
45
+
46
+ context "mask" do
47
+ after do
48
+ CanvasStatsd::BlockTracking.mask = nil
49
+ CanvasStatsd::BlockTracking.negative_mask = nil
50
+ end
51
+
52
+ it "only tracks keys that match the mask" do
53
+ CanvasStatsd::BlockTracking.mask = /mykey/
54
+ statsd = double()
55
+ allow(statsd).to receive(:timing).with('mykey.total', anything)
56
+ expect(statsd).to receive(:timing).with("mykey.sql.read", 1)
57
+
58
+ CanvasStatsd::BlockTracking.track("mykey", statsd: statsd, only: 'sql.read') do
59
+ CanvasStatsd::BlockTracking.track("ignoreme", statsd: statsd, only: 'sql.read') do
60
+ ActiveSupport::Notifications.instrument('sql.active_record', name: "LOAD", sql: "SELECT * FROM users") {}
61
+ end
62
+ end
63
+ end
64
+
65
+ it "doesn't track keys that match the negative mask" do
66
+ CanvasStatsd::BlockTracking.negative_mask = /ignoreme/
67
+ statsd = double()
68
+ allow(statsd).to receive(:timing).with('mykey.total', anything)
69
+ expect(statsd).to receive(:timing).with("mykey.sql.read", 1)
70
+
71
+ CanvasStatsd::BlockTracking.track("mykey", statsd: statsd, only: 'sql.read') do
72
+ CanvasStatsd::BlockTracking.track("ignoreme", statsd: statsd, only: 'sql.read') do
73
+ ActiveSupport::Notifications.instrument('sql.active_record', name: "LOAD", sql: "SELECT * FROM users") {}
74
+ end
75
+ end
76
+ end
77
+ end
45
78
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_statsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Cloward
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-03-22 00:00:00.000000000 Z
12
+ date: 2017-03-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: statsd-ruby